kbus_http_test.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. package kbus_http
  2. import (
  3. "encoding/json"
  4. "io"
  5. "net/http"
  6. "os"
  7. "strings"
  8. "testing"
  9. "time"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
  11. . "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
  13. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
  14. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_ent"
  15. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_ent/topic"
  16. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_mock/mock_hand_serve"
  17. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_mock/mock_hand_sub_local"
  18. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/dot"
  19. )
  20. type tester struct {
  21. t *testing.T
  22. handSub *mock_hand_sub_local.MockHandlerSub
  23. handServ *mock_hand_serve.MockHandlerServe
  24. }
  25. const (
  26. test_uuid = "test_uuid"
  27. )
  28. var (
  29. qNameSub = bus_ent.ITopicFix(topic.NewTopic("topic_sub"))
  30. qNameServ = bus_ent.ITopicFix(topic.NewTopic("topic_serv"))
  31. )
  32. func TestKernelBusHttp(t *testing.T) {
  33. sf := &tester{
  34. t: t,
  35. handSub: mock_hand_sub_local.NewMockHandlerSub(qNameSub,
  36. lev0.LetTxt("http://localhost:18200/bus/pub")),
  37. handServ: mock_hand_serve.NewMockHandlerServe(qNameServ, "name_serv"),
  38. }
  39. ctx := kctx.GetKernelCtx()
  40. ctx.Set(lev0.LetTxt("monolitName"), "test_monolit", "comment")
  41. sf.get()
  42. sf.req()
  43. sf.sub()
  44. sf.pub()
  45. sf.unsub()
  46. }
  47. // Запрос на отписку.
  48. func (sf *tester) unsub() {
  49. sf.t.Log("unsub")
  50. sf.unsubBad1()
  51. sf.unsubBad2()
  52. sf.unsubGood1()
  53. sf.unsubBad3()
  54. sf.unsubGood2()
  55. }
  56. func (sf *tester) unsubGood2() {
  57. sf.t.Log("unsubGood2")
  58. res := Bus_.Subscribe(sf.handSub)
  59. if res.IsErr() {
  60. sf.t.Fatalf("unsubGood1(): err=%v", res.Err())
  61. }
  62. req := &dot.UnsubReq{
  63. HandlerName_: sf.handSub.Name().Get(),
  64. Uuid_: defs.TxtFix(test_uuid),
  65. }
  66. binReq, _ := json.MarshalIndent(req, "", " ")
  67. body := strings.NewReader(string(binReq))
  68. kServHttp := kserv_http.GetKernelServHttp()
  69. fibApp := kServHttp.Fiber()
  70. hReq, err := http.NewRequest(http.MethodPost, "/bus/unsub", body)
  71. if err != nil {
  72. sf.t.Fatalf("unsubGood2(): err=%v", err)
  73. }
  74. hReq.Header.Add("Content-Type", "application/json")
  75. _resp, err := fibApp.Test(hReq)
  76. if err != nil {
  77. sf.t.Fatalf("unsubGood2(): after request, err=%v", err)
  78. }
  79. defer func() {
  80. _ = _resp.Body.Close()
  81. }()
  82. if _resp.StatusCode != http.StatusOK {
  83. sf.t.Fatalf("unsubGood2(): statusCode(%v)!=200", _resp.StatusCode)
  84. }
  85. binBody, _ := io.ReadAll(_resp.Body)
  86. resp := &dot.UnsubResp{}
  87. err = json.Unmarshal(binBody, resp)
  88. if err != nil {
  89. sf.t.Fatalf("unsubGood2(): err=%v", err)
  90. }
  91. if resp.Status_.Get() != "ok" {
  92. sf.t.Fatalf("unsubGood2(): resp(%v)!='ok'", resp.Status_)
  93. }
  94. }
  95. // Кривой запрос.
  96. func (sf *tester) unsubBad3() {
  97. sf.t.Log("unsubBad3")
  98. req := "tra-la-la"
  99. binReq, _ := json.MarshalIndent(req, "", " ")
  100. body := strings.NewReader(string(binReq))
  101. kServHttp := kserv_http.GetKernelServHttp()
  102. fibApp := kServHttp.Fiber()
  103. hReq, err := http.NewRequest(http.MethodPost, "/bus/unsub", body)
  104. hReq.Header.Add("Content-Type", "application/json")
  105. if err != nil {
  106. sf.t.Fatalf("unsubBad3(): err=%v", err)
  107. }
  108. _resp, err := fibApp.Test(hReq)
  109. if err != nil {
  110. sf.t.Fatalf("unsubBad3(): after request, err=%v", err)
  111. }
  112. defer func() {
  113. _ = _resp.Body.Close()
  114. }()
  115. if _resp.StatusCode == http.StatusOK {
  116. sf.t.Fatalf("unsubBad3(): statusCode(%v)==200", _resp.StatusCode)
  117. }
  118. }
  119. func (sf *tester) unsubGood1() {
  120. sf.t.Log("unsubGood1")
  121. res := Bus_.Subscribe(sf.handSub)
  122. if res.IsErr() {
  123. sf.t.Fatalf("unsubGood1(): err=%v", res.Err())
  124. }
  125. count := 0
  126. for count < 100 {
  127. time.Sleep(time.Millisecond * 1)
  128. count++
  129. }
  130. req := &dot.UnsubReq{
  131. HandlerName_: sf.handSub.Name().Get(),
  132. Uuid_: defs.TxtFix(test_uuid),
  133. }
  134. resp := Bus_.processUnsubRequest(req)
  135. if resp.Status_.Get() != "ok" {
  136. sf.t.Fatalf("unsubGood1(): status(%v)!='ok'", resp.Status_)
  137. }
  138. }
  139. // Все поля на месте, нет подписчика.
  140. func (sf *tester) unsubBad2() {
  141. sf.t.Log("unsubBad2")
  142. Bus_.Unsubscribe(sf.handSub)
  143. count := 0
  144. for count < 100 {
  145. time.Sleep(time.Millisecond * 1)
  146. count++
  147. }
  148. req := &dot.UnsubReq{
  149. HandlerName_: sf.handSub.Name().Get(),
  150. Uuid_: defs.TxtFix(test_uuid),
  151. }
  152. resp := Bus_.processUnsubRequest(req)
  153. if resp.Status_.Get() == "ok" {
  154. sf.t.Fatalf("unsubBad2(): status(%v)=='ok'", resp.Status_)
  155. }
  156. }
  157. // Нет полей для процесса отписки.
  158. func (sf *tester) unsubBad1() {
  159. sf.t.Log("unsubBad1")
  160. defer func() {
  161. if _panic := recover(); _panic == nil {
  162. sf.t.Fatalf("unsubBad1(): panic==nil")
  163. }
  164. }()
  165. req := &dot.UnsubReq{}
  166. _ = Bus_.processUnsubRequest(req)
  167. }
  168. // Запрос на публикацию.
  169. func (sf *tester) pub() {
  170. sf.t.Log("pub")
  171. sf.pubBad1()
  172. sf.pubGood1()
  173. sf.pubBad2()
  174. sf.pubBad3()
  175. sf.pubGood2()
  176. }
  177. func (sf *tester) pubGood2() {
  178. sf.t.Log("pubGood2")
  179. req := &dot.PublishReq{
  180. Topic_: qNameSub.Get(),
  181. Uuid_: defs.TxtFix(test_uuid),
  182. BinMsg_: []byte("http_pub"),
  183. }
  184. binReq, _ := json.MarshalIndent(req, "", " ")
  185. body := strings.NewReader(string(binReq))
  186. kServHttp := kserv_http.GetKernelServHttp()
  187. fibApp := kServHttp.Fiber()
  188. hReq, err := http.NewRequest(http.MethodPost, "/bus/pub", body)
  189. hReq.Header.Add("Content-Type", "application/json")
  190. if err != nil {
  191. sf.t.Fatalf("pubGood2(): err=%v", err)
  192. }
  193. _resp, err := fibApp.Test(hReq)
  194. if err != nil {
  195. sf.t.Fatalf("pubGood2(): after request, err=%v", err)
  196. }
  197. defer func() {
  198. _ = _resp.Body.Close()
  199. }()
  200. if _resp.StatusCode != http.StatusOK {
  201. sf.t.Fatalf("pubGood2(): statusCode(%v)!=200", _resp.StatusCode)
  202. }
  203. binBody, _ := io.ReadAll(_resp.Body)
  204. resp := &dot.PublishResp{}
  205. err = json.Unmarshal(binBody, resp)
  206. if err != nil {
  207. sf.t.Fatalf("pubGood2(): err=%v", err)
  208. }
  209. if resp.Status_.Get() != "ok" {
  210. sf.t.Fatalf("pubGood2(): resp(%v)!='ok'", resp.Status_)
  211. }
  212. }
  213. // Кривой запрос.
  214. func (sf *tester) pubBad3() {
  215. sf.t.Log("pubBad3")
  216. req := "tra-la-la"
  217. binReq, _ := json.MarshalIndent(req, "", " ")
  218. body := strings.NewReader(string(binReq))
  219. kServHttp := kserv_http.GetKernelServHttp()
  220. fibApp := kServHttp.Fiber()
  221. hReq, err := http.NewRequest(http.MethodPost, "/bus/pub", body)
  222. hReq.Header.Add("Content-Type", "application/json")
  223. if err != nil {
  224. sf.t.Fatalf("pubBad3(): err=%v", err)
  225. }
  226. _resp, err := fibApp.Test(hReq)
  227. if err != nil {
  228. sf.t.Fatalf("pubBad3(): after request, err=%v", err)
  229. }
  230. defer func() {
  231. _ = _resp.Body.Close()
  232. }()
  233. if _resp.StatusCode == http.StatusOK {
  234. sf.t.Fatalf("pubBad3(): statusCode(%v)==200", _resp.StatusCode)
  235. }
  236. }
  237. // Что-то случилось внутри шины.
  238. func (sf *tester) pubBad2() {
  239. sf.t.Log("pubBad2")
  240. Bus_.IsWork_.Reset()
  241. defer Bus_.IsWork_.Set()
  242. req := &dot.PublishReq{
  243. Topic_: qNameSub.Get(),
  244. Uuid_: defs.TxtFix(test_uuid),
  245. BinMsg_: []byte("test_pub"),
  246. }
  247. resp := Bus_.processPublish(req)
  248. if resp.Status_.Get() == "ok" {
  249. sf.t.Fatalf("pubBad2(): status(%v)=='ok'", resp.Status_)
  250. }
  251. }
  252. // Все поля на месте.
  253. func (sf *tester) pubGood1() {
  254. sf.t.Log("pubGood1")
  255. res := Bus_.Subscribe(sf.handSub)
  256. if res.IsErr() {
  257. sf.t.Fatalf("pubGood1(): err=%v", res.Err())
  258. }
  259. req := &dot.PublishReq{
  260. Topic_: qNameSub.Get(),
  261. Uuid_: defs.TxtFix(test_uuid),
  262. BinMsg_: []byte("test_pub"),
  263. }
  264. _ = Bus_.processPublish(req)
  265. for {
  266. time.Sleep(time.Millisecond * 1)
  267. msg := sf.handSub.Msg()
  268. if msg.Get() != "" {
  269. break
  270. }
  271. }
  272. msg := sf.handSub.Msg()
  273. if msg.Get() != "test_pub" {
  274. sf.t.Fatalf("pubGood1(): msg(%v)!='test_pub'", msg)
  275. }
  276. }
  277. // Нет полей для процесса публикации.
  278. func (sf *tester) pubBad1() {
  279. sf.t.Log("pubBad1")
  280. defer func() {
  281. if _panic := recover(); _panic == nil {
  282. sf.t.Fatalf("pubBad1(): panic==nil")
  283. }
  284. }()
  285. req := &dot.PublishReq{}
  286. _ = Bus_.processPublish(req)
  287. }
  288. // Запрос подписки на топик.
  289. func (sf *tester) sub() {
  290. sf.t.Log("sub")
  291. sf.subBad1()
  292. sf.subBad2()
  293. sf.subGood1()
  294. sf.subBad3()
  295. sf.subGood2()
  296. }
  297. // Полный процесс подписки.
  298. func (sf *tester) subGood2() {
  299. sf.t.Log("subGood2")
  300. req := &dot.SubscribeReq{
  301. Topic_: qNameServ.Get(),
  302. Uuid_: defs.TxtFix(test_uuid),
  303. WebHook_: defs.TxtFix("http://localhost:18200/bus/pub/"),
  304. }
  305. binReq, _ := json.MarshalIndent(req, "", " ")
  306. body := strings.NewReader(string(binReq))
  307. kServHttp := kserv_http.GetKernelServHttp()
  308. fibApp := kServHttp.Fiber()
  309. hReq, err := http.NewRequest(http.MethodPost, "/bus/sub", body)
  310. hReq.Header.Add("Content-Type", "application/json")
  311. if err != nil {
  312. sf.t.Fatalf("subBad1(): err=%v", err)
  313. }
  314. _resp, err := fibApp.Test(hReq)
  315. if err != nil {
  316. sf.t.Fatalf("subBad1(): after request, err=%v", err)
  317. }
  318. defer func() {
  319. _ = _resp.Body.Close()
  320. }()
  321. if _resp.StatusCode != http.StatusOK {
  322. sf.t.Fatalf("subBad1(): statusCode(%v)!=200", _resp.StatusCode)
  323. }
  324. binBody, _ := io.ReadAll(_resp.Body)
  325. resp := &dot.SubscribeResp{}
  326. err = json.Unmarshal(binBody, resp)
  327. if err != nil {
  328. sf.t.Fatalf("subBad1(): err=%v", err)
  329. }
  330. if resp.Status_.Get() != "ok" {
  331. sf.t.Fatalf("subBad1(): resp(%v)!='ok'", resp.Status_)
  332. }
  333. }
  334. // Отключена базовая шина.
  335. func (sf *tester) subBad3() {
  336. sf.t.Log("subBad3")
  337. req := &dot.SubscribeReq{
  338. Topic_: qNameServ.Get(),
  339. Uuid_: defs.TxtFix(test_uuid),
  340. WebHook_: defs.TxtFix("http://localhost:18200/bus/pub/"),
  341. }
  342. defer func() {
  343. if _panic := recover(); _panic != nil {
  344. sf.t.Fatalf("subBad3(): panic!=nil")
  345. }
  346. }()
  347. // _bus := kernel_bus_base.GetKernelBusBase()
  348. Bus_.IsWork_.Reset()
  349. defer Bus_.IsWork_.Set()
  350. resp := Bus_.processSubscribe(req)
  351. if resp.Status_.Get() == "ok" {
  352. sf.t.Fatalf("subBad3(): resp==ok")
  353. }
  354. }
  355. // Проверка полей запроса в процессе подписки.
  356. func (sf *tester) subGood1() {
  357. sf.t.Log("subGood1")
  358. req := &dot.SubscribeReq{
  359. Topic_: qNameServ.Get(),
  360. Uuid_: defs.TxtFix(test_uuid),
  361. WebHook_: defs.TxtFix("http://localhost:18200/bus/"),
  362. }
  363. defer func() {
  364. if _panic := recover(); _panic != nil {
  365. sf.t.Fatalf("subGood1(): panic!=nil")
  366. }
  367. }()
  368. _ = Bus_.processSubscribe(req)
  369. }
  370. var (
  371. qNameEmpty = bus_ent.ITopicFix(topic.NewTopic(""))
  372. )
  373. // Проверка кривых полей запроса в процессе подписки.
  374. func (sf *tester) subBad2() {
  375. sf.t.Log("subBad2")
  376. req := &dot.SubscribeReq{
  377. Topic_: qNameEmpty.Get(),
  378. }
  379. defer func() {
  380. if _panic := recover(); _panic == nil {
  381. sf.t.Fatalf("subBad2(): panic==nil")
  382. }
  383. }()
  384. _ = Bus_.processSubscribe(req)
  385. }
  386. // Кривой запрос.
  387. func (sf *tester) subBad1() {
  388. sf.t.Log("subBad1")
  389. req := "tra-ta-ta"
  390. binReq, _ := json.MarshalIndent(req, "", " ")
  391. body := strings.NewReader(string(binReq))
  392. kServHttp := kserv_http.GetKernelServHttp()
  393. fibApp := kServHttp.Fiber()
  394. hReq, err := http.NewRequest(http.MethodPost, "/bus/sub", body)
  395. hReq.Header.Add("Content-Type", "application/json")
  396. if err != nil {
  397. sf.t.Fatalf("subBad1(): err=%v", err)
  398. }
  399. _resp, err := fibApp.Test(hReq)
  400. if err != nil {
  401. sf.t.Fatalf("subBad1(): after request, err=%v", err)
  402. }
  403. defer func() {
  404. _ = _resp.Body.Close()
  405. }()
  406. if _resp.StatusCode != http.StatusBadRequest {
  407. sf.t.Fatalf("subBad1(): statusCode(%v)!=400", _resp.StatusCode)
  408. }
  409. }
  410. // Входящий запрос.
  411. func (sf *tester) req() {
  412. sf.t.Log("req")
  413. sf.reqBad1()
  414. sf.reqBad2()
  415. sf.reqBad3()
  416. sf.reqGood1()
  417. sf.reqBad4()
  418. }
  419. // Что-то с обработчиком.
  420. func (sf *tester) reqBad4() {
  421. sf.t.Log("reqBad4")
  422. sf.handServ.IsBad_.Set()
  423. defer sf.handServ.IsBad_.Reset()
  424. req := &dot.ServeReq{
  425. Topic_: sf.handServ.Topic().Get(),
  426. Uuid_: defs.TxtFix(test_uuid),
  427. BinReq_: []byte("test_msg"),
  428. }
  429. binReq, _ := json.MarshalIndent(req, "", " ")
  430. body := strings.NewReader(string(binReq))
  431. kServHttp := kserv_http.GetKernelServHttp()
  432. fibApp := kServHttp.Fiber()
  433. hReq, err := http.NewRequest(http.MethodPost, "/bus/request", body)
  434. hReq.Header.Add("Content-Type", "application/json")
  435. if err != nil {
  436. sf.t.Fatalf("reqBad4(): err=%v", err)
  437. }
  438. _resp, err := fibApp.Test(hReq)
  439. if err != nil {
  440. sf.t.Fatalf("reqBad4(): after request, err=%v", err)
  441. }
  442. defer func() {
  443. _ = _resp.Body.Close()
  444. }()
  445. if _resp.StatusCode != http.StatusOK {
  446. sf.t.Fatalf("reqBad4(): statusCode(%v)!=200", _resp.StatusCode)
  447. }
  448. binBody, _ := io.ReadAll(_resp.Body)
  449. resp := &dot.ServeResp{}
  450. err = json.Unmarshal(binBody, resp)
  451. if err != nil {
  452. sf.t.Fatalf("reqBad4(): err=%v", err)
  453. }
  454. if resp.Status_.Get() == "ok" {
  455. sf.t.Fatalf("reqBad4(): status(%v)=='ok'", resp.Status_)
  456. }
  457. }
  458. func (sf *tester) reqGood1() {
  459. sf.t.Log("reqGood1")
  460. req := &dot.ServeReq{
  461. Topic_: sf.handServ.Topic().Get(),
  462. Uuid_: defs.TxtFix(test_uuid),
  463. BinReq_: []byte("test_msg"),
  464. }
  465. binReq, _ := json.MarshalIndent(req, "", " ")
  466. body := strings.NewReader(string(binReq))
  467. kServHttp := kserv_http.GetKernelServHttp()
  468. fibApp := kServHttp.Fiber()
  469. hReq, err := http.NewRequest(http.MethodPost, "/bus/request", body)
  470. hReq.Header.Add("Content-Type", "application/json")
  471. if err != nil {
  472. sf.t.Fatalf("reqGood1(): err=%v", err)
  473. }
  474. _resp, err := fibApp.Test(hReq)
  475. if err != nil {
  476. sf.t.Fatalf("reqGood1(): after request, err=%v", err)
  477. }
  478. if _resp.StatusCode != http.StatusOK {
  479. sf.t.Fatalf("reqGood1(): statusCode(%v)!=200", _resp.StatusCode)
  480. }
  481. defer func() {
  482. _ = _resp.Body.Close()
  483. }()
  484. binBody, _ := io.ReadAll(_resp.Body)
  485. resp := &dot.ServeResp{}
  486. err = json.Unmarshal(binBody, resp)
  487. if err != nil {
  488. sf.t.Fatalf("reqGood1(): err=%v", err)
  489. }
  490. if def_spec.ATxt(resp.BinResp_) != "test_msg" {
  491. sf.t.Fatalf("reqGood1(): resp(%v)!='test_msg'", def_spec.ATxt(resp.BinResp_))
  492. }
  493. }
  494. var (
  495. qNameBad = bus_ent.ITopicFix(topic.NewTopic("bad_topic"))
  496. )
  497. // Нет такого топика для запросов.
  498. func (sf *tester) reqBad3() {
  499. sf.t.Log("reqBad3")
  500. req := &dot.ServeReq{
  501. Topic_: qNameBad.Get(),
  502. Uuid_: defs.TxtFix(test_uuid),
  503. BinReq_: []byte("test_msg"),
  504. }
  505. binReq, _ := json.MarshalIndent(req, "", " ")
  506. body := strings.NewReader(string(binReq))
  507. kServHttp := kserv_http.GetKernelServHttp()
  508. fibApp := kServHttp.Fiber()
  509. hReq, err := http.NewRequest(http.MethodPost, "/bus/request", body)
  510. if err != nil {
  511. sf.t.Fatalf("reqBad3(): err=%v", err)
  512. }
  513. resp, err := fibApp.Test(hReq)
  514. if err != nil {
  515. sf.t.Fatalf("reqBad3(): after request, err=%v", err)
  516. }
  517. defer func() {
  518. _ = resp.Body.Close()
  519. }()
  520. if resp.StatusCode != http.StatusBadRequest {
  521. sf.t.Fatalf("reqBad3(): statusCode(%v)!=400", resp.StatusCode)
  522. }
  523. }
  524. // Нет тела запроса.
  525. func (sf *tester) reqBad2() {
  526. sf.t.Log("reqBad1")
  527. body := strings.NewReader("test_msg")
  528. kServHttp := kserv_http.GetKernelServHttp()
  529. fibApp := kServHttp.Fiber()
  530. hReq, err := http.NewRequest(http.MethodPost, "/bus/request", body)
  531. if err != nil {
  532. sf.t.Fatalf("reqBad1(): err=%v", err)
  533. }
  534. resp, err := fibApp.Test(hReq)
  535. if err != nil {
  536. sf.t.Fatalf("reqBad1(): after request, err=%v", err)
  537. }
  538. defer func() {
  539. _ = resp.Body.Close()
  540. }()
  541. if resp.StatusCode != http.StatusBadRequest {
  542. sf.t.Fatalf("reqBad1(): statusCode(%v)!=400", resp.StatusCode)
  543. }
  544. }
  545. // Отсутствуют поля в запросе.
  546. func (sf *tester) reqBad1() {
  547. sf.t.Log("reqBad1")
  548. defer func() {
  549. if _panic := recover(); _panic == nil {
  550. sf.t.Fatalf("reqBad1(): panic==nil")
  551. }
  552. }()
  553. Bus_.processSendRequest(nil)
  554. }
  555. // Получает локальную шину.
  556. func (sf *tester) get() {
  557. sf.t.Log("get")
  558. _ = MakeEnv()
  559. _ = os.Unsetenv("LOCAL_HTTP_URL")
  560. _ = os.Setenv("LOCAL_HTTP_URL", "http://localhost:18312/")
  561. _ = GetKernelBusHttp()
  562. if Bus_ == nil {
  563. sf.t.Fatalf("get(): bus==nil")
  564. }
  565. _ = GetKernelBusHttp()
  566. Bus_.RegisterServe(sf.handServ).Hassert("get()")
  567. }