func test(engine *xorm.Engine) { err := engine.CreateTables(u) if err != nil { fmt.Println(err) return } engine.ShowSQL = true engine.Pool.SetMaxConns(5) size := 1000 queue := make(chan int, size) for i := 0; i < size; i++ { go func(x int) { //x := i err := engine.Test() if err != nil { fmt.Println(err) } else { err = engine.Map(u) if err != nil { fmt.Println("Map user failed") } else { for j := 0; j < 10; j++ { if x+j < 2 { _, err = engine.Get(u) } else if x+j < 4 { users := make([]User, 0) err = engine.Find(&users) } else if x+j < 8 { _, err = engine.Count(u) } else if x+j < 16 { _, err = engine.Insert(&User{Name: "xlw"}) } else if x+j < 32 { _, err = engine.Id(1).Delete(u) } if err != nil { fmt.Println(err) queue <- x return } } fmt.Printf("%v success!\n", x) } } queue <- x }(i) } for i := 0; i < size; i++ { <-queue } fmt.Println("end") }
func test(engine *xorm.Engine) { err := engine.CreateTables(u) if err != nil { fmt.Println(err) return } size := 500 queue := make(chan int, size) for i := 0; i < size; i++ { go func(x int) { //x := i err := engine.Test() if err != nil { fmt.Println(err) } else { err = engine.Map(u) if err != nil { fmt.Println("Map user failed") } else { for j := 0; j < 10; j++ { if x+j < 2 { _, err = engine.Get(u) } else if x+j < 4 { users := make([]User, 0) err = engine.Find(&users) } else if x+j < 8 { _, err = engine.Count(u) } else if x+j < 16 { _, err = engine.Insert(&User{Name: "xlw"}) } else if x+j < 32 { _, err = engine.Id(1).Delete(u) } if err != nil { fmt.Println(err) queue <- x return } } fmt.Printf("%v success!\n", x) } } queue <- x }(i) } for i := 0; i < size; i++ { <-queue } //conns := atomic.LoadInt32(&xorm.ConnectionNum) //fmt.Println("connection number:", conns) fmt.Println("end") }
func main() { var ( engine *xorm.Engine user *User ) engine = SetupDb() //START CODE OMIT engine.Insert(&User{Id: 1, FirstName: "John", LastName: "Doe"}) PrintTable(engine) user = &User{Id: 1} engine.Get(user) user.FirstName = "James" engine.Update(user) PrintTable(engine) engine.Delete(user) PrintTable(engine) //END CODE OMIT }