kmodule_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package kmodule
  2. import (
  3. "testing"
  4. "time"
  5. "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
  6. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  7. )
  8. type tester struct {
  9. t *testing.T
  10. mod IKernelModule
  11. }
  12. func TestKernelModule(t *testing.T) {
  13. sf := &tester{
  14. t: t,
  15. }
  16. sf.new()
  17. sf.run()
  18. sf.isWork()
  19. sf.done()
  20. }
  21. // Работа после остановки локальной шины
  22. func (sf *tester) done() {
  23. sf.t.Log("done")
  24. kCtx := kctx.GetKernelCtx()
  25. time.Sleep(time.Millisecond * 250)
  26. kCtx.Cancel()
  27. kCtx.Wg().Wait()
  28. time.Sleep(time.Millisecond * 250)
  29. }
  30. // Проверить признак работы
  31. func (sf *tester) isWork() {
  32. sf.t.Log("isWork")
  33. defer func() {
  34. if _panic := recover(); _panic == nil {
  35. sf.t.Fatalf("isWork(): panic==nil")
  36. }
  37. }()
  38. _ = sf.mod.IsWork()
  39. }
  40. // Запускает модуль в работу
  41. func (sf *tester) run() {
  42. sf.t.Log("run")
  43. defer func() {
  44. if _panic := recover(); _panic == nil {
  45. sf.t.Fatalf("run(): panic==nil")
  46. }
  47. }()
  48. mod := sf.mod.(*kModule)
  49. mod.timePhase.Set(5) // Настройка переменной модуля
  50. sf.mod.Run()
  51. }
  52. // Создание нового модуля ядра
  53. func (sf *tester) new() {
  54. sf.t.Log("new")
  55. sf.newBad1()
  56. sf.newGood1()
  57. }
  58. func (sf *tester) newGood1() {
  59. sf.t.Log("newGood1")
  60. sf.mod = NewKernelModule("test_module")
  61. if name := sf.mod.Name(); name != "test_module" {
  62. sf.t.Fatalf("newGood1(): name(%v)!='test_module'", name)
  63. }
  64. if ctx := sf.mod.Ctx(); ctx == nil {
  65. sf.t.Fatalf("newGood1(): ctx==nil")
  66. }
  67. if _log := sf.mod.Log(); _log == nil {
  68. sf.t.Fatalf("newGood1(): log==nil")
  69. }
  70. _ = sf.mod.Stat()
  71. _ = sf.mod.Live()
  72. }
  73. // Нет имени модуля
  74. func (sf *tester) newBad1() {
  75. sf.t.Log("newBad1")
  76. defer func() {
  77. if _panic := recover(); _panic == nil {
  78. sf.t.Fatalf("newBad1(): panic==nil")
  79. }
  80. }()
  81. _ = NewKernelModule("")
  82. }