package main import ( //"fmt" "time" . "git.wecise.com/wecise/odbserver/odb" "git.wecise.com/wecise/odbserver/odb/query" "git.wecise.com/wecise/odbserver/odb/test" "gitee.com/wecisecode/util/logger" //"github.com/chrusty/go-tableprinter" ) // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testcreate.go // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl // #include "/opt/odbserver/sqlite/sqlite.h" // #include // #include // 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: "icbctest", DisableInitialHostLookup: 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) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain,depend*1]->()`) //rst,meta,err := g.Query(`match (m:"biz:查账系统")-[*]->(p:"linux:linux[1-5]")-[*]->(q:"esx:esx4") return status path m,p,q detail`) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug !!! //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() until "linux:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" back '2019-05-28 22:00:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" diff '2019-05-28 14:30:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where strp like 'strst*' * ]->() return name,status,.*`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" diff '2019-05-28 14:33:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("vm:*")-[*]->(:/matrix/entity/host where name='host:21e7aac1a44c4f0f961730fe68a709ab') return name`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("vm:*")-[*]->() return name with timeout=20`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("ha:认证系统数据库HA","ha:认证系统应用服务集群","ha:查账系统数据库HA","ha:B认证系统数据库HA","ha:B认证系统应用服务集群","ha:B查账系统数据库HA","123","222222","测试资源节点","test4530","zy-vmware","裸金属服务器","青海","vmware_wfang","sanstorage:sanstorage1","sanstorage:Bsanstorage1","weblogic:weblogic5","weblogic:weblogic4","weblogic:weblogic3","weblogic:weblogic2","weblogic:weblogic1","weblogic:Bweblogic5","weblogic:Bweblogic4","weblogic:Bweblogic3","weblogic:Bweblogic2","weblogic:Bweblogic1","esx:esx5","esx:esx4","esx:esx3","esx:esx2","esx:esx1","esx:Besx5","esx:Besx4","esx:Besx3","esx:Besx2","esx:Besx1","http:查账http4","http:查账http3","http:查账http2","http:查账http1","http:B查账http4","http:B查账http3","http:B查账http2","http:B查账http1","router:router4","router:router3","router:router2","router:router1","router:Brouter4","router:Brouter3") - [*1] -> ("ha:认证系统数据库HA","ha:认证系统应用服务集群","ha:查账系统数据库HA","ha:B认证系统数据库HA","ha:B认证系统应用服务集群","ha:B查账系统数据库HA","123","222222","测试资源节点","test4530","zy-vmware","裸金属服务器","青海","vmware_wfang","sanstorage:sanstorage1","sanstorage:Bsanstorage1","weblogic:weblogic5","weblogic:weblogic4","weblogic:weblogic3","weblogic:weblogic2","weblogic:weblogic1","weblogic:Bweblogic5","weblogic:Bweblogic4","weblogic:Bweblogic3","weblogic:Bweblogic2","weblogic:Bweblogic1","esx:esx5","esx:esx4","esx:esx3","esx:esx2","esx:esx1","esx:Besx5","esx:Besx4","esx:Besx3","esx:Besx2","esx:Besx1","http:查账http4","http:查账http3","http:查账http2","http:查账http1","http:B查账http4","http:B查账http3","http:B查账http2","http:B查账http1","router:router4","router:router3","router:router2","router:router1","router:Brouter4","router:Brouter3")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match (m:"biz:查账系统")-[*]->(p:"linux:linux[1-5]")-[*]->(q:"esx:esx4") return status path m,p,q`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`select host,ip from /matrix/devops/event/omnibus o join ("esx:aaa")-[:connect*]->(h:switch) on o.entity = h.id where o.severity=5`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`select host,ip from /matrix/devops/event/omnibus o join ("esx:bbb")-[:connect*]->(h:switch) on o.entity = h.id where o.severity=5`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("biz:查账系统111")-[*]->("esx:*")-[:connect*]->(h:switch) `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) // bug //rst,meta,err := g.Query(`select s.id,s.name,q.id as qid, q.name as qname from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`select q.id, q.name from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match("firewall:277966")-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(` match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) // //bug //rst,meta,err := g.Query(`match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //nug //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match (b:biz)-[*]->(e:esx)-[*1]->(s:switch) return name,status path b,e,s`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where intp =1 and floatp > 3 *]->() return contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ('server:*')-[*1]->(v:vm)-[*1]->('vnic:*')<-[*]-('project:0f11be29059d4681a5c33f6project01'),(v)-[*1]->(p:volume),('vstorage:*')-[*1]->(p)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match (a:"biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4") add "tag5" in a remove ("tag333") in a`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match (a:"biz:查账系统")-[*1]->("biz:认证系统") in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ()-->() in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`create ("biz:数字国网")-[:contain]->("app:test1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ('biz:数字国网') - [*2] -> () diff '2020-02-14 13:02'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` match (s:'server:*')-[*1]->(v:"vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*')<-[*]-('project:*'),(v1:"vm:*")-[*1]->('volume:*')<-[*1]-('vstorage:*')<-[*1]-(s) in "project1" `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("ha:查账系统数据库HA") union ("biz:查账系统")-[*]->("cluster:查账系统应用服务集群")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() union ()-[*1]->("biz:查账系统")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:connect where year=2020]->("linux:wecise") return connect`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->("cluster:查账系统应用服务集群")<-[*1]-("app:app3")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match (:alert where group='biz-status-slow')-[:refer*1]->("biz:*")-[*1]->(:app)<-[:refer*1]-(:alert where group='app-service-down')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` match (p1:"partitiontest1:test2")-[*1]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` match ('celltype:1114215')-[*]->() with sep="#" `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` create ("interface:RWU9451-900440-1_X2")-[:connect]->("interface:RWU9451-900439-1_X2") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`create ("switch:switch1")-[:connect]->("router:router1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) rst, meta, err := g.Query(` create ('node:10.1.1.230')-[:connect{"from":"Ten-GigabitEthernet1/0/2","to":"Bridge-Aggregation1"}]->('node:10.1.1.71') `, &query.QueryMeta{Return: query.ReturnAll}) //rst,meta,err := g.Query(` match ('node:RWU9451-900440-1')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` match ('celltype:1114215#1313672')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` match ("biz:查账系统")-[*]->("esx:esx1") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`select entity,msg,host,i.id,i.name,p.param,p.value from /matrix/devops/event/ e join (i:/matrix/entity/switch where id='switch:switch1' or name='switch:switch2') on e.entity=i.id and e.entity=i.name join (p:/matrix/devops/performance/ where entity like 'switch:*' and value>30) on e.entity=p.entity where entity like 'switch:*' `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("esx:esx1")<-[*]-() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) // is right //select id, name from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id //rst,meta,err := g.Query(`match ("biz:数字国网")-[*]->() return name,status,contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) // bug //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain]-("cluster:查账系统web集群")-[*]-() until "switch:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[:refer*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:认证系统")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("9788404371073416132")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //bug //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:linux[1-5]")-[*1]->("esx:esx1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*")`) //rst,meta,err := g.Query(`match (p:"linux:linux[1-5]")-[*]->(q:"esx:esx4")`) if err != nil { logger.Info("Query error:" + err.Error()) logger.Warn(meta["type"]) } else { logger.Info("rst ===>", rst) //tableprinter.Print(rst[0]) //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"]) } time.Sleep(time.Duration(1) * time.Second) }