Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

subscription_test.go 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. package modules
  2. //
  3. //import (
  4. // "fmt"
  5. // _ "fmt"
  6. // "github.com/stretchr/testify/assert"
  7. // "math/rand"
  8. // "strconv"
  9. // "testing"
  10. // "time"
  11. //)
  12. //
  13. //func makeData(IsAlpha bool) MsgUnit{
  14. // rand.Seed(time.Now().UnixNano())
  15. // // Set Ipaddr
  16. // msg := Message{"", "1.0", "", SM}
  17. // for i := 0; i < 4; i++{
  18. // itoa := strconv.Itoa(rand.Int() % 256)
  19. // msg.from += itoa
  20. // if i != 3{
  21. // msg.from += "."
  22. // }
  23. // }
  24. //
  25. // // Set Time
  26. // msg.time += strconv.Itoa(rand.Int()%24) + ":"
  27. // msg.time += strconv.Itoa(rand.Int()%60)
  28. //
  29. // // Set Topic, Value, Operator
  30. // Topic := []int64{}
  31. // Value := []int64{}
  32. // Operator := []string{}
  33. // candOp := []string{">", ">=", "<=" ,"<", "=="}
  34. // logicalOp := []string{"&&", "||"}
  35. //
  36. // if IsAlpha {
  37. // topicLen := rand.Int() % 10 + 1
  38. // for i := 0 ; i < topicLen; i++{
  39. // Topic = append(Topic, rand.Int63())
  40. // }
  41. //
  42. // valueLen := rand.Int() % 10 + 1
  43. // for i := 0 ; i < valueLen; i++{
  44. // Value = append(Value, rand.Int63())
  45. // }
  46. //
  47. // Operator = append(Operator, "==")
  48. //
  49. // } else{
  50. // valueLen := rand.Int() % 2 + 1
  51. //
  52. // Topic = append(Topic, rand.Int63())
  53. // Value = append(Value, rand.Int63())
  54. //
  55. // if valueLen == 1{
  56. // Operator = append(Operator, candOp[rand.Int()%5])
  57. // } else{
  58. // Value = append(Value, rand.Int63())
  59. // op := rand.Int()%2
  60. // Operator = append(Operator, candOp[rand.Int()%2])
  61. // if op == 0 {
  62. // Operator = append(Operator, logicalOp[0])
  63. // } else{
  64. // Operator = append(Operator, logicalOp[1])
  65. // }
  66. // Operator = append(Operator, candOp[rand.Int()%2 + 2])
  67. // }
  68. // }
  69. //
  70. // return &SubscriptionMsg{msg, Topic, Value, Operator, IsAlpha}
  71. //}
  72. //
  73. //func makeMsgList(dataLen int, IsAlpha bool) []MsgUnit{
  74. // rand.Seed(time.Now().UnixNano())
  75. // var ret []MsgUnit
  76. // for i := 0 ; i < dataLen ; i++{
  77. // ret = append(ret, makeData(IsAlpha))
  78. // }
  79. // return ret
  80. //}
  81. //
  82. //func checkOperatorList(isSingle bool, sub int, Operator string, l *valueNode) int{
  83. // ret := -1
  84. // if isSingle{
  85. // switch Operator {
  86. // case "<":
  87. // ret = findSub(l.single2sub_s, sub)
  88. // case "<=":
  89. // ret = findSub(l.single2sub_es, sub)
  90. // case ">":
  91. // ret = findSub(l.single2sub_b, sub)
  92. // case ">=":
  93. // ret = findSub(l.single2sub_eb, sub)
  94. // case "==":
  95. // ret = findSub(l.single2sub_e, sub)
  96. // }
  97. //
  98. // } else{
  99. // switch Operator {
  100. // case "<":
  101. // ret = findSub(l.range2sub_s, sub)
  102. // case "<=":
  103. // ret = findSub(l.range2sub_es, sub)
  104. // case ">":
  105. // ret = findSub(l.range2sub_b, sub)
  106. // case ">=":
  107. // ret = findSub(l.range2sub_eb, sub)
  108. // }
  109. // }
  110. // return ret
  111. //}
  112. //
  113. //func watchData(msgList []MsgUnit, dataLen int, isSubscription bool){
  114. // for i := 0; i < dataLen; i++{
  115. // msg := msgList[i]
  116. // if isSubscription {
  117. // fmt.Println(
  118. // "\nfrom = ", msg.(*SubscriptionMsg).Message.from,
  119. // "\ntime = ", msg.(*SubscriptionMsg).Message.time,
  120. // "\nTopic = ", msg.(*SubscriptionMsg).Topic,
  121. // "\nValue = ", msg.(*SubscriptionMsg).Value,
  122. // "\nOperator = ", msg.(*SubscriptionMsg).Operator,
  123. // "\nIsAlpha ?= ", msg.(*SubscriptionMsg).IsAlpha,
  124. // )
  125. // } else{
  126. // fmt.Println(
  127. // "\nfrom = ", msg.(*PublishMsg).Message.from,
  128. // "\ntime = ", msg.(*PublishMsg).Message.time,
  129. // "\nTopic = ", msg.(*PublishMsg).Topic,
  130. // "\nValue = ", msg.(*PublishMsg).Value,
  131. // )
  132. // }
  133. // }
  134. //}
  135. //
  136. ////Test addSubScription(1) (dif all [Topic, Value, Operator])
  137. //func Test_addSubscription_allDif(t *testing.T) {
  138. // rand.Seed(time.Now().UnixNano())
  139. //
  140. // // To Init sub_mng
  141. // mos := Moscato{sub_mng: *newSubmng()}
  142. //
  143. // // Make Data set(Subscription)
  144. // var msgList []MsgUnit
  145. // dataLen := 100
  146. // msgList = makeMsgList(dataLen, false)
  147. //
  148. // //Watch Data set
  149. // //watchData(msgList, dataLen, true)
  150. //
  151. // for i := 0; i < dataLen; i++ {
  152. // msg := msgList[i]
  153. // ip := msg.(*SubscriptionMsg).Message.from
  154. // Topic := msg.(*SubscriptionMsg).Topic
  155. // Value := msg.(*SubscriptionMsg).Value
  156. // Operator := msg.(*SubscriptionMsg).Operator
  157. // subnumber := mos.sub_mng.count_sub
  158. // isSingle := true
  159. //
  160. // // 0. Check addSubscription
  161. // err := mos.sub_mng.addSubscription(msg)
  162. // assert.Equal(t, nil, err)
  163. //
  164. // // 1. Check if ip mapping is correct
  165. // assert.Equal(t, subnumber, mos.sub_mng.ip2sub[ip][len(mos.sub_mng.ip2sub[ip])-1], "Ip mapping is failed")
  166. //
  167. // // 2. Check topicNode
  168. // topicPtr := mos.sub_mng.list.head
  169. // for topicPtr != nil {
  170. // if Compare(Topic, topicPtr.Topic) == 0 {
  171. // break
  172. // }
  173. // topicPtr = topicPtr.next
  174. // }
  175. //
  176. // assert.Equal(t, Topic, topicPtr.Topic, "topicNode Add is failed")
  177. //
  178. // // Check isSingle ?
  179. // if len(Operator) == 3 && Operator[1] == "&&" {
  180. // isSingle = false
  181. // }
  182. //
  183. // // 3. Check Value in ValueNode & Check Operator in ValueNode
  184. // if !isSingle || (len(Operator) == 3 && Operator[1] == "||") {
  185. // valptr1 := topicPtr.list.getValueNodePos([]int64{Value[0]})
  186. // valptr2 := topicPtr.list.getValueNodePos([]int64{Value[1]})
  187. //
  188. // assert.Equal(t, []int64{Value[0]}, valptr1.val)
  189. // assert.Equal(t, []int64{Value[1]}, valptr2.val)
  190. //
  191. // assert.NotEqual(t, -1, checkOperatorList(isSingle, subnumber, Operator[0], valptr1))
  192. // assert.NotEqual(t, -1, checkOperatorList(isSingle, subnumber, Operator[2], valptr2))
  193. //
  194. // } else {
  195. // valptr := topicPtr.list.getValueNodePos(Value)
  196. // assert.Equal(t, Value, valptr.val)
  197. // assert.NotEqual(t, -1, checkOperatorList(isSingle, subnumber, Operator[0], valptr))
  198. // }
  199. // }
  200. //}
  201. //
  202. //// Test addSubScription(2) (same [Topic, Value] dif [Operator])
  203. //func Test_addSubscription_same_topicNvalue(t *testing.T) {
  204. // rand.Seed(time.Now().UnixNano())
  205. //
  206. // // To Init sub_mng
  207. // mos := Moscato{sub_mng: *newSubmng()}
  208. //
  209. // // Fix Topic & Value
  210. // topicLen := rand.Int()%10 + 1
  211. // staticTopic := make([]int64, topicLen)
  212. // staticValue := []int64{rand.Int63()}
  213. //
  214. //
  215. // // Make Data
  216. // var msgList []MsgUnit
  217. // dataLen := 100
  218. // msgList = makeMsgList(dataLen, false)
  219. //
  220. // for i := 0; i < topicLen; i++ {
  221. // staticTopic[i] = rand.Int63()
  222. // }
  223. //
  224. // // Fix Same Topic & Value
  225. // for i := 0; i < dataLen; i++ {
  226. // Operator := msgList[i].(*SubscriptionMsg).Operator
  227. // msgList[i].(*SubscriptionMsg).Topic = staticTopic
  228. //
  229. // if len(Operator) == 1{
  230. // msgList[i].(*SubscriptionMsg).Value = staticValue
  231. // }
  232. // }
  233. //
  234. // // Watch Data set
  235. // //watchData(msgList, dataLen, true)
  236. //
  237. // for i := 0; i < dataLen; i++ {
  238. // msg := msgList[i]
  239. // err := mos.sub_mng.addSubscription(msg)
  240. // assert.Equal(t, nil, err)
  241. // }
  242. //
  243. // topicPtr := mos.sub_mng.list.head
  244. // for topicPtr != nil {
  245. // if Compare(topicPtr.Topic, staticTopic) == 0 {
  246. // break
  247. // }
  248. // topicPtr = topicPtr.next
  249. // }
  250. // watchValueNode(topicPtr.list.head)
  251. //
  252. //}
  253. //
  254. //func watchValueNode(ptr *valueNode) {
  255. // valPtr := ptr
  256. // for valPtr != nil{
  257. // fmt.Println("Value = ", valPtr.val)
  258. // if len(valPtr.single2sub_s) != 0 {
  259. // fmt.Println("Single2sub (<) List = ", valPtr.single2sub_s)
  260. // }
  261. // if len(valPtr.single2sub_es) != 0 {
  262. // fmt.Println("Single2sub (<=) List = ", valPtr.single2sub_es)
  263. // }
  264. // if len(valPtr.single2sub_b) != 0 {
  265. // fmt.Println("Single2sub (>) List = ", valPtr.single2sub_b)
  266. // }
  267. // if len(valPtr.single2sub_eb) != 0 {
  268. // fmt.Println("Single2sub (>=) List = ", valPtr.single2sub_eb)
  269. // }
  270. // if len(valPtr.single2sub_e) != 0 {
  271. // fmt.Println("Single2sub (==) List = ", valPtr.single2sub_e)
  272. // }
  273. //
  274. // if len(valPtr.range2sub_s) != 0 {
  275. // fmt.Println("range2sub (<) List = ", valPtr.range2sub_s)
  276. // }
  277. // if len(valPtr.range2sub_es) != 0 {
  278. // fmt.Println("range2sub (<=) List = ", valPtr.range2sub_es)
  279. // }
  280. // if len(valPtr.range2sub_b) != 0 {
  281. // fmt.Println("range2sub (>) List = ", valPtr.range2sub_b)
  282. // }
  283. // if len(valPtr.range2sub_eb) != 0 {
  284. // fmt.Println("range2sub (>=) List = ", valPtr.range2sub_eb)
  285. // }
  286. // valPtr = valPtr.next
  287. // }
  288. //}