Commit 4603c26c authored by Marc Gravell's avatar Marc Gravell

Merge async+sync tests for DNX; allow async for CoreCLR; 1.41-beta4

parent f32d318f
......@@ -8,6 +8,19 @@
using System.Threading;
using System.Threading.Tasks;
#if DNXCORE50
using IDbDataParameter = global::System.Data.Common.DbParameter;
using IDataParameter = global::System.Data.Common.DbParameter;
using IDbTransaction = global::System.Data.Common.DbTransaction;
using IDbConnection = global::System.Data.Common.DbConnection;
using IDbCommand = global::System.Data.Common.DbCommand;
using IDataReader = global::System.Data.Common.DbDataReader;
using IDataRecord = global::System.Data.Common.DbDataReader;
using IDataParameterCollection = global::System.Data.Common.DbParameterCollection;
using DataException = global::System.InvalidOperationException;
using ApplicationException = global::System.InvalidOperationException;
#endif
namespace Dapper
{
......
......@@ -6,7 +6,7 @@
"commands": {
"Dapper.DNX.Tests": "Dapper.DNX.Tests"
},
"compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs" ],
"compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs", "../DapperTests NET45/Tests.cs" ],
"compilationOptions": { "define": [ "NOEXTERNALS" ] },
"frameworks": {
"net45": {
......@@ -36,7 +36,7 @@
},
"dnxcore50": {
"compilationOptions": { "define": [ ], "warningsAsErrors": true },
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": {
"System.Console": "4.0.0-beta-*",
"System.Reflection": "4.0.10-beta-*",
......
......@@ -14,6 +14,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs
Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs
Tests\Tests.cs = Tests\Tests.cs
DapperTests NET45\Tests.cs = DapperTests NET45\Tests.cs
EndProjectSection
EndProject
Global
......
......@@ -5,7 +5,7 @@
"licenseUrl": "http://www.apache.org/licenses/LICENSE-2.0",
"summary": "A high performance Micro-ORM",
"description": "A high performance Micro-ORM supporting Sql Server, MySQL, Sqlite, SqlCE, Firebird etc..",
"version": "1.41-beta3",
"version": "1.41-beta4",
"compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ],
"title": "Dapper dot net",
"tags": [ "orm", "sql", "micro-orm" ],
......@@ -44,7 +44,7 @@
}
},
"dnxcore50": {
"compilationOptions": { "define": [ ], "warningsAsErrors": true },
"compilationOptions": { "define": [ "ASYNC"], "warningsAsErrors": true },
"dependencies": {
"System.Text.RegularExpressions": "4.0.10-beta-*",
"System.Collections": "4.0.10-beta-*",
......
......@@ -19,7 +19,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;EXTERNALS</DefineConstants>
<DefineConstants>TRACE;DEBUG;EXTERNALS ASYNC</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
......@@ -28,9 +28,10 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;EXTERNALS</DefineConstants>
<DefineConstants>TRACE;EXTERNALS ASYNC</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
......
using System.Linq;
#if ASYNC
using System.Linq;
using Dapper;
using SqlMapper;
using System.Data;
......@@ -8,6 +9,14 @@
using System.Threading;
using System.Data.SqlClient;
#if DNXCORE50
using IDbCommand = global::System.Data.Common.DbCommand;
using IDbDataParameter = global::System.Data.Common.DbParameter;
using IDbConnection = global::System.Data.Common.DbConnection;
using IDbTransaction = global::System.Data.Common.DbTransaction;
using IDataReader = global::System.Data.Common.DbDataReader;
#endif
namespace DapperTests_NET45
{
public class Tests
......@@ -180,7 +189,7 @@ public void TestMultiClosedConnAsync()
}
}
}
#if EXTERNALS
public void ExecuteReaderOpenAsync()
{
using (var conn = Program.GetOpenConnection())
......@@ -209,6 +218,7 @@ public void ExecuteReaderClosedAsync()
((int)dt.Rows[0][1]).IsEqualTo(4);
}
}
#endif
public void LiteralReplacementOpen()
{
......@@ -766,3 +776,4 @@ select @@Name
}
}
}
#endif
\ No newline at end of file
......@@ -37,12 +37,23 @@ class Program
public const string ConnectionString = "Data Source=.;Initial Catalog=tempdb;Integrated Security=True",
OleDbConnectionString = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=tempdb;Integrated Security=SSPI";
public static SqlConnection GetOpenConnection()
public static SqlConnection GetOpenConnection(bool mars = false)
{
var connection = new SqlConnection(ConnectionString);
var cs = ConnectionString;
if (mars)
{
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(cs);
scsb.MultipleActiveResultSets = true;
cs = scsb.ConnectionString;
}
var connection = new SqlConnection(cs);
connection.Open();
return connection;
}
public static SqlConnection GetClosedConnection()
{
return new SqlConnection(ConnectionString);
}
static void RunPerformanceTests()
{
......@@ -63,8 +74,28 @@ static void Main()
#else
Console.WriteLine(Environment.Version);
#endif
int fail = 0, skip = 0, pass = 0, frameworkFail = 0;
var failNames = new List<string>();
#if DEBUG
RunTests();
RunTests<SqlMapper.Tests>(ref fail, ref skip, ref pass, ref frameworkFail, failNames);
#if ASYNC
RunTests<DapperTests_NET45.Tests>(ref fail, ref skip, ref pass, ref frameworkFail, failNames);
#endif
if (fail == 0)
{
Console.WriteLine("(all tests successful)");
}
else
{
Console.WriteLine("Failures:");
foreach (var failName in failNames)
{
Console.WriteLine(failName);
}
}
Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}, Framework-fail: {3}", pass, fail, skip, frameworkFail);
#else
EnsureDBSetup();
RunPerformanceTests();
......@@ -136,14 +167,15 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000),
#endif
}
private static void RunTests()
private static void RunTests<T>(ref int fail, ref int skip, ref int pass, ref int frameworkFail, List<string> failNames) where T : class, new()
{
var tester = new Tests();
int fail = 0, skip = 0, pass = 0, frameworkFail = 0;
MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
var tester = new T();
using (tester as IDisposable)
{
MethodInfo[] methods = typeof(T).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
var activeTests = methods.Where(m => HasAttribute<ActiveTestAttribute>(m)).ToArray();
if (activeTests.Length != 0) methods = activeTests;
List<string> failNames = new List<string>();
foreach (var method in methods)
{
if (HasAttribute<SkipTestAttribute>(method))
......@@ -169,7 +201,8 @@ private static void RunTests()
Console.WriteLine(" - OK!");
pass++;
}
} catch(TargetInvocationException tie)
}
catch (TargetInvocationException tie)
{
Console.WriteLine(" - " + tie.InnerException.Message);
if (expectFrameworkFail)
......@@ -185,7 +218,8 @@ private static void RunTests()
Console.WriteLine("> " + tie.InnerException.InnerException.Message);
}
}
}catch (Exception ex)
}
catch (Exception ex)
{
fail++;
Console.WriteLine(" - " + ex.Message);
......@@ -193,19 +227,6 @@ private static void RunTests()
}
}
Console.WriteLine();
Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}, Framework-fail: {3}", pass, fail, skip, frameworkFail);
if(fail == 0)
{
Console.WriteLine("(all tests successful)");
}
else
{
Console.WriteLine("Failures:");
foreach(var failName in failNames)
{
Console.WriteLine(failName);
}
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment