page_monolit_test.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package page_monolit
  2. import (
  3. "net/http"
  4. "os"
  5. "testing"
  6. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  7. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
  12. )
  13. type tester struct {
  14. t *testing.T
  15. ctx IKernelCtx
  16. serv IKernelServerHttp
  17. page *PageMonolit
  18. }
  19. func TestPageMonolit(t *testing.T) {
  20. sf := &tester{
  21. t: t,
  22. ctx: kctx.GetKernelCtx(),
  23. }
  24. sf.new()
  25. sf.getMonolit()
  26. sf.postMonolitState()
  27. sf.postMonolitCtx()
  28. sf.postMonolitLog()
  29. sf.done()
  30. }
  31. // Возвращает состояние лога монолита.
  32. func (sf *tester) postMonolitLog() {
  33. sf.t.Log("postMonolitCtx")
  34. mon := sf.ctx.Get("monolit").
  35. Hassert("postMonolitLog()").
  36. Val().(IKernelMonolit)
  37. log := mon.Log()
  38. log.Debug("test msg")
  39. fiberApp := sf.serv.Fiber()
  40. req, err := http.NewRequest(http.MethodPost, "/monolit_log", nil)
  41. if err != nil {
  42. sf.t.Fatalf("postMonolitLog(): in net request, err=%v", err)
  43. }
  44. resp, err := fiberApp.Test(req)
  45. if err != nil {
  46. sf.t.Fatalf("postMonolitLog(): in make POST, err=%v", err)
  47. }
  48. defer func() {
  49. _ = resp.Body.Close()
  50. }()
  51. if resp.StatusCode != http.StatusOK {
  52. sf.t.Fatalf("postMonolitLog(): status(%v)!=200", resp.StatusCode)
  53. }
  54. }
  55. // Возвращает состояние контекста монолита.
  56. func (sf *tester) postMonolitCtx() {
  57. sf.t.Log("postMonolitCtx")
  58. fiberApp := sf.serv.Fiber()
  59. req, err := http.NewRequest(http.MethodPost, "/monolit_ctx", nil)
  60. if err != nil {
  61. sf.t.Fatalf("postMonolitCtx(): in net request, err=%v", err)
  62. }
  63. resp, err := fiberApp.Test(req)
  64. if err != nil {
  65. sf.t.Fatalf("postMonolitCtx(): in make POST, err=%v", err)
  66. }
  67. defer func() {
  68. _ = resp.Body.Close()
  69. }()
  70. if resp.StatusCode != http.StatusOK {
  71. sf.t.Fatalf("postMonolitCtx(): status(%v)!=200", resp.StatusCode)
  72. }
  73. }
  74. // Возвращает состояние монолита.
  75. func (sf *tester) postMonolitState() {
  76. sf.t.Log("postMonolitState")
  77. fiberApp := sf.serv.Fiber()
  78. req, err := http.NewRequest("http.MethodPost", "/monolit_state", nil)
  79. if err != nil {
  80. sf.t.Fatalf("postMonolitState(): in net request, err=%v", err)
  81. }
  82. resp, err := fiberApp.Test(req)
  83. if err != nil {
  84. sf.t.Fatalf("postMonolitState(): in make POST, err=%v", err)
  85. }
  86. defer func() {
  87. _ = resp.Body.Close()
  88. }()
  89. if resp.StatusCode != http.StatusOK {
  90. sf.t.Fatalf("postMonolitState(): status(%v)!=200", resp.StatusCode)
  91. }
  92. }
  93. // Возвращает главную страницу монолита.
  94. func (sf *tester) getMonolit() {
  95. sf.t.Log("getMonolit")
  96. fiberApp := sf.serv.Fiber()
  97. req, err := http.NewRequest(http.MethodGet, "/monolit", nil)
  98. if err != nil {
  99. sf.t.Fatalf("getMonolit(): in net request, err=%v", err)
  100. }
  101. resp, err := fiberApp.Test(req)
  102. if err != nil {
  103. sf.t.Fatalf("getMonolit(): in make GET, err=%v", err)
  104. }
  105. defer func() {
  106. _ = resp.Body.Close()
  107. }()
  108. if resp.StatusCode != http.StatusOK {
  109. sf.t.Fatalf("getMonolit(): status(%v)!=200", resp.StatusCode)
  110. }
  111. }
  112. // Освобождает ресурсы.
  113. func (sf *tester) done() {
  114. sf.t.Log("done")
  115. sf.page.clickMonolit()
  116. sf.ctx.Cancel()
  117. sf.ctx.Wg().Wait()
  118. }
  119. // Создаёт новую страницу монолита.
  120. func (sf *tester) new() {
  121. sf.t.Log("new")
  122. _ = mock_env.MakeEnv()
  123. _ = os.Unsetenv("LOCAL_HTTP_URL")
  124. _ = os.Setenv("LOCAL_HTTP_URL", "http://localhost:18310/")
  125. sf.ctx.Set("isLocal", true, "testing")
  126. for {
  127. SleepMs()
  128. if sf.ctx.Get("isLocal") != nil {
  129. break
  130. }
  131. }
  132. _ = kmonolit.GetMonolit("test_monolit")
  133. sf.serv = kserv_http.GetKernelServHttp()
  134. sf.page = GetPageMonolit()
  135. if sf.page == nil {
  136. sf.t.Fatalf("new(): page==nil")
  137. }
  138. _ = GetPageMonolit()
  139. go sf.serv.Run()
  140. }