test.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package test
  2. import (
  3. "scd_check_tools/conf"
  4. "scd_check_tools/email"
  5. "scd_check_tools/logger"
  6. "scd_check_tools/models/bo"
  7. "encoding/json"
  8. "fmt"
  9. "reflect"
  10. "regexp"
  11. "time"
  12. )
  13. //单元测试时使用的固定的用户token
  14. //在start时传入
  15. var UnitTestToken = ""
  16. //单元测试类
  17. type UnitTest struct {
  18. UserInfo map[string]interface{}
  19. }
  20. func Start(testtoken string) {
  21. //判断当前运行模式,仅当runmode为test时才启动所有的测试
  22. //启动时会执行该方法中所有的测试过程
  23. if conf.GlobalConfig["unittest"] != "true" {
  24. return
  25. }
  26. UnitTestToken = testtoken
  27. go func() {
  28. time.Sleep(10 * time.Second)
  29. t := new(UnitTest)
  30. logger.Logger.Println("******************正在进行单元测试********************")
  31. if t.UserInfo == nil {
  32. t.UserInfo = map[string]interface{}{"name": "单元测试", "ip": "127.0.0.1"}
  33. }
  34. typ := reflect.TypeOf(t)
  35. val := reflect.ValueOf(t) //获取reflect.Type类型
  36. numOfMethod := typ.NumMethod()
  37. logger.Logger.Println(fmt.Sprintf("需要进行的单元测试有%d个", numOfMethod))
  38. for i := 0; i < numOfMethod; i++ {
  39. val.Method(i).Call(nil)
  40. }
  41. }()
  42. }
  43. func (t *UnitTest) TestReg() {
  44. return
  45. xmlStr := `<LN0 lineno="211125" nodeid="4211127" desc="" inst="" lnClass="LLN0" lnType="AutoPrefix1532860310_SAC_PSIU600_LLN0" prefix="">`
  46. pattern := `( lineno="\d{1,}" nodeid="\d{1,}")|(&#xA;)|( ix="")|(<ext:eOption.*?>.*?</ext:eOption>)` //替换其中的lineno和nodeid属性
  47. reg := regexp.MustCompile(pattern)
  48. xmlStr = reg.ReplaceAllString(xmlStr, "")
  49. fmt.Println(xmlStr)
  50. }
  51. //测试邮件发送
  52. func (t *UnitTest) TestEmailSend() {
  53. return
  54. err := new(email.Send).SendEmail("3116246@qq.com", "测试", "这是邮件发送测试", []string{})
  55. if err != nil {
  56. logger.Logger.Error(err)
  57. } else {
  58. logger.Logger.Println("=====测试邮件已发送成功,请登录测试邮件确认!")
  59. }
  60. }
  61. //测试:根据告警等级统计结果
  62. func (t *UnitTest) GetRuleLevelCheckList() {
  63. return
  64. //appport := conf.GlobalConfig["appport"]
  65. //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model"
  66. //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url))
  67. //testResult, _ := tools.Get(url, UnitTestToken)
  68. //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult))
  69. testobj := new(bo.ScdNodeRule)
  70. testobj.ScdID = 16000007
  71. logger.Logger.Println(fmt.Sprintf("============正在测试[根据告警等级统计结果]方法,参数:"))
  72. result, err := testobj.ResultStatByLevel("", "", "", "", "")
  73. if err != nil {
  74. logger.Logger.Error(err)
  75. }
  76. resultStr, _ := json.Marshal(result)
  77. logger.Logger.Println(fmt.Sprintf("============[根据告警等级统计结果]测试结果:%+v", string(resultStr)))
  78. }
  79. //测试:获取规则校验统计结果
  80. func (t *UnitTest) GetRuleCheckList() {
  81. return
  82. //appport := conf.GlobalConfig["appport"]
  83. //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model"
  84. //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url))
  85. //testResult, _ := tools.Get(url, UnitTestToken)
  86. //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult))
  87. testobj := new(bo.ScdNodeRule)
  88. testobj.ScdID = 16000007
  89. logger.Logger.Println(fmt.Sprintf("============正在测试[获取规则校验统计结果]方法,参数:"))
  90. result, _, err := testobj.ResultList("", "", "", "", "", "", 1, 20)
  91. if err != nil {
  92. logger.Logger.Error(err)
  93. }
  94. resultStr, _ := json.Marshal(result)
  95. logger.Logger.Println(fmt.Sprintf("============[获取规则校验统计结果]测试结果:%+v", string(resultStr)))
  96. }