Files
dolt/integration-tests/mysql-client-tests/dotnet/MySqlConnector/Program.cs
John Bampton 977064fc0d Fix spelling
2025-03-19 03:48:45 +10:00

132 lines
4.0 KiB
C#
Executable File

using System;
using MySqlConnector;
namespace MySqlConnectorTest
{
class TestException : Exception
{
public TestException(string message)
{
Console.WriteLine(message);
}
}
class Program
{
static int Main(string[] args)
{
if (args.Length != 3)
{
Console.WriteLine("Must supply $USER $PORT $REPO arguments.");
return 1;
}
var user = args[0];
var port = args[1];
var db = args[2];
using (var conn = new MySqlConnection($"Server=127.0.0.1;User ID={user};port={port};Database={db}"))
{
try
{
conn.Open();
SetupTest(conn);
for (int i = 0; i < 10; i++)
{
QueryTest(conn);
}
DoltSqlTest(conn);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return 1;
}
conn.Close();
}
return 0;
}
public static void SetupTest(MySqlConnection conn)
{
using var cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = @"CREATE TABLE test (pk int, `value` int, primary key(pk))";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO test(pk, `value`) VALUES(0,0)";
cmd.ExecuteNonQuery();
}
public static void QueryTest(MySqlConnection conn)
{
string sql = "SELECT count(*) as count FROM test";
using (var cmd = new MySqlCommand(sql, conn))
try
{
object result = cmd.ExecuteScalar();
if (result != null)
{
int r = Convert.ToInt32(result);
if (r != 1)
{
TestException ex = new TestException($"Expected 1, Received {r}");
throw ex;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
public static void DoltSqlTest(MySqlConnection conn)
{
string[] queries = new string[] {
"call dolt_add('-A');",
"call dolt_commit('-m', 'my commit')",
"call dolt_checkout('-b', 'mybranch')",
"insert into test (pk, `value`) values (1,1)",
"call dolt_commit('-a', '-m', 'my commit2')",
"call dolt_checkout('main')",
"call dolt_merge('mybranch')",
};
for (int i = 0; i < queries.Length ; i++) {
try
{
var cmd = new MySqlCommand(queries[i], conn);
cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
var finalCmd = new MySqlCommand("select COUNT(*) FROM dolt_log", conn);
try
{
object result = finalCmd.ExecuteScalar();
if (result != null)
{
int r = Convert.ToInt32(result);
if (r != 3)
{
TestException ex = new TestException($"Expected 3, Received {r}");
throw ex;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}