package bucket import ( "fmt" "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 BucketStruLogsTests struct { Test *testing.T g *Gutil } func BucketStruLogsTest(t *testing.T) { g := test.TestG() t.Run("InitG", func(t *testing.T) { test := &BucketStruLogsTests{Test: t, g: g} test.InitG() }) t.Run("Class", func(t *testing.T) { test := &BucketStruLogsTests{Test: t, g: g} test.Class() }) t.Run("Data", func(t *testing.T) { test := &BucketStruLogsTests{Test: t, g: g} test.Data() }) time.Sleep(time.Duration(1) * time.Second) t.Run("Valid", func(t *testing.T) { test := &BucketStruLogsTests{Test: t, g: g} test.Valid() }) } func (t *BucketStruLogsTests) InitG() { require.NotNil(t.Test, t.g) } func (t *BucketStruLogsTests) Class() { _, _, err := t.g.Query(` create class if not exists /test/bucketstrulog ( host varchar, bklog bucket { "type" : "bitlog", "files": ["*.log"], "sample" : ["2020-05-15 00:49:59,666666"], "ttl" : 365 } 'full', keys(host), indexes(host) ) with key=manu, nickname='bucketstrulog' `) if err != nil { logger.Errorf("%v", err) } require.Nil(t.Test, err, fmt.Sprint(err)) } func (t *BucketStruLogsTests) Data() { var err error _, _, err = t.g.Query(` insert into /test/bucketstrulog (id) values ("linux:wecise") `) if err != nil { logger.Errorf("%v", err) } require.Nil(t.Test, err, fmt.Sprint(err)) _, _, err = t.g.Query(` insert into /test/bucketstrulog (id, bklog['file1.log']) values ('linux:wecise', ['[2021-06-16 00:00:00.608072][22264][2419] Level 0 : ----------------------------------------------------------- 报文放置时间:[2021-06-16 00:00:00.560000] 报文读取时间:[2021-06-15 23:59:59.930309] 处理报文时间:[2021-06-16 00:00:00.574163] 处理报文耗时:[33.876000]ms 接收报文: {H:01102100099996IBPS0000 IBPS20210616000000XMLmaps.305.001.01 00200000000755039990002000000007550399903U XN} 10210009999620210616717778362021-06-16T00:00:0010210009999600001021000999961021000999962021061573825160maps.301.001.01622202100111589127418701506942MEQCIB5I003cIktpaEuvgZD3rUwVciJEA8wT3T32UOEsiOPvAiAJSO/Hb66S3djGa3BV8Uw/A2oSG/CWJB/EO8xjFVnN9g== 处理结果: ** IB1I0000[处理成功!] ** [2021-06-16 00:00:00.641788][22264][1989] Level 0 : ----------------------------------------------------------- 报文放置时间:[2021-06-16 00:00:00.560000] 报文读取时间:[2021-06-16 00:00:00.608745] 处理报文时间:[2021-06-16 00:00:00.611142] 处理报文耗时:[30.622000]ms 接收报文: {H:01102100099996IBPS0000 IBPS20210616000000XMLmaps.305.001.01 00250000000754136018002500000007541360183U XN} 10210009999620210616857843662021-06-16T00:00:0010210009999600001021000999961021000999962021061589128394maps.301.001.01621225420000288016315584466023MEQCIHKi86xIMVUIG49/yJWagOZURxNXrtKsOaTVQJ1COXjLAiA0b9rvuS1sevfw0UlRw9zReAwJGwuUDuntSHJ0lj0HSA== 处理结果: ** IB1I0000[处理成功!] ** [2021-06-16 00:00:00.672518][22264][2025] Level 0 : ----------------------------------------------------------- 报文放置时间:[2021-06-16 00:00:00.580000] 报文读取时间:[2021-06-16 00:00:00.642211] 处理报文时间:[2021-06-16 00:00:00.644378] 处理报文耗时:[28.115000]ms 接收报文: {H:01102100099996IBPS0000 IBPS20210616000000XMLmaps.305.001.01 00100000000755018043001000000007550180433U XN} 10210009999620210616717778382021-06-16T00:00:0010210009999600001021000999961021000999962021061578736719maps.301.001.01622203370000463455618092609666MEQCIBQa1SoH2A6kQTf6gHPqzgPdj1FDJkEp7mNWYw1iF2DBAiAEkYFlcGF3ZU15Rsn2BygIr8F+D7O4Kv69QxM8yHIZeQ== 处理结果: ** IB1I0000[处理成功!] ** [2021-06-16 00:00:00.705166][22264][1882] Level 0 : ----------------------------------------------------------- 报文放置时间:[2021-06-16 00:00:00.600000] 报文读取时间:[2021-06-16 00:00:00.673063] 处理报文时间:[2021-06-16 00:00:00.675444] 处理报文耗时:[29.698000]ms 接收报文: {H:01102100099996IBPS0000 IBPS20210616000000XMLmaps.305.001.01 00000000000755181076000000000007551810763U XN} 10210009999620210616716918312021-06-16T00:00:0010210009999600001021000999961021000999962021061578851069maps.301.001.01621226060500270813518847619999MEYCIQDODwP7dc54nU5C+6B3GLeTg9YK748J5TONoxpfvt89xQIhALbbJqFk69lch5EHLVoDoYVRgjIw4tgCRmDC/IziTlOg 处理结果: ** IB1I0000[处理成功!] ** [2021-06-16 00:00:00.738067][22264][2027] Level 0 : ----------------------------------------------------------- 报文放置时间:[2021-06-16 00:00:00.680000] 报文读取时间:[2021-06-16 00:00:00.705720] 处理报文时间:[2021-06-16 00:00:00.708032] 处理报文耗时:[30.018000]ms 接收报文: {H:01102100099996IBPS0000 IBPS20210616000000XMLmaps.305.001.01 00850000000753998020008500000007539980203U XN} 10210009999620210616857654492021-06-16T00:00:0010210009999600001021000999961021000999962021061390966177maps.301.001.01622203040400043245213333339813MEUCIAmvoZqU4YmunXOZx+zs+DE9PFGaQ10uSes6v8ZNMKICAiEAhrfc0taUZyiQpSmY8M//IbxGetdv82EZaXGQiQI1kok= 处理结果: ** IB1I0000[处理成功!] ** ']) with split=/\n\n/ `) if err != nil { logger.Errorf("%v", err) } require.Nil(t.Test, err, fmt.Sprint(err)) } func (t *BucketStruLogsTests) Valid() { var err error _, _, err = t.g.Query(`select bklog FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT bklog.time('2020-04-22', '').inst() FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT bklog.date("2020-05-15").inst() FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT bklog["file*.log"{116669996670004, 116669996680008}] FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT bklog["file1.log"{1,3,6,7}].time('2020-05-15 00:49:59,667', '').find( "twcs skipping" ) FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT bklog.time('2020-06-23 14:50','2020-06-23 15:00').find('twcs'),id FROM /test/bucketstrulog`) assert.Nil(t.Test, err) _, _, err = t.g.Query(`SELECT id FROM /test/bucketstrulog where bklog.time("2020-05-01","").find("INFO").assert() `) assert.Nil(t.Test, err) }