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  }