1
1
package concurrency
2
2
3
3
import (
4
+ "fmt"
4
5
"slices"
5
6
"testing"
7
+ "time"
6
8
7
9
"github.com/stretchr/testify/assert"
8
10
@@ -12,6 +14,7 @@ import (
12
14
13
15
const client1 curator.FakeClientID = "client1"
14
16
const client2 curator.FakeClientID = "client2"
17
+ const client3 curator.FakeClientID = "client3"
15
18
const initClient curator.FakeClientID = "init"
16
19
17
20
func initStore (parent string ) * curator.FakeZookeeper {
@@ -336,3 +339,62 @@ func TestSortString(t *testing.T) {
336
339
"A" , "B" , "D" , "EE" , "IA" , "IY" , "M" , "Z" ,
337
340
}, s )
338
341
}
342
+
343
+ func TestLock_With_Tester (t * testing.T ) {
344
+ l1 := NewLock ("/workers" , "node01" )
345
+ l2 := NewLock ("/workers" , "node02" )
346
+ l3 := NewLock ("/workers" , "node03" )
347
+
348
+ store := initStore ("/workers" )
349
+
350
+ tester := curator .NewFakeZookeeperTester (store ,
351
+ []curator.FakeClientID {client1 , client2 , client3 },
352
+ 123 ,
353
+ )
354
+
355
+ startLock (l1 , store , client1 , newSimpleCounter (client1 ).isLeader )
356
+ startLock (l2 , store , client2 , newSimpleCounter (client2 ).isLeader )
357
+ startLock (l3 , store , client3 , newSimpleCounter (client3 ).isLeader )
358
+
359
+ tester .Begin ()
360
+
361
+ steps := tester .RunSessionExpiredAndConnectionError (
362
+ 10 ,
363
+ 10 ,
364
+ 2000 ,
365
+ )
366
+ assert .Equal (t , 2000 , steps )
367
+
368
+ store .PrintData ()
369
+ }
370
+
371
+ func TestLock_With_Tester__Multi_Times (t * testing.T ) {
372
+ for k := 0 ; k < 1000 ; k ++ {
373
+ seed := time .Now ().UnixNano ()
374
+ fmt .Println ("SEED:" , seed )
375
+
376
+ l1 := NewLock ("/workers" , "node01" )
377
+ l2 := NewLock ("/workers" , "node02" )
378
+ l3 := NewLock ("/workers" , "node03" )
379
+
380
+ store := initStore ("/workers" )
381
+
382
+ tester := curator .NewFakeZookeeperTester (store ,
383
+ []curator.FakeClientID {client1 , client2 , client3 },
384
+ seed ,
385
+ )
386
+
387
+ startLock (l1 , store , client1 , newSimpleCounter (client1 ).isLeader )
388
+ startLock (l2 , store , client2 , newSimpleCounter (client2 ).isLeader )
389
+ startLock (l3 , store , client3 , newSimpleCounter (client3 ).isLeader )
390
+
391
+ tester .Begin ()
392
+
393
+ steps := tester .RunSessionExpiredAndConnectionError (
394
+ 20 ,
395
+ 20 ,
396
+ 2000 ,
397
+ )
398
+ assert .Equal (t , 2000 , steps )
399
+ }
400
+ }
0 commit comments