@@ -47,27 +47,24 @@ func TestLocker(t *testing.T) {
4747func  testLocker (t  * testing.T , locker  Locker ) {
4848	t .Run ("lock" , func (t  * testing.T ) {
4949		parentCtx  :=  context .Background ()
50- 		ctx ,  release , err  :=  locker .Lock (parentCtx , "test" )
50+ 		release , err  :=  locker .Lock (parentCtx , "test" )
5151		defer  release ()
5252
53- 		assert .NotEqual (t , parentCtx , ctx ) // new context should be returned 
5453		assert .NoError (t , err )
5554
5655		func () {
57- 			parentCtx , cancel  :=  context .WithTimeout (context .Background (), time .Second )
56+ 			ctx , cancel  :=  context .WithTimeout (context .Background (), time .Second )
5857			defer  cancel ()
59- 			ctx ,  release , err  :=  locker .Lock (parentCtx , "test" )
58+ 			release , err  :=  locker .Lock (ctx , "test" )
6059			defer  release ()
6160
6261			assert .Error (t , err )
63- 			assert .Equal (t , parentCtx , ctx ) // should return the same context 
6462		}()
6563
6664		release ()
67- 		assert .Error (t , ctx .Err ())
6865
6966		func () {
70- 			_ ,  release , err  :=  locker .Lock (context .Background (), "test" )
67+ 			release , err  :=  locker .Lock (context .Background (), "test" )
7168			defer  release ()
7269
7370			assert .NoError (t , err )
@@ -76,29 +73,26 @@ func testLocker(t *testing.T, locker Locker) {
7673
7774	t .Run ("try lock" , func (t  * testing.T ) {
7875		parentCtx  :=  context .Background ()
79- 		ok , ctx ,  release , err  :=  locker .TryLock (parentCtx , "test" )
76+ 		ok , release , err  :=  locker .TryLock (parentCtx , "test" )
8077		defer  release ()
8178
8279		assert .True (t , ok )
83- 		assert .NotEqual (t , parentCtx , ctx ) // new context should be returned 
8480		assert .NoError (t , err )
8581
8682		func () {
87- 			parentCtx , cancel  :=  context .WithTimeout (context .Background (), time .Second )
83+ 			ctx , cancel  :=  context .WithTimeout (context .Background (), time .Second )
8884			defer  cancel ()
89- 			ok , ctx ,  release , err  :=  locker .TryLock (parentCtx , "test" )
85+ 			ok , release , err  :=  locker .TryLock (ctx , "test" )
9086			defer  release ()
9187
9288			assert .False (t , ok )
9389			assert .NoError (t , err )
94- 			assert .Equal (t , parentCtx , ctx ) // should return the same context 
9590		}()
9691
9792		release ()
98- 		assert .Error (t , ctx .Err ())
9993
10094		func () {
101- 			ok , _ ,  release , _  :=  locker .TryLock (context .Background (), "test" )
95+ 			ok , release , _  :=  locker .TryLock (context .Background (), "test" )
10296			defer  release ()
10397
10498			assert .True (t , ok )
@@ -107,15 +101,15 @@ func testLocker(t *testing.T, locker Locker) {
107101
108102	t .Run ("wait and acquired" , func (t  * testing.T ) {
109103		ctx  :=  context .Background ()
110- 		_ ,  release , err  :=  locker .Lock (ctx , "test" )
104+ 		release , err  :=  locker .Lock (ctx , "test" )
111105		require .NoError (t , err )
112106
113107		wg  :=  & sync.WaitGroup {}
114108		wg .Add (1 )
115109		go  func () {
116110			defer  wg .Done ()
117111			started  :=  time .Now ()
118- 			_ ,  release , err  :=  locker .Lock (context .Background (), "test" ) // should be blocked for seconds 
112+ 			release , err  :=  locker .Lock (context .Background (), "test" ) // should be blocked for seconds 
119113			defer  release ()
120114			assert .Greater (t , time .Since (started ), time .Second )
121115			assert .NoError (t , err )
@@ -127,34 +121,15 @@ func testLocker(t *testing.T, locker Locker) {
127121		wg .Wait ()
128122	})
129123
130- 	t .Run ("continue after release" , func (t  * testing.T ) {
131- 		ctx  :=  context .Background ()
132- 
133- 		ctxBeforeLock  :=  ctx 
134- 		ctx , release , err  :=  locker .Lock (ctx , "test" )
135- 
136- 		require .NoError (t , err )
137- 		assert .NoError (t , ctx .Err ())
138- 		assert .NotEqual (t , ctxBeforeLock , ctx )
139- 
140- 		ctxBeforeRelease  :=  ctx 
141- 		ctx  =  release ()
142- 
143- 		assert .NoError (t , ctx .Err ())
144- 		assert .Error (t , ctxBeforeRelease .Err ())
145- 
146- 		// so it can continue with ctx to do more work 
147- 	})
148- 
149124	t .Run ("multiple release" , func (t  * testing.T ) {
150125		ctx  :=  context .Background ()
151126
152- 		_ ,  release1 , err  :=  locker .Lock (ctx , "test" )
127+ 		release1 , err  :=  locker .Lock (ctx , "test" )
153128		require .NoError (t , err )
154129
155130		release1 ()
156131
157- 		_ ,  release2 , err  :=  locker .Lock (ctx , "test" )
132+ 		release2 , err  :=  locker .Lock (ctx , "test" )
158133		defer  release2 ()
159134		require .NoError (t , err )
160135
@@ -163,7 +138,7 @@ func testLocker(t *testing.T, locker Locker) {
163138		// and it shouldn't affect the other lock 
164139		release1 ()
165140
166- 		ok , _ ,  release3 , err  :=  locker .TryLock (ctx , "test" )
141+ 		ok , release3 , err  :=  locker .TryLock (ctx , "test" )
167142		defer  release3 ()
168143		require .NoError (t , err )
169144		// It should be able to acquire the lock; 
@@ -184,28 +159,23 @@ func testRedisLocker(t *testing.T, locker *redisLocker) {
184159		// Otherwise, it will affect other tests. 
185160		t .Run ("close" , func (t  * testing.T ) {
186161			assert .NoError (t , locker .Close ())
187- 			_ , _ ,  err  :=  locker .Lock (context .Background (), "test" )
162+ 			_ , err  :=  locker .Lock (context .Background (), "test" )
188163			assert .Error (t , err )
189164		})
190165	}()
191166
192167	t .Run ("failed extend" , func (t  * testing.T ) {
193- 		ctx ,  release , err  :=  locker .Lock (context .Background (), "test" )
168+ 		release , err  :=  locker .Lock (context .Background (), "test" )
194169		defer  release ()
195170		require .NoError (t , err )
196171
197172		// It simulates that there are some problems with extending like network issues or redis server down. 
198173		v , ok  :=  locker .mutexM .Load ("test" )
199174		require .True (t , ok )
200- 		m  :=  v .(* redisMutex )
201- 		_ , _  =  m .mutex .Unlock () // release it to make it impossible to extend 
202- 
203- 		select  {
204- 		case  <- time .After (redisLockExpiry  +  time .Second ):
205- 			t .Errorf ("lock should be expired" )
206- 		case  <- ctx .Done ():
207- 			var  errTaken  * redsync.ErrTaken 
208- 			assert .ErrorAs (t , context .Cause (ctx ), & errTaken )
209- 		}
175+ 		m  :=  v .(* redsync.Mutex )
176+ 		_ , _  =  m .Unlock () // release it to make it impossible to extend 
177+ 
178+ 		// In current design, callers can't know the lock can't be extended. 
179+ 		// Just keep this case to improve the test coverage. 
210180	})
211181}
0 commit comments