@@ -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