| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- package bucket
- import (
- "fmt"
- "strconv"
- "testing"
- "time"
- . "git.wecise.com/wecise/odbserver/odb"
- "git.wecise.com/wecise/odbserver/odb/test"
- "gitee.com/wecisecode/util/logger"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- type BucketTSDBTests struct {
- Test *testing.T
- g *Gutil
- }
- func BucketTSDBTest(t *testing.T) {
- g := test.TestG()
- t.Run("InitG", func(t *testing.T) {
- test := &BucketTSDBTests{Test: t, g: g}
- test.InitG()
- })
- t.Run("Class", func(t *testing.T) {
- test := &BucketTSDBTests{Test: t, g: g}
- test.Class()
- })
- t.Run("Data", func(t *testing.T) {
- test := &BucketTSDBTests{Test: t, g: g}
- test.Data()
- })
- t.Run("Data64", func(t *testing.T) {
- test := &BucketTSDBTests{Test: t, g: g}
- test.Data64()
- })
- time.Sleep(time.Duration(1) * time.Second)
- t.Run("Valid", func(t *testing.T) {
- test := &BucketTSDBTests{Test: t, g: g}
- test.Valid()
- })
- }
- func (t *BucketTSDBTests) InitG() {
- require.NotNil(t.Test, t.g)
- }
- func (t *BucketTSDBTests) Class() {
- t.g.Query(`
- create class if not exists /test();
- `)
- _, _, err := t.g.Query(`
- create class if not exists /test/buckettsdb (
-
- host varchar,
-
- bk2 bucket {
- "type" : "tsdb",
- "param" : ["iparam1","iparam2","fparam1","fparam2","sparam1","vparam1"],
- "ptype" : ["i","i","f","f","s","s"],
- "unit" : ["%","m","ms","ns","",""],
- "precision":[0,0,3,4,0,0],
- "ttl" : 365,
- "crc" : ["iparam1", "sparam1"]
- } 'full',
- keys(host),
- indexes(host)
-
- ) with key=manu, nickname='buckettsdb'
- `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- _, _, err = t.g.Query(`
- create class if not exists /test/buckettsdb64 (
-
- host varchar,
-
- bk64 bucket {
- "type" : "tsdb",
- "crc64" : true,
- "param" : ["iparam1","iparam2","fparam1","fparam2","sparam1","vparam1"],
- "ptype" : ["i","i","f","f","s","s"],
- "unit" : ["%","m","ms","ns","",""],
- "precision":[0,0,3,4,0,0],
- "ttl" : 365,
- "crc" : ["iparam1", "sparam1"]
- } 'full',
- keys(host),
- indexes(host)
-
- ) with key=manu, nickname='buckettsdb64'
- `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- require.Nil(t.Test, err, fmt.Sprint(err))
- }
- func (t *BucketTSDBTests) Data() {
- var err error
- /*_, _, err = t.g.Query(` insert into /test/buckettsdb (id) values ("buckettsdb:wecise") `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- require.Nil(t.Test, err, fmt.Sprint(err))
- */
- for i := 1234567890; i < 1234567890+10; i++ {
- if i%2 == 0 {
- _, _, err := t.g.Query(fmt.Sprintf(`insert into /test/buckettsdb (id, bk2[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb:wecise', [1, nil, 3.3, 6.5, '%d', 'abcdefghhhhh'] ) at '2022-07-24 10:24:17'`, i))
- if err != nil {
- logger.Errorf("%v", err)
- }
- } else {
- _, _, err := t.g.Query(fmt.Sprintf(`insert into /test/buckettsdb (id, bk2[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb:wecise', [nil, nil, 3.3, 6.5, '%d', 'abcdefghhhhh'] ) at '2022-07-24 10:24:17'`, i))
- if err != nil {
- logger.Errorf("%v", err)
- }
- }
- }
- stat, errr := t.g.Prepare(`insert into /test/buckettsdb (id, bk2[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values (?, ? ) at ? `)
- require.Nil(t.Test, errr)
- for i := 1234567890; i < 1234567890+10; i++ {
- _, _, err := stat.Exec("buckettsdb:wecise", []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(i), "abcdefghhhhh"}, "2022-07-29 10:24:17")
- if err != nil {
- logger.Errorf("%v", err)
- }
- }
- _, _, err = stat.Exec("buckettsdb:wecise", [][]interface{}{[]interface{}{1, nil, 3.3, 6.5, strconv.Itoa(66666), " abcdefghhhhh"}, []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(77777), " abcdefghhhhh"}, []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(88888), " abcdefghhhhh"}}, []string{"2022-08-01 10:24:17", "2022-08-02 10:24:17", "2022-08-03 10:24:17"})
- if err != nil {
- logger.Errorf("%v", err)
- }
- _, _, err = t.g.Query(`insert into /test/buckettsdb (id, bk2[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb:wecise', [[1, nil, 3.3, 6.5, '2234567890', 'abcdefghhhhh'], [1, nil, 3.3, 6.5, '3234567890', 'abcdefghhhhh'], [1, nil, 3.3, 6.5, '4234567890', 'abcdefghhhhh'] ] ) at ['2022-07-25 10:24:17', '2022-07-26 10:24:17', '2022-07-27 10:24:17'] `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- require.Nil(t.Test, err, fmt.Sprint(err))
- }
- func (t *BucketTSDBTests) Data64() {
- var err error
- /*_, _, err = t.g.Query(` insert into /test/buckettsdb (id) values ("buckettsdb:wecise") `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- require.Nil(t.Test, err, fmt.Sprint(err))
- */
- for i := 1234567890; i < 1234567890+10; i++ {
- if i%2 == 0 {
- _, _, err := t.g.Query(fmt.Sprintf(`insert into /test/buckettsdb64 (id, bk64[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb64:wecise', [1, nil, 3.3, 6.5, '%d', 'abcdefghhhhh'] ) at '2022-07-24 10:24:17'`, i))
- if err != nil {
- logger.Errorf("%v", err)
- }
- } else {
- _, _, err := t.g.Query(fmt.Sprintf(`insert into /test/buckettsdb64 (id, bk64[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb64:wecise', [nil, nil, 3.3, 6.5, '%d', 'abcdefghhhhh'] ) at '2022-07-24 10:24:17'`, i))
- if err != nil {
- logger.Errorf("%v", err)
- }
- }
- }
- stat, errr := t.g.Prepare(`insert into /test/buckettsdb64 (id, bk64[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values (?, ? ) at ? `)
- require.Nil(t.Test, errr)
- for i := 1234567890; i < 1234567890+10; i++ {
- _, _, err := stat.Exec("buckettsdb64:wecise", []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(i), "abcdefghhhhh"}, "2022-07-29 10:24:17")
- if err != nil {
- logger.Errorf("%v", err)
- }
- }
- _, _, err = stat.Exec("buckettsdb64:wecise", [][]interface{}{[]interface{}{1, nil, 3.3, 6.5, strconv.Itoa(66666), " abcdefghhhhh"}, []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(77777), " abcdefghhhhh"}, []interface{}{1, nil, 3.3, 6.5, strconv.Itoa(88888), " abcdefghhhhh"}}, []string{"2022-08-01 10:24:17", "2022-08-02 10:24:17", "2022-08-03 10:24:17"})
- if err != nil {
- logger.Errorf("%v", err)
- }
- _, _, err = t.g.Query(`insert into /test/buckettsdb64 (id, bk64[ 'iparam1', 'iparam2', 'fparam1', 'fparam2', 'sparam1', 'vparam1']) values ('buckettsdb64:wecise', [[1, nil, 3.3, 6.5, '2234567890', 'abcdefghhhhh'], [1, nil, 3.3, 6.5, '3234567890', 'abcdefghhhhh'], [1, nil, 3.3, 6.5, '4234567890', 'abcdefghhhhh'] ] ) at ['2022-07-25 10:24:17', '2022-07-26 10:24:17', '2022-07-27 10:24:17'] `)
- if err != nil {
- logger.Errorf("%v", err)
- }
- require.Nil(t.Test, err, fmt.Sprint(err))
- }
- func (t *BucketTSDBTests) Valid() {
- var err error
- _, _, err = t.g.Query(`SELECT bk2 FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[-1 - 1] FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[1 - -1] FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 4-3] FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 'iparam1', 3-1, 4] FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 'iparam1', 1-3, 4] FROM /test/buckettsdb`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 'iparam1', 'iparam2', 2-3, 4 ].time('2022-04-22 08:10', '').(iparam1=1).count() as iparam1 FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 3-4, 5 ].time('2022-05-23 22:24:15', '').([1]=1).title() FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2[ 'iparam1', 1-3, 4 ].time('2022-04-22', '').find(fparam1 >= 0.992315).find(iparam1 = 56).find(fparam2 != 0.418309) as iparam1 FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2.time('2022-04-22', '').find(fparam1 >= 0.992315).find(iparam1 = 56).find(fparam2 <> 0.418309) as iparam1 FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk2.time('2022-04-22', '').(fparam1 >= 0.992315).(iparam1 in [56,99]) FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk2[-1 - 1].time("2022-07-24", '').find(fparam1 >= 0.992315).count() as iparm1 FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT id, bk2 FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk2[-1 - 1].date('2022-07-24').find(fparam1=3.3) FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk2.date("2022-07-24") FROM /test/buckettsdb `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT id FROM /test/buckettsdb where bk2.date("2022-07-24").assert(iparam1=1)`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64 FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[-1 - 1] FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[1 - -1] FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 4-3] FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 'iparam1', 3-1, 4] FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 'iparam1', 1-3, 4] FROM /test/buckettsdb64`)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 'iparam1', 'iparam2', 2-3, 4 ].time('2022-04-22 08:10', '').(iparam1=1).count() as iparam1 FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 3-4, 5 ].time('2022-05-23 22:24:15', '').([1]=1).title() FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64[ 'iparam1', 1-3, 4 ].time('2022-04-22', '').find(fparam1 >= 0.992315).find(iparam1 = 56).find(fparam2 != 0.418309) as iparam1 FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64.time('2022-04-22', '').find(fparam1 >= 0.992315).find(iparam1 = 56).find(fparam2 <> 0.418309) as iparam1 FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(`SELECT bk64.time('2022-04-22', '').(fparam1 >= 0.992315).(iparam1 in [56,99]) FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk64[-1 - 1].time("2022-07-24", '').find(fparam1 >= 0.992315).count() as iparm1 FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT id, bk64 FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk64[-1 - 1].date('2022-07-24').find(fparam1=3.3) FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT bk64.date("2022-07-24") FROM /test/buckettsdb64 `)
- assert.Nil(t.Test, err)
- _, _, err = t.g.Query(` SELECT id FROM /test/buckettsdb64 where bk64.date("2022-07-24").assert(iparam1=1)`)
- assert.Nil(t.Test, err)
- }
|