kserv_http_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package kserv_http
  2. import (
  3. "os"
  4. "testing"
  5. "time"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
  10. )
  11. const (
  12. baseUrl = "http://localhost:18400/"
  13. )
  14. type tester struct {
  15. t *testing.T
  16. kCtx kspec.IKernelCtx
  17. wg kspec.IKernelWg
  18. me *mock_env.MockEnv
  19. }
  20. func TestKernelServHttp(t *testing.T) {
  21. kCtx := kctx.GetKernelCtx()
  22. sf := &tester{
  23. t: t,
  24. kCtx: kCtx,
  25. wg: kCtx.Wg(),
  26. }
  27. sf.new()
  28. sf.close()
  29. }
  30. // Закрытие HTTP-сервера.
  31. func (sf *tester) close() {
  32. sf.t.Log("close")
  33. sf.kCtx.Cancel()
  34. sf.wg.Wait()
  35. kernServHttp.close()
  36. if kernServHttp.IsWork().IsOk() {
  37. sf.t.Fatalf("close(): isWork==true")
  38. }
  39. kernServHttp.Run()
  40. chErr := make(chan defs.IErr, 2)
  41. chErr <- defs.NewErr("test err")
  42. close(chErr)
  43. kernServHttp.fnChErr(chErr)
  44. }
  45. // Создание сервера HTTP.
  46. func (sf *tester) new() {
  47. sf.t.Log("new()")
  48. sf.newBad1()
  49. sf.newBad2()
  50. sf.newGood1()
  51. sf.newBad3()
  52. }
  53. // Повторный запуск сервера на том же порту.
  54. func (sf *tester) newBad3() {
  55. sf.t.Log("newBad3()")
  56. serv := GetKernelServHttp()
  57. go serv.Run()
  58. count := 0
  59. for count < 20 {
  60. time.Sleep(time.Millisecond * 1)
  61. count++
  62. }
  63. }
  64. func (sf *tester) newGood1() {
  65. sf.t.Log("newGood1()")
  66. defer func() {
  67. if _panic := recover(); _panic != nil {
  68. sf.t.Fatalf("newGood1(): panic=%v", _panic)
  69. }
  70. }()
  71. sf.me = mock_env.MakeEnv()
  72. _ = os.Unsetenv("LOCAL_HTTP_URL")
  73. _ = os.Setenv("LOCAL_HTTP_URL", baseUrl)
  74. sf.kCtx.Set(defs.Str("monolitName"), "test_monolit", defs.Str("comment"))
  75. serv := GetKernelServHttp().(*kServHttp)
  76. if serv != kernServHttp {
  77. sf.t.Fatalf("newGood1(): bad IKernelServHttp")
  78. }
  79. if webFiber := serv.Fiber(); webFiber != kernServHttp.fiberApp {
  80. sf.t.Fatalf("newGood1(): webFiber==serv.appFiber")
  81. }
  82. if log := serv.Log(); log == nil {
  83. sf.t.Fatalf("newGood1(): log==nil")
  84. }
  85. // go serv.Run()
  86. // count := 0
  87. // for count < 50 {
  88. // SleepMs()
  89. // count++
  90. // }
  91. serv.Run()
  92. }
  93. // Не указана SERVER_HTTP_PORT.
  94. func (sf *tester) newBad2() {
  95. sf.t.Log("newBad2()")
  96. _ = GetKernelServHttp()
  97. }
  98. // Нет контекста ядра.
  99. func (sf *tester) newBad1() {
  100. sf.t.Log("newBad1()")
  101. _ = GetKernelServHttp()
  102. }