(t *testing.T)
| 34 | ) |
| 35 | |
| 36 | func 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: µ.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 | } |
nothing calls this directly
no test coverage detected