Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
7512c116
Commit
7512c116
authored
Jul 19, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add concurrent locks prevent multithreaded execution create the database
parent
e11e34cf
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
180 deletions
+15
-180
DatabaseTestHost.cs
test/DotNetCore.CAP.SqlServer.Test/DatabaseTestHost.cs
+15
-12
EFMessageStoreTest.cs
test/DotNetCore.CAP.SqlServer.Test/EFMessageStoreTest.cs
+0
-168
No files found.
test/DotNetCore.CAP.SqlServer.Test/DatabaseTestHost.cs
View file @
7512c116
using
System.Data
;
using
System.Data
;
using
System.Data.SqlClient
;
using
System.Threading
;
using
System.Threading
;
using
Dapper
;
using
Dapper
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.EntityFrameworkCore
;
...
@@ -9,11 +8,18 @@ namespace DotNetCore.CAP.SqlServer.Test
...
@@ -9,11 +8,18 @@ namespace DotNetCore.CAP.SqlServer.Test
public
abstract
class
DatabaseTestHost
:
TestHost
public
abstract
class
DatabaseTestHost
:
TestHost
{
{
private
static
bool
_sqlObjectInstalled
;
private
static
bool
_sqlObjectInstalled
;
public
static
object
_lock
=
new
object
();
protected
override
void
PostBuildServices
()
protected
override
void
PostBuildServices
()
{
{
base
.
PostBuildServices
();
base
.
PostBuildServices
();
InitializeDatabase
();
lock
(
_lock
)
{
if
(!
_sqlObjectInstalled
)
{
InitializeDatabase
();
}
}
}
}
public
override
void
Dispose
()
public
override
void
Dispose
()
...
@@ -24,16 +30,13 @@ namespace DotNetCore.CAP.SqlServer.Test
...
@@ -24,16 +30,13 @@ namespace DotNetCore.CAP.SqlServer.Test
private
void
InitializeDatabase
()
private
void
InitializeDatabase
()
{
{
if
(!
_sqlObjectInstalled
)
using
(
CreateScope
()
)
{
{
using
(
CreateScope
())
var
storage
=
GetService
<
SqlServerStorage
>();
{
var
token
=
new
CancellationTokenSource
().
Token
;
var
storage
=
GetService
<
SqlServerStorage
>();
CreateDatabase
();
var
token
=
new
CancellationTokenSource
().
Token
;
storage
.
InitializeAsync
(
token
).
Wait
();
CreateDatabase
();
_sqlObjectInstalled
=
true
;
storage
.
InitializeAsync
(
token
).
Wait
();
_sqlObjectInstalled
=
true
;
}
}
}
}
}
...
@@ -44,7 +47,7 @@ namespace DotNetCore.CAP.SqlServer.Test
...
@@ -44,7 +47,7 @@ namespace DotNetCore.CAP.SqlServer.Test
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
(
masterConn
))
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
(
masterConn
))
{
{
connection
.
Execute
(
$@"
connection
.
Execute
(
$@"
IF NOT EXISTS (SELECT * FROM sysdatabases WHERE name = N'
{
databaseName
}
')
IF NOT EXISTS (SELECT * FROM sysdatabases WHERE name = N'
{
databaseName
}
')
CREATE DATABASE [
{
databaseName
}
];"
);
CREATE DATABASE [
{
databaseName
}
];"
);
}
}
}
}
...
...
test/DotNetCore.CAP.SqlServer.Test/EFMessageStoreTest.cs
deleted
100644 → 0
View file @
e11e34cf
namespace
DotNetCore.CAP.EntityFrameworkCore.Test
{
//public class EFMessageStoreTest : DatabaseTestHost
//{
// [Fact]
// public void CanCreateSentMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapPublishedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// Assert.True(db.CapSentMessages.Any(u => u.Id == guid));
// Assert.NotNull(db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued));
// }
// }
// [Fact]
// public void CanUpdateSentMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapPublishedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// var selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.NotNull(selectedMessage);
// selectedMessage.StatusName = StatusName.Succeeded;
// selectedMessage.Content = "Test";
// db.SaveChanges();
// selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Succeeded);
// Assert.NotNull(selectedMessage);
// Assert.True(selectedMessage.Content == "Test");
// }
// }
// [Fact]
// public void CanRemoveSentMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapPublishedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// var selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.NotNull(selectedMessage);
// db.CapSentMessages.Remove(selectedMessage);
// db.SaveChanges();
// selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.Null(selectedMessage);
// }
// }
// [Fact]
// public void CanCreateReceivedMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapReceivedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// Assert.True(db.CapReceivedMessages.Any(u => u.Id == guid));
// Assert.NotNull(db.CapReceivedMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued));
// }
// }
// [Fact]
// public void CanUpdateReceivedMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapReceivedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// var selectedMessage = db.CapReceivedMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.NotNull(selectedMessage);
// selectedMessage.StatusName = StatusName.Succeeded;
// selectedMessage.Content = "Test";
// db.SaveChanges();
// selectedMessage = db.CapReceivedMessages.FirstOrDefault(u => u.StatusName == StatusName.Succeeded);
// Assert.NotNull(selectedMessage);
// Assert.True(selectedMessage.Content == "Test");
// }
// }
// [Fact]
// public void CanRemoveReceivedMessageUsingEF()
// {
// using (var db = CreateContext())
// {
// var guid = Guid.NewGuid().ToString();
// var message = new CapReceivedMessage
// {
// Id = guid,
// Content = "this is message body",
// StatusName = StatusName.Enqueued
// };
// db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;
// db.SaveChanges();
// var selectedMessage = db.CapReceivedMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.NotNull(selectedMessage);
// db.CapReceivedMessages.Remove(selectedMessage);
// db.SaveChanges();
// selectedMessage = db.CapReceivedMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
// Assert.Null(selectedMessage);
// }
// }
// public TestDbContext CreateContext(bool delete = false)
// {
// var db = Provider.GetRequiredService<TestDbContext>();
// if (delete)
// {
// db.Database.EnsureDeleted();
// }
// db.Database.EnsureCreated();
// return db;
// }
//}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment