testjoin.go 15 KB

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