sinkMeta_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package plugins
  2. import (
  3. "github.com/emqx/kuiper/xstream/api"
  4. "testing"
  5. )
  6. func TestHintWhenModifySink(t *testing.T) {
  7. taosMeta := &sinkMeta{
  8. Fields: []*field{
  9. {
  10. Name: "ip",
  11. Default: "911.911.911.911",
  12. },
  13. },
  14. }
  15. opMeta := &sinkMeta{
  16. Fields: []*field{
  17. {
  18. Name: "isEventTime",
  19. Default: false,
  20. },
  21. },
  22. }
  23. baseMeta := &sinkMeta{
  24. Fields: []*field{
  25. {
  26. Name: "bufferLength",
  27. Default: 911,
  28. },
  29. },
  30. }
  31. g_sinkMetadata = make(map[string]*sinkMeta)
  32. g_sinkMetadata["taos.json"] = taosMeta
  33. g_sinkMetadata["properties.json"] = baseMeta
  34. g_sinkMetadata["options.json"] = opMeta
  35. newSink := &sinkProperty{
  36. CustomProperty: map[string]*sinkPropertyNode{
  37. "taos": &sinkPropertyNode{
  38. Fields: []*hintField{
  39. {
  40. Name: "ip",
  41. Default: "114.114.114.114",
  42. },
  43. },
  44. },
  45. },
  46. BaseProperty: map[string]*sinkPropertyNode{
  47. "taos": &sinkPropertyNode{
  48. Fields: []*hintField{
  49. {
  50. Name: "bufferLength",
  51. Default: 1024,
  52. },
  53. },
  54. },
  55. },
  56. BaseOption: &sinkPropertyNode{
  57. Fields: []*hintField{
  58. {
  59. Name: "isEventTime",
  60. Default: true,
  61. },
  62. },
  63. },
  64. }
  65. rule := &api.Rule{
  66. Actions: []map[string]interface{}{
  67. {
  68. "taos": map[string]interface{}{
  69. "ip": "114.114.114.114",
  70. "bufferLength": 1024,
  71. },
  72. },
  73. },
  74. Options: &api.RuleOption{
  75. IsEventTime: true,
  76. },
  77. }
  78. oldSink := new(sinkProperty)
  79. err := oldSink.hintWhenNewSink("taos")
  80. if nil != err {
  81. t.Error(err)
  82. }
  83. if false != oldSink.BaseOption.Fields[0].Default {
  84. t.Errorf("fail")
  85. }
  86. if 911 != oldSink.BaseProperty["taos"].Fields[0].Default {
  87. t.Errorf("fail")
  88. }
  89. if "911.911.911.911" != oldSink.CustomProperty["taos"].Fields[0].Default {
  90. t.Errorf("fail")
  91. }
  92. err = oldSink.hintWhenModifySink(rule)
  93. if nil != err {
  94. t.Error(err)
  95. }
  96. if oldSink.BaseOption.Fields[0].Default != newSink.BaseOption.Fields[0].Default {
  97. t.Errorf("fail")
  98. }
  99. if oldSink.BaseProperty["taos"].Fields[0].Default != newSink.BaseProperty["taos"].Fields[0].Default {
  100. t.Errorf("fail")
  101. }
  102. if oldSink.CustomProperty["taos"].Fields[0].Default != newSink.CustomProperty["taos"].Fields[0].Default {
  103. t.Errorf("fail")
  104. }
  105. }