| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package main
- import (
- //"fmt"
- //"time"
- //"math"
- . "git.wecise.com/wecise/odbserver/odb"
- "git.wecise.com/wecise/odbserver/odb/test"
- "gitee.com/wecisecode/util/logger"
- )
- // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testtrigger.go
- // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl
- // #include "/opt/odbserver/sqlite/sqlite.h"
- // #include <stdint.h>
- // #include <stdlib.h>
- // extern int64_t uhaha_seed;
- // extern int64_t uhaha_ts;
- // void uhaha_begin_reader();
- // void uhaha_end_reader();
- func main() {
- //options := map[string]interface{} {"cache":odb.CacheAll}
- //g,err:= odb.New( options )
- //option := &StoreOption{Cache:CacheAll}
- option := &Option{Cache: CacheAll, Keyspace: "ootest", DisableInitialHostLookup: true, DisableTask: true, DisableNotify: true}
- g, err := test.NewG(option)
- if err != nil {
- logger.Error(err.Error())
- } else {
- defer g.Close()
- }
- //logger.SetRollingDaily("C:/test/zkcron/src/test", "test.log")
- logger.SetConsole(true)
- //logger.SetLevel(logger.DEBUG)
- // 测试MQL
- /*rst,meta,err := g.Query(`
- CREATE TRIGGER test ON /matrix/entity
- SCHEDULE before INSERT
- PRIORITY 20
- STATUS enable
- BEGIN
- print("hello")
- END
- `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )*/
- /*rst,meta,err := g.Query(`
- CREATE OR REPLACE TRIGGER test ON /matrix/entity/aix
- comment '这是注释'
- ##这是注释
- SCHEDULE Every 5 SECOND
- WHEN name='aix:1'
- BIND class, id AS myvar
- PRIORITY 20
- GROUP 运维组
- STATUS enable
- begin
- for _, v in pairs(myvar) do
- log.info(" class : " .. v.class .. ",id : " .. v.id)
- end
- end
- `, &QueryMeta{Return: ReturnAll} )*/
- /*rst,meta,err := g.Query(` CREATE OR REPLACE TRIGGER testupdate2 ON /matrix/entity/aix
- COMMENT "这是注释"
- GROUP 运维组
- SCHEDULE before UPDATE
- PRIORITY 20
- STATUS enable
- BEGIN
- logger.Info("hello update")
- END`, &QueryMeta{Return: ReturnAll} )*/
- /*rst,meta,err := g.Query(` alter trigger testupdate ON /matrix/devops/alerts_status set COMMENT = "这是注释2", priority=30, script=BEGIN
- logger.Info("hello update0")
- END `, &QueryMeta{Return: ReturnAll} )*/
- /*rst,meta,err := g.Query(` CREATE OR REPLACE TRIGGER test_cron ON /matrix/devops/alerts_status
- COMMENT "这是注释"
- GROUP alter_status
- SCHEDULE every 30 second
- PRIORITY 20
- STATUS enable
- WHEN severity > 20
- BIND id, identifier, domaingroup, manager, node, altergroup, alterkey, type, lastoccurrence AS problems
- BEGIN
- local resolution = odb.mql("select node from /matrix/devops/alerts_status")
- for _, pv in pairs(problems) do
- for _,rv in pairs(resolution) do
- log.info(pv.node)
- end
- end
- END`, &QueryMeta{Return: ReturnAll} )
- */
- //rst,meta,err := g.Query(` alter trigger testupdate ON /matrix/entity/aix set status=enable `, &QueryMeta{Return: ReturnAll} )
- //rst,meta,err := g.Query(` drop trigger on /matrix/entity/aix`, &QueryMeta{Return: ReturnAll} )
- /*rst,meta,err := g.Query(` create trigger generic_clear on /matrix/devops/alert
- schedule every 30 second
- when severity>2 and status = 0
- bind id,ip,group,entity,inst,status as problems
- priority 20
- group network
- status enable
- begin
- for _,v in pairs(problems) do
- local mql = "select id from /matrix/devops/alert where ip = ? and group = ? and entity = ? and inst = ? and status = 0 and severity <=2 "
- local rec = odb.mql(mql,v.ip,v.group,v.entity,v.inst)
- if rec ~= nil then
- odb.mql("update /matrix/devops/alert set status = 12 where id = ?",v.id)
- end
- end
- end`, &QueryMeta{Return: ReturnAll} )*/
- //rst,meta,err := g.Query(` drop trigger on group 运维组 `, &QueryMeta{Return: ReturnAll} )
- //rst,meta,err := g.Query(` alter trigger on group 运维组 set priority=15, group=hello, status=disable `, &QueryMeta{Return: ReturnAll} )
- rst, meta, err := g.Query(`
- CREATE OR REPLACE TRIGGER test_cron ON /test/alert_status
- COMMENT "这是注释"
- GROUP alter_status
- SCHEDULE every 30 second
- PRIORITY 20
- STATUS enable
- WHEN severity > 4
- BIND id, identifier, domaingroup, manager, node, type, lastoccurrence AS problems
- BEGIN
- local resolution = odb.mql("select node from /test/alert_status")
- for _, pv in pairs(problems) do
- log.info(pv.node)
- end
- END
- `)
- //rst,meta,err := g.Query(` DROP TRIGGER test ON /matrix/entity `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
- //rst,meta,err := g.Query(` SHOW TRIGGER ON /matrix/entity `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
- if err != nil {
- logger.Info("Query error:" + err.Error())
- logger.Warn(meta["type"])
- } else {
- logger.Info("rst ===>", rst)
- //logger.Error("meta ===>", meta)
- if meta["trace"] != nil && len(meta["trace"].([]string)) > 0 {
- for _, msg := range meta["trace"].([]string) {
- logger.Error(msg)
- }
- }
- logger.Warn(meta["columns"])
- logger.Warn(meta["params"])
- }
- }
|