func test(engine *xorm.Engine) { err := engine.CreateTables(u) if err != nil { fmt.Println(err) return } engine.ShowSQL(true) engine.SetMaxOpenConns(5) size := 1000 queue := make(chan int, size) for i := 0; i < size; i++ { go func(x int) { //x := i err := engine.Ping() 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 setEngine(engine *xorm.Engine, useCache bool) { if useCache { engine.SetDefaultCacher(newCache()) } engine.ShowSQL = showTestSql engine.ShowErr = showTestSql engine.ShowWarn = showTestSql engine.ShowDebug = showTestSql }
func testProcessors(engine *xorm.Engine, t *testing.T) { // tempEngine, err := NewEngine(engine.DriverName, engine.DataSourceName) // if err != nil { // t.Error(err) // panic(err) // } engine.ShowSQL = true err := engine.DropTables(&ProcessorsStruct{}) if err != nil { t.Error(err) panic(err) } p := &ProcessorsStruct{} err = engine.CreateTables(&ProcessorsStruct{}) if err != nil { t.Error(err) panic(err) } b4InsertFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.B4InsertViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } afterInsertFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.AfterInsertedViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } _, err = engine.Before(b4InsertFunc).After(afterInsertFunc).Insert(p) if err != nil { t.Error(err) panic(err) } else { if p.B4InsertFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if p.AfterInsertedFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if p.B4InsertViaExt == 0 { t.Error(errors.New("B4InsertFlag not set")) } if p.AfterInsertedViaExt == 0 { t.Error(errors.New("AfterInsertedViaExt not set")) } } p2 := &ProcessorsStruct{} _, err = engine.Id(p.Id).Get(p2) if err != nil { t.Error(err) panic(err) } else { if p2.B4InsertFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if p2.AfterInsertedFlag != 0 { t.Error(errors.New("AfterInsertedFlag is set")) } if p2.B4InsertViaExt == 0 { t.Error(errors.New("B4InsertViaExt not set")) } if p2.AfterInsertedViaExt != 0 { t.Error(errors.New("AfterInsertedViaExt is set")) } } // -- // test update processors b4UpdateFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.B4UpdateViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } afterUpdateFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.AfterUpdatedViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } p = p2 // reset _, err = engine.Before(b4UpdateFunc).After(afterUpdateFunc).Update(p) if err != nil { t.Error(err) panic(err) } else { if p.B4UpdateFlag == 0 { t.Error(errors.New("B4UpdateFlag not set")) } if p.AfterUpdatedFlag == 0 { t.Error(errors.New("AfterUpdatedFlag not set")) } if p.B4UpdateViaExt == 0 { t.Error(errors.New("B4UpdateViaExt not set")) } if p.AfterUpdatedViaExt == 0 { t.Error(errors.New("AfterUpdatedViaExt not set")) } } p2 = &ProcessorsStruct{} _, err = engine.Id(p.Id).Get(p2) if err != nil { t.Error(err) panic(err) } else { if p2.B4UpdateFlag == 0 { t.Error(errors.New("B4UpdateFlag not set")) } if p2.AfterUpdatedFlag != 0 { t.Error(errors.New("AfterUpdatedFlag is set: " + string(p.AfterUpdatedFlag))) } if p2.B4UpdateViaExt == 0 { t.Error(errors.New("B4UpdateViaExt not set")) } if p2.AfterUpdatedViaExt != 0 { t.Error(errors.New("AfterUpdatedViaExt is set: " + string(p.AfterUpdatedViaExt))) } } // -- // test delete processors b4DeleteFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.B4DeleteViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } afterDeleteFunc := func(bean interface{}) { if v, ok := (bean).(*ProcessorsStruct); ok { v.AfterDeletedViaExt = 1 } else { t.Error(errors.New("cast to ProcessorsStruct failed, how can this be!?")) } } p = p2 // reset _, err = engine.Before(b4DeleteFunc).After(afterDeleteFunc).Delete(p) if err != nil { t.Error(err) panic(err) } else { if p.B4DeleteFlag == 0 { t.Error(errors.New("B4DeleteFlag not set")) } if p.AfterDeletedFlag == 0 { t.Error(errors.New("AfterDeletedFlag not set")) } if p.B4DeleteViaExt == 0 { t.Error(errors.New("B4DeleteViaExt not set")) } if p.AfterDeletedViaExt == 0 { t.Error(errors.New("AfterDeletedViaExt not set")) } } // -- // test insert multi pslice := make([]*ProcessorsStruct, 0) pslice = append(pslice, &ProcessorsStruct{}) pslice = append(pslice, &ProcessorsStruct{}) cnt, err := engine.Before(b4InsertFunc).After(afterInsertFunc).Insert(&pslice) if err != nil { t.Error(err) panic(err) } else { if cnt != 2 { t.Error(errors.New("incorrect insert count")) } for _, elem := range pslice { if elem.B4InsertFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if elem.AfterInsertedFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if elem.B4InsertViaExt == 0 { t.Error(errors.New("B4InsertFlag not set")) } if elem.AfterInsertedViaExt == 0 { t.Error(errors.New("AfterInsertedViaExt not set")) } } } for _, elem := range pslice { p = &ProcessorsStruct{} _, err = engine.Id(elem.Id).Get(p) if err != nil { t.Error(err) panic(err) } else { if p2.B4InsertFlag == 0 { t.Error(errors.New("B4InsertFlag not set")) } if p2.AfterInsertedFlag != 0 { t.Error(errors.New("AfterInsertedFlag is set")) } if p2.B4InsertViaExt == 0 { t.Error(errors.New("B4InsertViaExt not set")) } if p2.AfterInsertedViaExt != 0 { t.Error(errors.New("AfterInsertedViaExt is set")) } } } // -- }