kserv_http_test.go 2.4 KB

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