package delete_test import ( "fmt" "regexp" "testing" "time" "git.wecise.com/wecise/odb-go/odbc" "git.wecise.com/wecise/util/cast" "gitee.com/wecisecode/util/logger" "gitee.com/wecisecode/util/set/strset" "github.com/stretchr/testify/assert" ) func TestDelete(t *testing.T) { // odbc.KEYSPACE = "matrix" // default oktest, 可以通过命令行,环境变量或配置文件设置 client := odbc.ODBC() if client == nil { return } // 遍历所有class,id,vtime for { // 获取所有类列表 classes := []string{} { logger.Info("query class ...") res, err := client.Query(`select distinct class from /`).Do() // mql if !assert.Nil(t, err, err) { return } ss := strset.New() for _, d := range res.Data { // logger.Info("got data", i+1, d) class := cast.ToString(d["class"]) classnames := regexp.MustCompile(`((?:/[a-z]\w*)+)`).FindStringSubmatch(class) if len(classnames) > 1 { class = classnames[1] } if !ss.Has(class) { ss.Add(class) classes = append(classes, class) logger.Info("got class", len(classes), class) } } } for _, class := range classes { // 获取对象数据 offset := 0 page := 100 maxvtime := time.Time{} minvtime := time.Time{} logtime := time.Now() logger.Info("query " + class + " data ...") for { res, err := client.Query(fmt.Sprint(`select class,id,vtime from `, class, " limit ", offset, ",", page)).Do() // mql if !assert.Nil(t, err, err) { return } for _, d := range res.Data { // logger.Debug("got data", offset+i+1, class, d) vtime := cast.ToTime(d["vtime"]) if maxvtime.Equal(time.Time{}) || vtime.After(maxvtime) { maxvtime = vtime } if minvtime.Equal(time.Time{}) || vtime.Before(minvtime) { minvtime = vtime } } if len(res.Data) < page || time.Since(logtime) > 10*time.Second { logger.Info("got data", offset+len(res.Data), class, minvtime.Format("2006-01-02 15:04:05.000000000"), "~", maxvtime.Format("2006-01-02 15:04:05.000000000")) logtime = time.Now() break } offset += page } time.Sleep(1 * time.Second) } time.Sleep(20 * time.Second) } } func TestSelect(t *testing.T) { // odbc.KEYSPACE = "matrix" // default oktest, 可以通过命令行,环境变量或配置文件设置 client := odbc.ODBC() if client == nil { return } // 遍历所有class,id,vtime for { // 获取所有类列表 classes := []string{} { logger.Info("query class ...") res, err := client.Query(`select distinct class from /`).Do() // mql if !assert.Nil(t, err, err) { return } ss := strset.New() for _, d := range res.Data { // logger.Info("got data", i+1, d) class := cast.ToString(d["class"]) classnames := regexp.MustCompile(`((?:/[a-z]\w*)+)`).FindStringSubmatch(class) if len(classnames) > 1 { class = classnames[1] } if !ss.Has(class) { ss.Add(class) classes = append(classes, class) logger.Info("got class", len(classes), class) } } } for _, class := range classes { // 获取对象数据 offset := 0 page := 100 maxvtime := time.Time{} minvtime := time.Time{} logtime := time.Now() logger.Info("query " + class + " data ...") for { res, err := client.Query(fmt.Sprint(`select class,id,vtime from `, class, " limit ", offset, ",", page)).Do() // mql if !assert.Nil(t, err, err) { return } for _, d := range res.Data { // logger.Debug("got data", offset+i+1, class, d) vtime := cast.ToTime(d["vtime"]) if maxvtime.Equal(time.Time{}) || vtime.After(maxvtime) { maxvtime = vtime } if minvtime.Equal(time.Time{}) || vtime.Before(minvtime) { minvtime = vtime } } if len(res.Data) < page || time.Since(logtime) > 10*time.Second { logger.Info("got data", offset+len(res.Data), class, minvtime.Format("2006-01-02 15:04:05.000000000"), "~", maxvtime.Format("2006-01-02 15:04:05.000000000")) logtime = time.Now() break } offset += page } time.Sleep(1 * time.Second) } time.Sleep(20 * time.Second) } }