testcreate.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package main
  2. import (
  3. //"fmt"
  4. "time"
  5. . "git.wecise.com/wecise/odbserver/odb"
  6. "git.wecise.com/wecise/odbserver/odb/query"
  7. "git.wecise.com/wecise/odbserver/odb/test"
  8. "gitee.com/wecisecode/util/logger"
  9. //"github.com/chrusty/go-tableprinter"
  10. )
  11. // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testcreate.go
  12. // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl
  13. // #include "/opt/odbserver/sqlite/sqlite.h"
  14. // #include <stdint.h>
  15. // #include <stdlib.h>
  16. // extern int64_t uhaha_seed;
  17. // extern int64_t uhaha_ts;
  18. // void uhaha_begin_reader();
  19. // void uhaha_end_reader();
  20. func main() {
  21. //options := map[string]interface{} {"cache":odb.CacheAll}
  22. //g,err:= odb.New( options )
  23. //option := &StoreOption{Cache:CacheAll}
  24. option := &Option{Cache: CacheAll, Keyspace: "icbctest", DisableInitialHostLookup: true, DisableNotify: true}
  25. g, err := test.NewG(option)
  26. if err != nil {
  27. logger.Error(err.Error())
  28. } else {
  29. defer g.Close()
  30. }
  31. //logger.SetRollingDaily("C:/test/zkcron/src/test", "test.log")
  32. logger.SetConsole(true)
  33. //logger.SetLevel(logger.DEBUG)
  34. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain,depend*1]->()`)
  35. //rst,meta,err := g.Query(`match (m:"biz:查账系统")-[*]->(p:"linux:linux[1-5]")-[*]->(q:"esx:esx4") return status path m,p,q detail`)
  36. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`)
  37. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`)
  38. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`)
  39. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  40. //bug
  41. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  42. //bug
  43. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  44. //bug !!!
  45. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  46. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  47. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  48. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() until "linux:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  49. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  50. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  51. //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} )
  52. //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} )
  53. //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where strp like 'strst*' * ]->() return name,status,.*`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  54. //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} )
  55. //rst,meta,err := g.Query(`match ("vm:*")-[*]->(:/matrix/entity/host where name='host:21e7aac1a44c4f0f961730fe68a709ab') return name`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  56. //rst,meta,err := g.Query(`match ("vm:*")-[*]->() return name with timeout=20`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  57. //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} )
  58. //bug
  59. //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} )
  60. //bug
  61. //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} )
  62. //bug
  63. //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} )
  64. //bug
  65. //rst,meta,err := g.Query(`match ("biz:查账系统111")-[*]->("esx:*")-[:connect*]->(h:switch) `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  66. // bug
  67. //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} )
  68. //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} )
  69. //bug
  70. //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  71. //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  72. //bug
  73. //rst,meta,err := g.Query(`match("firewall:277966")-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  74. //bug
  75. //rst,meta,err := g.Query(` match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  76. //
  77. //bug
  78. //rst,meta,err := g.Query(`match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  79. //nug
  80. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  81. //bug
  82. //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} )
  83. //bug
  84. //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where intp =1 and floatp > 3 *]->() return contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  85. //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} )
  86. //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} )
  87. //rst,meta,err := g.Query(`match (a:"biz:查账系统")-[*1]->("biz:认证系统") in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  88. //rst,meta,err := g.Query(`match ()-->() in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  89. //rst,meta,err := g.Query(`create ("biz:数字国网")-[:contain]->("app:test1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  90. //rst,meta,err := g.Query(`match ('biz:数字国网') - [*2] -> () diff '2020-02-14 13:02'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  91. //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} )
  92. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  93. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("ha:查账系统数据库HA") union ("biz:查账系统")-[*]->("cluster:查账系统应用服务集群")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  94. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() union ()-[*1]->("biz:查账系统")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  95. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:connect where year=2020]->("linux:wecise") return connect`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  96. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->("cluster:查账系统应用服务集群")<-[*1]-("app:app3")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  97. //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} )
  98. //rst,meta,err := g.Query(` match (p1:"partitiontest1:test2")-[*1]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  99. //rst,meta,err := g.Query(` match ('celltype:1114215')-[*]->() with sep="#" `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  100. //rst,meta,err := g.Query(` create ("interface:RWU9451-900440-1_X2")-[:connect]->("interface:RWU9451-900439-1_X2") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  101. //rst,meta,err := g.Query(`create ("switch:switch1")-[:connect]->("router:router1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  102. 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})
  103. //rst,meta,err := g.Query(` match ('node:RWU9451-900440-1')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  104. //rst,meta,err := g.Query(` match ('celltype:1114215#1313672')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  105. //rst,meta,err := g.Query(` match ("biz:查账系统")-[*]->("esx:esx1") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  106. //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} )
  107. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  108. //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  109. //bug
  110. //rst,meta,err := g.Query(`match ("esx:esx1")<-[*]-() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  111. //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  112. // is right
  113. //select id, name from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id
  114. //rst,meta,err := g.Query(`match ("biz:数字国网")-[*]->() return name,status,contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  115. // bug
  116. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain]-("cluster:查账系统web集群")-[*]-() until "switch:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  117. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  118. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:refer*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  119. //rst,meta,err := g.Query(`match ("biz:认证系统")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  120. //rst,meta,err := g.Query(`match ("9788404371073416132")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  121. //bug
  122. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:linux[1-5]")-[*1]->("esx:esx1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  123. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  124. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*")`)
  125. //rst,meta,err := g.Query(`match (p:"linux:linux[1-5]")-[*]->(q:"esx:esx4")`)
  126. if err != nil {
  127. logger.Info("Query error:" + err.Error())
  128. logger.Warn(meta["type"])
  129. } else {
  130. logger.Info("rst ===>", rst)
  131. //tableprinter.Print(rst[0])
  132. //logger.Error("meta ===>", meta)
  133. if meta["trace"] != nil && len(meta["trace"].([]string)) > 0 {
  134. for _, msg := range meta["trace"].([]string) {
  135. logger.Error(msg)
  136. }
  137. }
  138. logger.Warn(meta["columns"])
  139. }
  140. time.Sleep(time.Duration(1) * time.Second)
  141. }