| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- 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)
- }
- }
|