| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- package page_module
- import (
- "net/http"
- "os"
- "testing"
- "time"
- "github.com/gofiber/fiber/v3"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
- )
- type tester struct {
- t *testing.T
- ctx IKernelCtx
- serv IKernelServerHttp
- page *PageModule
- }
- func TestPageMonolit(t *testing.T) {
- sf := &tester{
- t: t,
- ctx: kctx.GetKernelCtx(),
- }
- sf.new()
- sf.postModule()
- sf.postMonolitCtx()
- sf.postModuleLog()
- sf.postModule1()
- sf.postMonolitCtx()
- sf.postModuleLog()
- sf.postModuleState()
- sf.postModuleStateBad()
- sf.postSvgSecGood1()
- sf.postSvgSecBad1()
- sf.postSvgMinGood1()
- sf.postSvgMinBad1()
- sf.postSvgDayGood1()
- sf.postSvgDayBad1()
- sf.done()
- }
- // Получение SVG, модуля 20 не существует.
- func (sf *tester) postSvgDayBad1() {
- sf.t.Log("postSvgDayBad1")
- // mon := kmonolit.GetMonolit("test_monolit").Hassert("postSvgDayBad1()")
- // ctxMon := mon.Ctx()
- // module := kmodule.NewKernelModule("kCtx").Hassert("postSvgDayBad1()")
- // module.Log().Debug("test msg")
- // ctxMod := module.Ctx()
- // ctxMod.Set("demo_key", "demo value", "for demo comment").Hassert("postSvgDayBad1()")
- // time.Sleep(time.Millisecond * 20)
- // ctxMon.Set("module_1", module, "test_module").Hassert("postSvgDayBad1()")
- // fiberApp := sf.serv.Fiber()
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_day/svg_day_20.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgDayBad1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgDayBad1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgDayBad1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Получение SVG.
- func (sf *tester) postSvgDayGood1() {
- sf.t.Log("postSvgDayGood1")
- fiberApp := sf.comSvgPost()
- // mon := kmonolit.GetMonolit("test_monolit").Hassert("postSvgDayGood1()")
- // ctxMon := mon.Ctx()
- // module := kmodule.NewKernelModule("kCtx").Hassert("postSvgDayGood1()")
- // module.Log().Debug("test msg")
- // ctxMod := module.Ctx()
- // ctxMod.Set("demo_key", "demo value", "for demo comment").
- // Hassert("postSvgDayGood1()")
- // time.Sleep(time.Millisecond * 20)
- // ctxMon.Set("module_1", module, "test_module").Hassert("postSvgDayGood1()")
- // fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_day/svg_day_1.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgDayGood1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgDayGood1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgDayGood1(): status(%v)!=200", resp.StatusCode)
- }
- }
- func (sf *tester) comSvgPost() *fiber.App {
- sf.t.Log("comSvgPost")
- mon := kmonolit.GetMonolit("test_monolit")
- ctxMon := mon.Ctx()
- modName := defs.NewModuleName("kCtx")
- kMod := kmodule.NewKernelModule(modName)
- kMod.Log().Debug("test msg")
- ctxMod := kMod.Ctx()
- ctxMod.Set("demo_key", "demo value", "for demo comment")
- time.Sleep(time.Millisecond * 20)
- ctxMon.Set("module_1", kMod, "test_module")
- fiberApp := sf.serv.Fiber()
- return fiberApp
- }
- // Получение SVG, модуля 20 не существует.
- func (sf *tester) postSvgMinBad1() {
- sf.t.Log("postSvgMinBad1")
- sf.comSvgPost()
- mon := kmonolit.GetMonolit("test_monolit")
- ctxMon := mon.Ctx()
- modName := defs.NewModuleName("kCtx")
- kMod := kmodule.NewKernelModule(modName)
- kMod.Log().Debug("test msg")
- ctxMod := kMod.Ctx()
- ctxMod.Set("demo_key", "demo value", "for demo comment")
- time.Sleep(time.Millisecond * 20)
- ctxMon.Set("module_1", kMod, "test_module")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_min/svg_min_20.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgMinBad1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgMinBad1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgMinBad1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Получение SVG.
- func (sf *tester) postSvgMinGood1() {
- sf.t.Log("postSvgMinGood1")
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_min/svg_min_1.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgMinGood1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgMinGood1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgMinGood1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Получение SVG, модуля 20 не существует.
- func (sf *tester) postSvgSecBad1() {
- sf.t.Log("postSvgSecBad1")
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_sec/svg_sec_20.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgSecBad1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgSecBad1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgSecBad1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Получение SVG.
- func (sf *tester) postSvgSecGood1() {
- sf.t.Log("postSvgSecGood1")
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_svg_sec/svg_sec_1.svg", nil)
- if err != nil {
- sf.t.Fatalf("postSvgSecGood1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postSvgSecGood1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postSvgSecGood1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Модуля 20 не существует.
- func (sf *tester) postModuleStateBad() {
- sf.t.Log("postModuleStateBad")
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_state/20", nil)
- if err != nil {
- sf.t.Fatalf("postModuleStateBad(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postModuleStateBad(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postModuleStateBad(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Возвращает состояние модуля 1 (теперь добавлен).
- func (sf *tester) postModuleState() {
- sf.t.Log("postModuleState")
- fiberApp := sf.comSvgPost()
- req, err := http.NewRequest(http.MethodPost, "/module_state/1", nil)
- if err != nil {
- sf.t.Fatalf("postModuleState(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postModuleState(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postModuleState(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Возвращает состояние модуля 1 (теперь добавлен).
- func (sf *tester) postModule1() {
- sf.t.Log("postModule1")
- mon := kmonolit.GetMonolit("test_monolit")
- ctxMon := mon.Ctx()
- modName := defs.NewModuleName("kCtx")
- module := kmodule.NewKernelModule(modName)
- module.Log().Debug("test msg")
- module.Log().Debug("test msg")
- ctxMod := module.Ctx()
- ctxMod.Set("demo_key", "demo value", "for demo comment")
- time.Sleep(time.Millisecond * 20)
- ctxMon.Set("module_1", module, "test_module")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module/1", nil)
- if err != nil {
- sf.t.Fatalf("postModule1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postModule1(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postModule1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Возвращает состояние лога модуля.
- func (sf *tester) postModuleLog() {
- sf.t.Log("postModuleLog")
- monCtx := sf.ctx.Get("monolit").Hassert("postModuleLog()")
- mon := monCtx.Val().(IKernelMonolit)
- log := mon.Log()
- log.Debug("test msg")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module_log/1", nil)
- if err != nil {
- sf.t.Fatalf("postModuleLog(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postModuleLog(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postModuleLog(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Возвращает состояние контекста модуля.
- func (sf *tester) postMonolitCtx() {
- sf.t.Log("postMonolitCtx")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module_ctx/1", nil)
- if err != nil {
- sf.t.Fatalf("postMonolitCtx(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postMonolitCtx(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postMonolitCtx(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Возвращает состояние модуля.
- func (sf *tester) postModule() {
- sf.t.Log("postModule")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest(http.MethodPost, "/module/1", nil)
- if err != nil {
- sf.t.Fatalf("postModule(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("postModule(): in make POST, err=%v", err)
- }
- defer func() {
- _ = resp.Body.Close()
- }()
- if resp.StatusCode != http.StatusOK {
- sf.t.Fatalf("postModule(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Освобождает ресурсы.
- func (sf *tester) done() {
- sf.t.Log("done")
- sf.ctx.Cancel()
- sf.ctx.Wg().Wait()
- }
- // Создаёт новую страницу модуля.
- func (sf *tester) new() {
- sf.t.Log("new")
- _ = mock_env.MakeEnv()
- _ = os.Unsetenv("LOCAL_HTTP_URL")
- _ = os.Setenv("LOCAL_HTTP_URL", "http://localhost:18322/")
- sf.ctx.Set("isLocal", true, "testing")
- _ = kmonolit.GetMonolit("test_monolit")
- sf.serv = kserv_http.GetKernelServHttp()
- sf.page = GetPageModule().Hassert("new()")
- if sf.page == nil {
- sf.t.Fatalf("new(): page==nil")
- }
- _ = GetPageModule()
- go sf.serv.Run()
- }
|