page_modules_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package page_modules
  2. import (
  3. "net/http"
  4. "os"
  5. "testing"
  6. "time"
  7. "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
  8. "gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
  9. "gitp78su.ipnodns.ru/svi/kern/krn/kmonolit"
  10. "gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
  11. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  12. "gitp78su.ipnodns.ru/svi/kern/mock/mock_env"
  13. )
  14. type tester struct {
  15. t *testing.T
  16. ctx IKernelCtx
  17. serv IKernelServerHttp
  18. page *PageModules
  19. }
  20. func TestPageMonolit(t *testing.T) {
  21. sf := &tester{
  22. t: t,
  23. ctx: kctx.GetKernelCtx(),
  24. }
  25. sf.new()
  26. sf.postModulesState()
  27. sf.postModulesState1()
  28. sf.done()
  29. }
  30. // Возвращает состояние модуля 1 (теперь добавлен)
  31. func (sf *tester) postModulesState1() {
  32. sf.t.Log("postModulesState1")
  33. mon := kmonolit.GetMonolit("test_monolit")
  34. ctxMon := mon.Ctx()
  35. module := kmodule.NewKernelModule("test_module")
  36. module.Log().Debug("test msg")
  37. module.Log().Debug("test msg")
  38. ctxMod := module.Ctx()
  39. ctxMod.Set("demo_key", "demo value", "for demo comment")
  40. time.Sleep(time.Millisecond * 20)
  41. ctxMon.Set("module_1", module, "test_module")
  42. fiberApp := sf.serv.Fiber()
  43. req, err := http.NewRequest("POST", "/modules", nil)
  44. if err != nil {
  45. sf.t.Fatalf("postModulesState1(): in net request, err=%v", err)
  46. }
  47. resp, err := fiberApp.Test(req)
  48. if err != nil {
  49. sf.t.Fatalf("postModulesState1(): in make POST, err=%v", err)
  50. }
  51. if resp.StatusCode != 200 {
  52. sf.t.Fatalf("postModulesState1(): status(%v)!=200", resp.StatusCode)
  53. }
  54. }
  55. // Возвращает состояние модуля
  56. func (sf *tester) postModulesState() {
  57. sf.t.Log("postModulesState")
  58. fiberApp := sf.serv.Fiber()
  59. req, err := http.NewRequest("POST", "/modules", nil)
  60. if err != nil {
  61. sf.t.Fatalf("postModulesState(): in net request, err=%v", err)
  62. }
  63. resp, err := fiberApp.Test(req)
  64. if err != nil {
  65. sf.t.Fatalf("postModulesState(): in make POST, err=%v", err)
  66. }
  67. if resp.StatusCode != 200 {
  68. sf.t.Fatalf("postModulesState(): status(%v)!=200", resp.StatusCode)
  69. }
  70. }
  71. // Освобождает ресурсы
  72. func (sf *tester) done() {
  73. sf.t.Log("done")
  74. sf.ctx.Cancel()
  75. sf.ctx.Wg().Wait()
  76. }
  77. // Создаёт новую страницу модуля
  78. func (sf *tester) new() {
  79. sf.t.Log("new")
  80. _ = mock_env.MakeEnv()
  81. _ = os.Unsetenv("LOCAL_HTTP_URL")
  82. os.Setenv("LOCAL_HTTP_URL", "http://localhost:18315/")
  83. sf.ctx.Set("isLocal", true, "testing")
  84. _ = kmonolit.GetMonolit("test_monolit")
  85. sf.serv = kserv_http.GetKernelServHttp()
  86. sf.page = GetPageModules()
  87. if sf.page == nil {
  88. sf.t.Fatalf("new(): page==nil")
  89. }
  90. _ = GetPageModules()
  91. go sf.serv.Run()
  92. }