package kserv_http import ( "os" "testing" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx" ) const ( baseUrl = "http://localhost:18400/" ) type tester struct { t *testing.T ctx IKernelCtx wg IKernelWg me *mock_env.MockEnv } func TestKernelServHttp(t *testing.T) { ctx := kctx.GetKernelCtx().Hassert("TestKernelServHttp()") sf := &tester{ t: t, ctx: ctx, wg: ctx.Wg(), } sf.new() sf.close() } // Закрытие HTTP-сервера. func (sf *tester) close() { sf.t.Log("close") sf.ctx.Cancel() sf.wg.Wait() kernServHttp.close() if kernServHttp.IsWork() { sf.t.Fatalf("close(): isWork==true") } kernServHttp.Run() chErr := make(chan string, 2) chErr <- "test err" close(chErr) kernServHttp.fnChErr(chErr) } // Создание сервера HTTP. func (sf *tester) new() { sf.t.Log("new()") sf.newBad1() sf.newBad2() sf.newGood1() sf.newBad3() } // Повторный запуск сервера на том же порту. func (sf *tester) newBad3() { sf.t.Log("newBad3()") serv := GetKernelServHttp().Hassert("newBad1") go serv.Run() count := 0 for count < 20 { SleepMs() count++ } } func (sf *tester) newGood1() { sf.t.Log("newGood1()") defer func() { if _panic := recover(); _panic != nil { sf.t.Fatalf("newGood1(): panic=%v", _panic) } }() sf.me = mock_env.MakeEnv() _ = os.Unsetenv("LOCAL_HTTP_URL") _ = os.Setenv("LOCAL_HTTP_URL", baseUrl) sf.ctx.Set("monolitName", "test_monolit", "comment").Hassert("newGood1()") serv := GetKernelServHttp().Hassert("newGood1()").(*kServHttp) if serv != kernServHttp { sf.t.Fatalf("newGood1(): bad IKernelServHttp") } if webFiber := serv.Fiber(); webFiber != kernServHttp.fiberApp { sf.t.Fatalf("newGood1(): webFiber==serv.appFiber") } if log := serv.Log(); log == nil { sf.t.Fatalf("newGood1(): log==nil") } // go serv.Run() // count := 0 // for count < 50 { // SleepMs() // count++ // } serv.Run() } // Не указана SERVER_HTTP_PORT. func (sf *tester) newBad2() { sf.t.Log("newBad2()") res := GetKernelServHttp() if res.IsOk() { sf.t.Fatalf("newBad2(): res.IsOk()==true") } } // Нет контекста ядра. func (sf *tester) newBad1() { sf.t.Log("newBad1()") res := GetKernelServHttp() if res.IsOk() { sf.t.Fatalf("newBad1(): res.IsOk()==true") } }