MCPcopy
hub / github.com/nats-io/nats.go / TestServiceBasics

Function TestServiceBasics

micro/test/service_test.go:36–192  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

34)
35
36func TestServiceBasics(t *testing.T) {
37 s := RunServerOnPort(-1)
38 defer s.Shutdown()
39
40 nc, err := nats.Connect(s.ClientURL())
41 if err != nil {
42 t.Fatalf("Expected to connect to server, got %v", err)
43 }
44 defer nc.Close()
45
46 // Stub service.
47 doAdd := func(req micro.Request) {
48 if rand.Intn(10) == 0 {
49 if err := req.Error("500", "Unexpected error!", nil); err != nil {
50 t.Fatalf("Unexpected error when sending error response: %v", err)
51 }
52 return
53 }
54 // Happy Path.
55 // Random delay between 5-10ms
56 time.Sleep(5*time.Millisecond + time.Duration(rand.Intn(5))*time.Millisecond)
57 if err := req.Respond([]byte("42")); err != nil {
58 if err := req.Error("500", "Unexpected error!", nil); err != nil {
59 t.Fatalf("Unexpected error when sending error response: %v", err)
60 }
61 return
62 }
63 }
64
65 var svcs []micro.Service
66
67 // Create 5 service responders.
68 config := micro.Config{
69 Name: "CoolAddService",
70 Version: "0.1.0",
71 Description: "Add things together",
72 Metadata: map[string]string{"basic": "metadata"},
73 Endpoint: &micro.EndpointConfig{
74 Subject: "svc.add",
75 Handler: micro.HandlerFunc(doAdd),
76 },
77 }
78
79 for i := 0; i < 5; i++ {
80 svc, err := micro.AddService(nc, config)
81 if err != nil {
82 t.Fatalf("Expected to create Service, got %v", err)
83 }
84 defer svc.Stop()
85 svcs = append(svcs, svc)
86 }
87
88 // Now send 50 requests.
89 for i := 0; i < 50; i++ {
90 _, err := nc.Request("svc.add", []byte(`{ "x": 22, "y": 11 }`), time.Second)
91 if err != nil {
92 t.Fatalf("Expected a response, got %v", err)
93 }

Callers

nothing calls this directly

Calls 15

HandlerFuncFuncType · 0.92
AddServiceFunction · 0.92
ControlSubjectFunction · 0.92
ConnectMethod · 0.80
FatalfMethod · 0.80
DurationMethod · 0.80
NewInboxMethod · 0.80
NextMsgMethod · 0.80
RunServerOnPortFunction · 0.70
ErrorMethod · 0.65
RespondMethod · 0.65
StopMethod · 0.65

Tested by

no test coverage detected