kbus_http_test.go 15 KB

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