testperf.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "os"
  6. //"time"
  7. //"math"
  8. //"strconv"
  9. "encoding/json"
  10. "math/rand"
  11. . "git.wecise.com/wecise/odbserver/odb"
  12. "git.wecise.com/wecise/odbserver/odb/test"
  13. "gitee.com/wecisecode/util/logger"
  14. )
  15. type PerfConfig struct {
  16. Schema string `json:"schema"`
  17. Rate float64 `json:"rate"`
  18. Keyspace string `json:"keyspace"`
  19. }
  20. func main() {
  21. config_file := "config.json"
  22. if len(os.Args) >= 2 {
  23. config_file = os.Args[1]
  24. }
  25. conf := &PerfConfig{}
  26. if content, err := ioutil.ReadFile(config_file); err != nil {
  27. logger.Errorf("read config file : %s, error: %v", config_file, err)
  28. } else {
  29. if err := json.Unmarshal([]byte(content), conf); err != nil {
  30. logger.Errorf("config error: %v", err)
  31. } else {
  32. logger.Infof("From: %v", conf)
  33. }
  34. }
  35. //options := map[string]interface{} {"cache":odb.CacheAll}
  36. //g,err:= odb.New( options )
  37. logger.SetConsole(true)
  38. //option := &StoreOption{Cache:CacheAll}
  39. option := &Option{Cache: CacheAll, Keyspace: conf.Keyspace, DisableInitialHostLookup: true, DisableNotify: true}
  40. g, err := test.NewG(option)
  41. if err != nil {
  42. logger.Error(err.Error())
  43. } else {
  44. defer g.Close()
  45. }
  46. /* _, _, err = g.Query( conf.Schema )
  47. if err != nil {
  48. logger.Info("Query error:" + err.Error())
  49. return
  50. }*/
  51. stat, err := g.Prepare(`insert into c14490 (id, name) values (?, ? )`)
  52. if err != nil {
  53. logger.Errorf("%v", err)
  54. return
  55. }
  56. count_1 := int(450 * conf.Rate)
  57. for i := 0; i < count_1; i++ {
  58. _, _, err = stat.Exec(fmt.Sprintf("c14490:c%d", i), fmt.Sprintf("c14490_%d", i))
  59. if err != nil {
  60. logger.Errorf("%v", err)
  61. return
  62. }
  63. }
  64. stat, err = g.Prepare(`insert into c14409 (id, name) values (?, ? )`)
  65. if err != nil {
  66. logger.Errorf("%v", err)
  67. return
  68. }
  69. count_2 := int(24000 * conf.Rate)
  70. for i := 0; i < count_2; i++ {
  71. _, _, err = stat.Exec(fmt.Sprintf("c14409:c%d", i), fmt.Sprintf("c14409_%d", i))
  72. if err != nil {
  73. logger.Errorf("%v", err)
  74. return
  75. }
  76. }
  77. stat, err = g.Prepare(`insert into c19900 (id, name) values (?, ? )`)
  78. if err != nil {
  79. logger.Errorf("%v", err)
  80. return
  81. }
  82. count_3 := int(120000 * conf.Rate)
  83. for i := 0; i < count_3; i++ {
  84. _, _, err = stat.Exec(fmt.Sprintf("c19900:c%d", i), fmt.Sprintf("c19900_%d", i))
  85. if err != nil {
  86. logger.Errorf("%v", err)
  87. return
  88. }
  89. }
  90. stat, err = g.Prepare(`insert into cnode (id, name) values (?, ? )`)
  91. if err != nil {
  92. logger.Errorf("%v", err)
  93. return
  94. }
  95. count_c := int(500000 * conf.Rate)
  96. for i := 0; i < count_c; i++ {
  97. _, _, err = stat.Exec(fmt.Sprintf("cnode:c%d", i), fmt.Sprintf("cnode_%d", i))
  98. if err != nil {
  99. logger.Errorf("%v", err)
  100. return
  101. }
  102. }
  103. stat, err = g.Prepare(`insert into cnode (id, name) values (?, ? )`)
  104. if err != nil {
  105. logger.Errorf("%v", err)
  106. return
  107. }
  108. count_t := int(120000 * conf.Rate)
  109. for i := 0; i < count_t; i++ {
  110. _, _, err = stat.Exec(fmt.Sprintf("tnode:c%d", i), fmt.Sprintf("tnode_%d", i))
  111. if err != nil {
  112. logger.Errorf("%v", err)
  113. return
  114. }
  115. }
  116. //两种连接,每个52
  117. for i := 0; i < count_1; i++ {
  118. // connect
  119. //{
  120. // "from":"GigabitEthernet1",
  121. // "to" :"GigabitEthernet1"
  122. //}
  123. // connectip
  124. //{
  125. // "from":"192.168.1.#11",
  126. // "to" :"192.169.1.#11"
  127. //}
  128. // c14490 ==> 52 ==> c14409
  129. for j := 0; j < 52; j++ {
  130. todevice := (j + i) % count_2
  131. from := rand.Intn(999) + 1
  132. to := rand.Intn(100) + 1
  133. _, _, err := g.Query(fmt.Sprintf(`create ('c14490:c%d')-[:connect{"from":"GigabitEthernet%d","to":"GigabitEthernet%d"}]->('c14409:c%d')`, i, from, to, todevice))
  134. if err != nil {
  135. logger.Errorf("%v", err)
  136. return
  137. }
  138. }
  139. for j := 0; j < 52; j++ {
  140. todevice := (j + i) % count_2
  141. from := rand.Intn(999) + 1
  142. to := rand.Intn(99) + 1
  143. _, _, err := g.Query(fmt.Sprintf(`create ('c14490:c%d')-[:connectip{"from":"192.168.1.%d","to":"192.168.1.%d"}]->('c14409:c%d')`, i, from, to, todevice))
  144. if err != nil {
  145. logger.Errorf("%v", err)
  146. return
  147. }
  148. }
  149. }
  150. //一种连接,每个2个
  151. for i := 0; i < count_2; i++ {
  152. for j := 0; j < 2; j++ {
  153. todevice := (j + i) % count_3
  154. from := rand.Intn(99) + 1
  155. to := rand.Intn(49) + 1
  156. _, _, err := g.Query(fmt.Sprintf(`create ('c14409:c%d')-[:connect{"from":"GigabitEthernet%d","to":"GigabitEthernet%d"}]->('c19900:c%d')`, i, from, to, todevice))
  157. if err != nil {
  158. logger.Errorf("%v", err)
  159. return
  160. }
  161. }
  162. }
  163. //一种连接,连接两种设备
  164. for i := 0; i < count_3; i++ {
  165. todevice := i % count_c
  166. from := rand.Intn(49) + 1
  167. to := rand.Intn(9) + 1
  168. _, _, err := g.Query(fmt.Sprintf(`create ('c19900:c%d')-[:connect{"from":"GigabitEthernet%d","to":"GigabitEthernet%d"}]->('cnode:c%d')`, i, from, to, todevice))
  169. if err != nil {
  170. logger.Errorf("%v", err)
  171. return
  172. }
  173. todevice = i % count_t
  174. _, _, err = g.Query(fmt.Sprintf(`create ('c19900:c%d')-[:connect{"from":"GigabitEthernet%d","to":"GigabitEthernet%d"}]->('tnode:c%d')`, i, from, to, todevice))
  175. if err != nil {
  176. logger.Errorf("%v", err)
  177. return
  178. }
  179. }
  180. }