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