| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package kmonolit
- import (
- "testing"
- . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
- . "gitp78su.ipnodns.ru/svi/kern/krn/kalias"
- "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
- "gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- )
- type tester struct {
- t *testing.T
- mon IKernelMonolit
- }
- func TestKernMono(t *testing.T) {
- sf := &tester{
- t: t,
- }
- sf.new()
- sf.run()
- sf.add()
- sf.done()
- }
- func (sf *tester) done() {
- sf.t.Log("done")
- ctx := kctx.GetKernelCtx()
- ctx.Cancel()
- ctx.Wg().Wait()
- sf.mon.Run()
- sf.mon.Wait()
- sf.mon.Run()
- }
- // Добавление модуля в монолит
- func (sf *tester) add() {
- sf.t.Log("add")
- sf.addGood1()
- }
- type mod struct {
- IKernelModule
- }
- func newMod(name AModuleName) IKernelModule {
- sf := &mod{
- IKernelModule: kmodule.NewKernelModule(name),
- }
- return sf
- }
- func (sf *mod) Run() {}
- func (sf *tester) addGood1() {
- sf.t.Log("addGood1")
- mod := newMod("test_module")
- sf.mon.Add(mod)
- }
- func (sf *tester) run() {
- sf.t.Log("run")
- mod := newMod("test_mod1")
- 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)
- }
- }()
- ctx := kctx.GetKernelCtx()
- ctx.Set("isLocal", true, "type bus")
- for {
- SleepMs()
- if ctx.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")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("newBad1(): panic==nil")
- }
- }()
- _ = GetMonolit("test_32")
- }
|