github.com/flike/idgo@v0.0.0-20191108221704-166969ccb896/server/idgo_test.go (about) 1 package server 2 3 import ( 4 "database/sql" 5 "fmt" 6 "sync" 7 "testing" 8 9 _ "github.com/go-sql-driver/mysql" 10 ) 11 12 var wg sync.WaitGroup 13 var db *sql.DB 14 15 func init() { 16 var err error 17 18 db, err = sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8") 19 if err != nil { 20 fmt.Println(err.Error()) 21 } 22 } 23 24 func GetId(idGenerator *MySQLIdGenerator) { 25 defer wg.Done() 26 for i := 0; i < 100; i++ { 27 _, err := idGenerator.Next() 28 if err != nil { 29 fmt.Println(err.Error()) 30 } 31 } 32 } 33 34 func TestMySQLIdgen(t *testing.T) { 35 idGenerator, err := NewMySQLIdGenerator(db, "mysql_victory") 36 if err != nil { 37 t.Fatal(err.Error()) 38 } 39 err = idGenerator.Reset(1, false) 40 if err != nil { 41 t.Fatal(err.Error()) 42 } 43 //10 goroutine 44 wg.Add(10) 45 for i := 0; i < 10; i++ { 46 go GetId(idGenerator) 47 } 48 wg.Wait() 49 id, err := idGenerator.Next() 50 if err != nil { 51 t.Fatal(err.Error()) 52 } 53 t.Log(id) 54 } 55 56 func BenchmarkMySQLIdgen(b *testing.B) { 57 idGenerator, err := NewMySQLIdGenerator(db, "mysql_file") 58 if err != nil { 59 b.Fatal(err.Error()) 60 } 61 err = idGenerator.Reset(1, false) 62 if err != nil { 63 b.Fatal(err.Error()) 64 } 65 66 b.StartTimer() 67 for i := 0; i < 1000; i++ { 68 _, err = idGenerator.Next() 69 if err != nil { 70 b.Fatal(err.Error()) 71 } 72 } 73 74 b.StopTimer() 75 }