github.com/tursom/GoCollections@v0.3.10/util/snowflake/snowflake_test.go (about) 1 package snowflake 2 3 import ( 4 "sync" 5 "testing" 6 7 "github.com/tursom/GoCollections/util/time" 8 ) 9 10 func Test_snowflake_Close(t *testing.T) { 11 s := New(0) 12 s.Close() 13 s.Close() 14 } 15 16 func Test_snowflake_New(t *testing.T) { 17 s := New(1) 18 19 ticker := time.NewTicker(time.Millisecond) 20 defer ticker.Stop() 21 22 var wg sync.WaitGroup 23 24 for i := 0; i < 16; i++ { 25 wg.Add(1) 26 go func() { 27 old := s.New() 28 for i := 0; i < 10_000_000; i++ { 29 n := s.New() 30 if n <= old { 31 panic(n) 32 } 33 old = n 34 } 35 36 wg.Done() 37 }() 38 } 39 40 wg.Wait() 41 }