@@ -11,23 +11,26 @@ namespace DistributedLock.Mongo.Tests
1111 [ TestClass ]
1212 public class LockTests
1313 {
14- private const string ConnectionString = "--mognodb connection string--" ;
15- private static readonly IMongoCollection < LockAcquire < string > > Locks ;
16- private static readonly IMongoCollection < ReleaseSignal > Signals ;
14+ private const string ConnectionString = "mongodb://localhost:27017/" ;
15+ private const string TestDb = "sample-db" ;
1716
18- static LockTests ( )
17+ private IMongoCollection < LockAcquire < string > > _locks ;
18+ private IMongoCollection < ReleaseSignal > _signals ;
19+
20+ [ TestInitialize ]
21+ public async Task Initialize ( )
1922 {
20- MongoClient client = new MongoClient ( ConnectionString ) ;
21- IMongoDatabase database = client . GetDatabase ( "dbname" ) ;
23+ var client = new MongoClient ( ConnectionString ) ;
24+ var database = client . GetDatabase ( TestDb ) ;
2225
23- Locks = database . GetCollection < LockAcquire < string > > ( "locks" ) ;
24- Signals = database . GetCollection < ReleaseSignal > ( "signals" ) ;
26+ _locks = database . GetCollection < LockAcquire < string > > ( "locks" ) ;
27+ _signals = database . GetCollection < ReleaseSignal > ( "signals" ) ;
2528 }
2629
2730 [ TestMethod ]
2831 public async Task AcquireLock ( )
2932 {
30- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
33+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
3134
3235 IAcquire acq = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 5 ) , TimeSpan . FromSeconds ( 0 ) ) ;
3336 Assert . IsTrue ( acq . Acquired ) ;
@@ -36,7 +39,7 @@ public async Task AcquireLock()
3639 [ TestMethod ]
3740 public async Task Acquire_And_Block ( )
3841 {
39- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
42+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
4043
4144 IAcquire acq1 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
4245 Assert . IsTrue ( acq1 . Acquired ) ;
@@ -48,24 +51,26 @@ public async Task Acquire_And_Block()
4851 [ TestMethod ]
4952 public async Task Acquire_Block_Release_And_Acquire ( )
5053 {
51- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
54+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
5255
53- IAcquire acq1 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
54- Assert . IsTrue ( acq1 . Acquired ) ;
56+ await using ( IAcquire acq1 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) )
57+ {
58+ Assert . IsTrue ( acq1 . Acquired ) ;
5559
56- IAcquire acq2 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
57- Assert . IsFalse ( acq2 . Acquired ) ;
60+ IAcquire acq2 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
61+ Assert . IsFalse ( acq2 . Acquired ) ;
62+ }
5863
59- await mongoLock . ReleaseAsync ( acq1 ) ;
64+ // await mongoLock.ReleaseAsync(acq1);
6065
6166 IAcquire acq3 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
6267 Assert . IsTrue ( acq3 . Acquired ) ;
6368 }
6469
6570 [ TestMethod ]
66- public async Task Acquire_BlockFor5Secounds_Release_Acquire ( )
71+ public async Task Acquire_BlockFor5Seconds_Release_Acquire ( )
6772 {
68- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
73+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
6974
7075 IAcquire acq1 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 30 ) , TimeSpan . FromSeconds ( 0 ) ) ;
7176 Assert . IsTrue ( acq1 . Acquired ) ;
@@ -82,7 +87,7 @@ public async Task Acquire_BlockFor5Secounds_Release_Acquire()
8287 [ TestMethod ]
8388 public async Task Acquire_WaitUntilExpire_Acquire ( )
8489 {
85- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
90+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
8691
8792 IAcquire acq1 = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 10 ) , TimeSpan . FromSeconds ( 0 ) ) ;
8893 Assert . IsTrue ( acq1 . Acquired ) ;
@@ -99,7 +104,7 @@ public async Task Acquire_WaitUntilExpire_Acquire()
99104 [ TestMethod ]
100105 public void Synchronize_CriticalSection_For_4_Threads ( )
101106 {
102- MongoLock < string > mongoLock = new MongoLock < string > ( Locks , Signals , Guid . NewGuid ( ) . ToString ( ) ) ;
107+ MongoLock < string > mongoLock = new MongoLock < string > ( _locks , _signals , Guid . NewGuid ( ) . ToString ( ) ) ;
103108
104109 List < Task > tasks = new List < Task > ( ) ;
105110 List < int > bucket = new List < int > ( ) { 0 } ;
@@ -111,20 +116,13 @@ public void Synchronize_CriticalSection_For_4_Threads()
111116 {
112117 for ( int j = 0 ; j < 100 ; j ++ )
113118 {
114- IAcquire acq = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 60 ) , TimeSpan . FromSeconds ( 10 ) ) ;
115- try
116- {
117- int count = bucket . Count ;
118- Thread . Sleep ( random . Next ( 0 , 10 ) ) ;
119-
120- int value = bucket [ count - 1 ] ;
121- bucket . Add ( value + 1 ) ;
122- }
123- finally
124- {
125- await mongoLock . ReleaseAsync ( acq ) ;
126- }
119+ await using IAcquire acq = await mongoLock . AcquireAsync ( TimeSpan . FromSeconds ( 60 ) , TimeSpan . FromSeconds ( 10 ) ) ;
120+
121+ int count = bucket . Count ;
122+ Thread . Sleep ( random . Next ( 0 , 10 ) ) ;
127123
124+ int value = bucket [ count - 1 ] ;
125+ bucket . Add ( value + 1 ) ;
128126 }
129127 } ) ) ;
130128 }
0 commit comments