| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- package kmonolit
- import (
- "os"
- "testing"
- mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
- mKd "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- mKs "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"
- )
- const (
- baseUrl = "http://127.0.0.1:18430/"
- pathStore = "/store/store_kmonolit"
- )
- type tester struct {
- t *testing.T
- me *mock_env.MockEnv
- mon mKs.IKernelMonolit
- }
- func TestKernMono(t *testing.T) {
- sf := &tester{
- t: t,
- me: mock_env.MakeEnv(),
- }
- _ = os.Unsetenv("LOCAL_STORE_PATH")
- _ = os.Setenv("LOCAL_STORE_PATH", pathStore)
- _ = os.Unsetenv("LOCAL_HTTP_URL")
- _ = os.Setenv("LOCAL_HTTP_URL", baseUrl)
- fnClear := func() {
- _ = os.RemoveAll(pathStore)
- }
- fnClear()
- defer fnClear()
- sf.new()
- sf.run()
- sf.add()
- sf.done()
- }
- func (sf *tester) done() {
- sf.t.Log("done")
- kCtx := kctx.GetKernelCtx()
- kCtx.Cancel()
- kCtx.Wg().Wait()
- sf.mon.Run()
- sf.mon.Wait()
- sf.mon.Run()
- }
- // Добавление модуля в монолит.
- func (sf *tester) add() {
- sf.t.Log("add")
- sf.addGood1()
- }
- type mod struct {
- mKs.IKernelModule
- }
- func newMod(name *mKd.ModuleName) mKs.IKernelModule {
- sf := &mod{
- IKernelModule: kmodule.NewKernelModule(name),
- }
- return sf
- }
- func (sf *mod) Run() {}
- func (sf *tester) addGood1() {
- sf.t.Log("addGood1")
- modName := mKd.NewModuleName("test_module")
- mod := newMod(modName)
- sf.mon.Add(mod)
- }
- func (sf *tester) run() {
- sf.t.Log("run")
- modName := mKd.NewModuleName("test_mod1")
- mod := newMod(modName)
- sf.mon.Add(mod)
- sf.mon.Run()
- isWork := sf.mon.IsWork()
- if !isWork {
- sf.t.Fatalf("newGood1(): isWork==false")
- }
- }
- // Создаёт новый монолит.
- func (sf *tester) new() {
- sf.t.Log("new")
- sf.newBad1()
- sf.newGood1()
- }
- func (sf *tester) newGood1() {
- sf.t.Log("newGood1")
- defer func() {
- if _panic := recover(); _panic != nil {
- sf.t.Fatalf("newGood1(): panic=%v", _panic)
- }
- }()
- kCtx := kctx.GetKernelCtx()
- kCtx.Set("isLocal", true, "type bus")
- for {
- mL0.SleepMs()
- if kCtx.Get("isLocal") != nil {
- break
- }
- }
- sf.mon = GetMonolit("test_monolit")
- isLocal := sf.mon.IsLocal()
- if !isLocal {
- sf.t.Fatalf("newGood1(): isLocal==false")
- }
- if name := sf.mon.Name(); name != "test_monolit" {
- sf.t.Fatalf("newGood1(): name(%v)!='test_monolit'", name)
- }
- if log := sf.mon.Log(); log == nil {
- sf.t.Fatalf("newGood1(): log==nil")
- }
- if ctx := sf.mon.Ctx(); ctx == nil {
- sf.t.Fatalf("newGood1(): ctx==nil")
- }
- sf.mon = GetMonolit("")
- }
- // Нет признака локальности.
- func (sf *tester) newBad1() {
- sf.t.Log("newBad1")
- _ = GetMonolit("test_32")
- }
|