kernel_serv_http_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package kernel_serv_http
  2. import (
  3. "testing"
  4. "time"
  5. "wartank/kernel/internal/kernel_ctx"
  6. . "wartank/kernel/kernel_types"
  7. "wartank/pkg/mock/mock_env"
  8. )
  9. type tester struct {
  10. t *testing.T
  11. ctx ИЯдроКонтекст
  12. wg IKernelWg
  13. me *mock_env.МокОкружение
  14. }
  15. func TestKernelServHttp(t *testing.T) {
  16. ctx := kernel_ctx.ПолучЯдроКонтекст()
  17. sf := &tester{
  18. t: t,
  19. ctx: ctx,
  20. wg: ctx.Оп(),
  21. }
  22. sf.new()
  23. sf.close()
  24. }
  25. // Закрытие HTTP-сервера
  26. func (sf *tester) close() {
  27. sf.t.Log("close")
  28. sf.ctx.Отменить()
  29. sf.ctx.Ждать()
  30. kernServHttp.close()
  31. }
  32. // Создание сервера HTTP
  33. func (sf *tester) new() {
  34. sf.t.Log("new()")
  35. sf.newBad1()
  36. sf.newBad2()
  37. sf.newGood1()
  38. sf.newBad3()
  39. }
  40. // Повторный запуск сервера на том же порту
  41. func (sf *tester) newBad3() {
  42. sf.t.Log("newBad3()")
  43. ctx := kernel_ctx.ПолучЯдроКонтекст()
  44. serv := GetKernelServHttp(ctx)
  45. go serv.Run()
  46. time.Sleep(time.Millisecond * 20)
  47. }
  48. func (sf *tester) newGood1() {
  49. sf.t.Log("newGood1()")
  50. defer func() {
  51. if _panic := recover(); _panic != nil {
  52. sf.t.Fatalf("newGood1(): panic=%v", _panic)
  53. }
  54. }()
  55. sf.me = mock_env.СделатьОкружение()
  56. serv := GetKernelServHttp(sf.ctx)
  57. if serv != kernServHttp {
  58. sf.t.Fatalf("newGood1(): bad IKernelServHttp")
  59. }
  60. if webFiber := serv.Fiber(); webFiber != kernServHttp.fiberApp {
  61. sf.t.Fatalf("newGood1(): webFiber==serv.appFiber")
  62. }
  63. go serv.Run()
  64. }
  65. // Не указана SERVER_HTTP_PORT
  66. func (sf *tester) newBad2() {
  67. sf.t.Log("newBad2()")
  68. defer func() {
  69. if _panic := recover(); _panic == nil {
  70. sf.t.Fatalf("newBad2(): panic==nil")
  71. }
  72. }()
  73. _ = GetKernelServHttp(sf.ctx)
  74. }
  75. // Нет контекста ядра
  76. func (sf *tester) newBad1() {
  77. sf.t.Log("newBad1()")
  78. defer func() {
  79. if _panic := recover(); _panic == nil {
  80. sf.t.Fatalf("newBad1(): panic==nil")
  81. }
  82. }()
  83. var ctx ИЯдроКонтекст
  84. _ = GetKernelServHttp(ctx)
  85. }