page_module_test.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. package page_module
  2. import (
  3. "net/http"
  4. "os"
  5. "testing"
  6. "time"
  7. "gitp78su.ipnodns.ru/svi/kern/v3/krn/kctx"
  8. "gitp78su.ipnodns.ru/svi/kern/v3/krn/kmodule"
  9. "gitp78su.ipnodns.ru/svi/kern/v3/krn/kmonolit"
  10. "gitp78su.ipnodns.ru/svi/kern/v3/krn/kserv_http"
  11. . "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
  12. "gitp78su.ipnodns.ru/svi/kern/v3/mock/mock_env"
  13. )
  14. type tester struct {
  15. t *testing.T
  16. ctx IKernelCtx
  17. serv IKernelServerHttp
  18. page *PageModule
  19. }
  20. func TestPageMonolit(t *testing.T) {
  21. sf := &tester{
  22. t: t,
  23. ctx: kctx.GetKernelCtx(),
  24. }
  25. sf.new()
  26. sf.postModule()
  27. sf.postMonolitCtx()
  28. sf.postModuleLog()
  29. sf.postModule1()
  30. sf.postMonolitCtx()
  31. sf.postModuleLog()
  32. sf.postModuleState()
  33. sf.postModuleStateBad()
  34. sf.postSvgSecGood1()
  35. sf.postSvgSecBad1()
  36. sf.postSvgMinGood1()
  37. sf.postSvgMinBad1()
  38. sf.postSvgDayGood1()
  39. sf.postSvgDayBad1()
  40. sf.done()
  41. }
  42. // Получение SVG, модуля 20 не существует
  43. func (sf *tester) postSvgDayBad1() {
  44. sf.t.Log("postSvgDayBad1")
  45. mon := kmonolit.GetMonolit("test_monolit")
  46. ctxMon := mon.Ctx()
  47. module := kmodule.NewKernelModule("kCtx")
  48. module.Log().Debug("test msg")
  49. module.Log().Debug("test msg")
  50. ctxMod := module.Ctx()
  51. ctxMod.Set("demo_key", "demo value", "for demo comment")
  52. time.Sleep(time.Millisecond * 20)
  53. ctxMon.Set("module_1", module, "test_module")
  54. fiberApp := sf.serv.Fiber()
  55. req, err := http.NewRequest("POST", "/module_svg_day/svg_day_20.svg", nil)
  56. if err != nil {
  57. sf.t.Fatalf("postSvgDayBad1(): in net request, err=%v", err)
  58. }
  59. resp, err := fiberApp.Test(req)
  60. if err != nil {
  61. sf.t.Fatalf("postSvgDayBad1(): in make POST, err=%v", err)
  62. }
  63. if resp.StatusCode != 200 {
  64. sf.t.Fatalf("postSvgDayBad1(): status(%v)!=200", resp.StatusCode)
  65. }
  66. }
  67. // Получение SVG
  68. func (sf *tester) postSvgDayGood1() {
  69. sf.t.Log("postSvgDayGood1")
  70. mon := kmonolit.GetMonolit("test_monolit")
  71. ctxMon := mon.Ctx()
  72. module := kmodule.NewKernelModule("kCtx")
  73. module.Log().Debug("test msg")
  74. module.Log().Debug("test msg")
  75. ctxMod := module.Ctx()
  76. ctxMod.Set("demo_key", "demo value", "for demo comment")
  77. time.Sleep(time.Millisecond * 20)
  78. ctxMon.Set("module_1", module, "test_module")
  79. fiberApp := sf.serv.Fiber()
  80. req, err := http.NewRequest("POST", "/module_svg_day/svg_day_1.svg", nil)
  81. if err != nil {
  82. sf.t.Fatalf("postSvgDayGood1(): in net request, err=%v", err)
  83. }
  84. resp, err := fiberApp.Test(req)
  85. if err != nil {
  86. sf.t.Fatalf("postSvgDayGood1(): in make POST, err=%v", err)
  87. }
  88. if resp.StatusCode != 200 {
  89. sf.t.Fatalf("postSvgDayGood1(): status(%v)!=200", resp.StatusCode)
  90. }
  91. }
  92. // Получение SVG, модуля 20 не существует
  93. func (sf *tester) postSvgMinBad1() {
  94. sf.t.Log("postSvgMinBad1")
  95. mon := kmonolit.GetMonolit("test_monolit")
  96. ctxMon := mon.Ctx()
  97. module := kmodule.NewKernelModule("kCtx")
  98. module.Log().Debug("test msg")
  99. module.Log().Debug("test msg")
  100. ctxMod := module.Ctx()
  101. ctxMod.Set("demo_key", "demo value", "for demo comment")
  102. time.Sleep(time.Millisecond * 20)
  103. ctxMon.Set("module_1", module, "test_module")
  104. fiberApp := sf.serv.Fiber()
  105. req, err := http.NewRequest("POST", "/module_svg_min/svg_min_20.svg", nil)
  106. if err != nil {
  107. sf.t.Fatalf("postSvgMinBad1(): in net request, err=%v", err)
  108. }
  109. resp, err := fiberApp.Test(req)
  110. if err != nil {
  111. sf.t.Fatalf("postSvgMinBad1(): in make POST, err=%v", err)
  112. }
  113. if resp.StatusCode != 200 {
  114. sf.t.Fatalf("postSvgMinBad1(): status(%v)!=200", resp.StatusCode)
  115. }
  116. }
  117. // Получение SVG
  118. func (sf *tester) postSvgMinGood1() {
  119. sf.t.Log("postSvgMinGood1")
  120. mon := kmonolit.GetMonolit("test_monolit")
  121. ctxMon := mon.Ctx()
  122. module := kmodule.NewKernelModule("kCtx")
  123. module.Log().Debug("test msg")
  124. module.Log().Debug("test msg")
  125. ctxMod := module.Ctx()
  126. ctxMod.Set("demo_key", "demo value", "for demo comment")
  127. time.Sleep(time.Millisecond * 20)
  128. ctxMon.Set("module_1", module, "test_module")
  129. fiberApp := sf.serv.Fiber()
  130. req, err := http.NewRequest("POST", "/module_svg_min/svg_min_1.svg", nil)
  131. if err != nil {
  132. sf.t.Fatalf("postSvgMinGood1(): in net request, err=%v", err)
  133. }
  134. resp, err := fiberApp.Test(req)
  135. if err != nil {
  136. sf.t.Fatalf("postSvgMinGood1(): in make POST, err=%v", err)
  137. }
  138. if resp.StatusCode != 200 {
  139. sf.t.Fatalf("postSvgMinGood1(): status(%v)!=200", resp.StatusCode)
  140. }
  141. }
  142. // Получение SVG, модуля 20 не существует
  143. func (sf *tester) postSvgSecBad1() {
  144. sf.t.Log("postSvgSecBad1")
  145. mon := kmonolit.GetMonolit("test_monolit")
  146. ctxMon := mon.Ctx()
  147. module := kmodule.NewKernelModule("kCtx")
  148. module.Log().Debug("test msg")
  149. module.Log().Debug("test msg")
  150. ctxMod := module.Ctx()
  151. ctxMod.Set("demo_key", "demo value", "for demo comment")
  152. time.Sleep(time.Millisecond * 20)
  153. ctxMon.Set("module_1", module, "test_module")
  154. fiberApp := sf.serv.Fiber()
  155. req, err := http.NewRequest("POST", "/module_svg_sec/svg_sec_20.svg", nil)
  156. if err != nil {
  157. sf.t.Fatalf("postSvgSecBad1(): in net request, err=%v", err)
  158. }
  159. resp, err := fiberApp.Test(req)
  160. if err != nil {
  161. sf.t.Fatalf("postSvgSecBad1(): in make POST, err=%v", err)
  162. }
  163. if resp.StatusCode != 200 {
  164. sf.t.Fatalf("postSvgSecBad1(): status(%v)!=200", resp.StatusCode)
  165. }
  166. }
  167. // Получение SVG
  168. func (sf *tester) postSvgSecGood1() {
  169. sf.t.Log("postSvgSecGood1")
  170. mon := kmonolit.GetMonolit("test_monolit")
  171. ctxMon := mon.Ctx()
  172. module := kmodule.NewKernelModule("kCtx")
  173. module.Log().Debug("test msg")
  174. module.Log().Debug("test msg")
  175. ctxMod := module.Ctx()
  176. ctxMod.Set("demo_key", "demo value", "for demo comment")
  177. time.Sleep(time.Millisecond * 20)
  178. ctxMon.Set("module_1", module, "test_module")
  179. fiberApp := sf.serv.Fiber()
  180. req, err := http.NewRequest("POST", "/module_svg_sec/svg_sec_1.svg", nil)
  181. if err != nil {
  182. sf.t.Fatalf("postSvgSecGood1(): in net request, err=%v", err)
  183. }
  184. resp, err := fiberApp.Test(req)
  185. if err != nil {
  186. sf.t.Fatalf("postSvgSecGood1(): in make POST, err=%v", err)
  187. }
  188. if resp.StatusCode != 200 {
  189. sf.t.Fatalf("postSvgSecGood1(): status(%v)!=200", resp.StatusCode)
  190. }
  191. }
  192. // Модуля 20 не существует
  193. func (sf *tester) postModuleStateBad() {
  194. sf.t.Log("postModuleStateBad")
  195. mon := kmonolit.GetMonolit("test_monolit")
  196. ctxMon := mon.Ctx()
  197. module := kmodule.NewKernelModule("kCtx")
  198. module.Log().Debug("test msg")
  199. module.Log().Debug("test msg")
  200. ctxMod := module.Ctx()
  201. ctxMod.Set("demo_key", "demo value", "for demo comment")
  202. time.Sleep(time.Millisecond * 20)
  203. ctxMon.Set("module_1", module, "test_module")
  204. fiberApp := sf.serv.Fiber()
  205. req, err := http.NewRequest("POST", "/module_state/20", nil)
  206. if err != nil {
  207. sf.t.Fatalf("postModuleStateBad(): in net request, err=%v", err)
  208. }
  209. resp, err := fiberApp.Test(req)
  210. if err != nil {
  211. sf.t.Fatalf("postModuleStateBad(): in make POST, err=%v", err)
  212. }
  213. if resp.StatusCode != 200 {
  214. sf.t.Fatalf("postModuleStateBad(): status(%v)!=200", resp.StatusCode)
  215. }
  216. }
  217. // Возвращает состояние модуля 1 (теперь добавлен)
  218. func (sf *tester) postModuleState() {
  219. sf.t.Log("postModuleState")
  220. mon := kmonolit.GetMonolit("test_monolit")
  221. ctxMon := mon.Ctx()
  222. module := kmodule.NewKernelModule("kCtx")
  223. module.Log().Debug("test msg")
  224. module.Log().Debug("test msg")
  225. ctxMod := module.Ctx()
  226. ctxMod.Set("demo_key", "demo value", "for demo comment")
  227. time.Sleep(time.Millisecond * 20)
  228. ctxMon.Set("module_1", module, "test_module")
  229. fiberApp := sf.serv.Fiber()
  230. req, err := http.NewRequest("POST", "/module_state/1", nil)
  231. if err != nil {
  232. sf.t.Fatalf("postModuleState(): in net request, err=%v", err)
  233. }
  234. resp, err := fiberApp.Test(req)
  235. if err != nil {
  236. sf.t.Fatalf("postModuleState(): in make POST, err=%v", err)
  237. }
  238. if resp.StatusCode != 200 {
  239. sf.t.Fatalf("postModuleState(): status(%v)!=200", resp.StatusCode)
  240. }
  241. }
  242. // Возвращает состояние модуля 1 (теперь добавлен)
  243. func (sf *tester) postModule1() {
  244. sf.t.Log("postModule1")
  245. mon := kmonolit.GetMonolit("test_monolit")
  246. ctxMon := mon.Ctx()
  247. module := kmodule.NewKernelModule("kCtx")
  248. module.Log().Debug("test msg")
  249. module.Log().Debug("test msg")
  250. ctxMod := module.Ctx()
  251. ctxMod.Set("demo_key", "demo value", "for demo comment")
  252. time.Sleep(time.Millisecond * 20)
  253. ctxMon.Set("module_1", module, "test_module")
  254. fiberApp := sf.serv.Fiber()
  255. req, err := http.NewRequest("POST", "/module/1", nil)
  256. if err != nil {
  257. sf.t.Fatalf("postModule1(): in net request, err=%v", err)
  258. }
  259. resp, err := fiberApp.Test(req)
  260. if err != nil {
  261. sf.t.Fatalf("postModule1(): in make POST, err=%v", err)
  262. }
  263. if resp.StatusCode != 200 {
  264. sf.t.Fatalf("postModule1(): status(%v)!=200", resp.StatusCode)
  265. }
  266. }
  267. // Возвращает состояние лога модуля
  268. func (sf *tester) postModuleLog() {
  269. sf.t.Log("postModuleLog")
  270. mon := sf.ctx.Get("monolit").Val().(IKernelMonolit)
  271. log := mon.Log()
  272. log.Debug("test msg")
  273. fiberApp := sf.serv.Fiber()
  274. req, err := http.NewRequest("POST", "/module_log/1", nil)
  275. if err != nil {
  276. sf.t.Fatalf("postModuleLog(): in net request, err=%v", err)
  277. }
  278. resp, err := fiberApp.Test(req)
  279. if err != nil {
  280. sf.t.Fatalf("postModuleLog(): in make POST, err=%v", err)
  281. }
  282. if resp.StatusCode != 200 {
  283. sf.t.Fatalf("postModuleLog(): status(%v)!=200", resp.StatusCode)
  284. }
  285. }
  286. // Возвращает состояние контекста модуля
  287. func (sf *tester) postMonolitCtx() {
  288. sf.t.Log("postMonolitCtx")
  289. fiberApp := sf.serv.Fiber()
  290. req, err := http.NewRequest("POST", "/module_ctx/1", nil)
  291. if err != nil {
  292. sf.t.Fatalf("postMonolitCtx(): in net request, err=%v", err)
  293. }
  294. resp, err := fiberApp.Test(req)
  295. if err != nil {
  296. sf.t.Fatalf("postMonolitCtx(): in make POST, err=%v", err)
  297. }
  298. if resp.StatusCode != 200 {
  299. sf.t.Fatalf("postMonolitCtx(): status(%v)!=200", resp.StatusCode)
  300. }
  301. }
  302. // Возвращает состояние модуля
  303. func (sf *tester) postModule() {
  304. sf.t.Log("postModule")
  305. fiberApp := sf.serv.Fiber()
  306. req, err := http.NewRequest("POST", "/module/1", nil)
  307. if err != nil {
  308. sf.t.Fatalf("postModule(): in net request, err=%v", err)
  309. }
  310. resp, err := fiberApp.Test(req)
  311. if err != nil {
  312. sf.t.Fatalf("postModule(): in make POST, err=%v", err)
  313. }
  314. if resp.StatusCode != 200 {
  315. sf.t.Fatalf("postModule(): status(%v)!=200", resp.StatusCode)
  316. }
  317. }
  318. // Освобождает ресурсы
  319. func (sf *tester) done() {
  320. sf.t.Log("done")
  321. sf.ctx.Cancel()
  322. sf.ctx.Wg().Wait()
  323. }
  324. // Создаёт новую страницу модуля
  325. func (sf *tester) new() {
  326. sf.t.Log("new")
  327. _ = mock_env.MakeEnv()
  328. _ = os.Unsetenv("LOCAL_HTTP_URL")
  329. os.Setenv("LOCAL_HTTP_URL", "http://localhost:18322/")
  330. sf.ctx.Set("isLocal", true, "testing")
  331. _ = kmonolit.GetMonolit("test_monolit")
  332. sf.serv = kserv_http.GetKernelServHttp()
  333. sf.page = GetPageModule()
  334. if sf.page == nil {
  335. sf.t.Fatalf("new(): page==nil")
  336. }
  337. _ = GetPageModule()
  338. go sf.serv.Run()
  339. }