kserv_http_test.go 2.3 KB

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