delete_test.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package delete_test
  2. import (
  3. "fmt"
  4. "regexp"
  5. "testing"
  6. "time"
  7. "git.wecise.com/wecise/odb-go/odbc"
  8. "git.wecise.com/wecise/util/cast"
  9. "gitee.com/wecisecode/util/logger"
  10. "gitee.com/wecisecode/util/set/strset"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestDelete(t *testing.T) {
  14. // odbc.KEYSPACE = "matrix" // default oktest, 可以通过命令行,环境变量或配置文件设置
  15. client := odbc.ODBC()
  16. if client == nil {
  17. return
  18. }
  19. // 遍历所有class,id,vtime
  20. for {
  21. // 获取所有类列表
  22. classes := []string{}
  23. {
  24. logger.Info("query class ...")
  25. res, err := client.Query(`select distinct class from /`).Do() // mql
  26. if !assert.Nil(t, err, err) {
  27. return
  28. }
  29. ss := strset.New()
  30. for _, d := range res.Data {
  31. // logger.Info("got data", i+1, d)
  32. class := cast.ToString(d["class"])
  33. classnames := regexp.MustCompile(`((?:/[a-z]\w*)+)`).FindStringSubmatch(class)
  34. if len(classnames) > 1 {
  35. class = classnames[1]
  36. }
  37. if !ss.Has(class) {
  38. ss.Add(class)
  39. classes = append(classes, class)
  40. logger.Info("got class", len(classes), class)
  41. }
  42. }
  43. }
  44. for _, class := range classes {
  45. // 获取对象数据
  46. offset := 0
  47. page := 100
  48. maxvtime := time.Time{}
  49. minvtime := time.Time{}
  50. logtime := time.Now()
  51. logger.Info("query " + class + " data ...")
  52. for {
  53. res, err := client.Query(fmt.Sprint(`select class,id,vtime from `, class, " limit ", offset, ",", page)).Do() // mql
  54. if !assert.Nil(t, err, err) {
  55. return
  56. }
  57. for _, d := range res.Data {
  58. // logger.Debug("got data", offset+i+1, class, d)
  59. vtime := cast.ToTime(d["vtime"])
  60. if maxvtime.Equal(time.Time{}) || vtime.After(maxvtime) {
  61. maxvtime = vtime
  62. }
  63. if minvtime.Equal(time.Time{}) || vtime.Before(minvtime) {
  64. minvtime = vtime
  65. }
  66. }
  67. if len(res.Data) < page || time.Since(logtime) > 10*time.Second {
  68. logger.Info("got data", offset+len(res.Data), class,
  69. minvtime.Format("2006-01-02 15:04:05.000000000"),
  70. "~", maxvtime.Format("2006-01-02 15:04:05.000000000"))
  71. logtime = time.Now()
  72. break
  73. }
  74. offset += page
  75. }
  76. time.Sleep(1 * time.Second)
  77. }
  78. time.Sleep(20 * time.Second)
  79. }
  80. }
  81. func TestSelect(t *testing.T) {
  82. // odbc.KEYSPACE = "matrix" // default oktest, 可以通过命令行,环境变量或配置文件设置
  83. client := odbc.ODBC()
  84. if client == nil {
  85. return
  86. }
  87. // 遍历所有class,id,vtime
  88. for {
  89. // 获取所有类列表
  90. classes := []string{}
  91. {
  92. logger.Info("query class ...")
  93. res, err := client.Query(`select distinct class from /`).Do() // mql
  94. if !assert.Nil(t, err, err) {
  95. return
  96. }
  97. ss := strset.New()
  98. for _, d := range res.Data {
  99. // logger.Info("got data", i+1, d)
  100. class := cast.ToString(d["class"])
  101. classnames := regexp.MustCompile(`((?:/[a-z]\w*)+)`).FindStringSubmatch(class)
  102. if len(classnames) > 1 {
  103. class = classnames[1]
  104. }
  105. if !ss.Has(class) {
  106. ss.Add(class)
  107. classes = append(classes, class)
  108. logger.Info("got class", len(classes), class)
  109. }
  110. }
  111. }
  112. for _, class := range classes {
  113. // 获取对象数据
  114. offset := 0
  115. page := 100
  116. maxvtime := time.Time{}
  117. minvtime := time.Time{}
  118. logtime := time.Now()
  119. logger.Info("query " + class + " data ...")
  120. for {
  121. res, err := client.Query(fmt.Sprint(`select class,id,vtime from `, class, " limit ", offset, ",", page)).Do() // mql
  122. if !assert.Nil(t, err, err) {
  123. return
  124. }
  125. for _, d := range res.Data {
  126. // logger.Debug("got data", offset+i+1, class, d)
  127. vtime := cast.ToTime(d["vtime"])
  128. if maxvtime.Equal(time.Time{}) || vtime.After(maxvtime) {
  129. maxvtime = vtime
  130. }
  131. if minvtime.Equal(time.Time{}) || vtime.Before(minvtime) {
  132. minvtime = vtime
  133. }
  134. }
  135. if len(res.Data) < page || time.Since(logtime) > 10*time.Second {
  136. logger.Info("got data", offset+len(res.Data), class,
  137. minvtime.Format("2006-01-02 15:04:05.000000000"),
  138. "~", maxvtime.Format("2006-01-02 15:04:05.000000000"))
  139. logtime = time.Now()
  140. break
  141. }
  142. offset += page
  143. }
  144. time.Sleep(1 * time.Second)
  145. }
  146. time.Sleep(20 * time.Second)
  147. }
  148. }