MCPcopy Create free account
hub / github.com/ProspectOne/perfops-cli / TestDNSPerf

Function TestDNSPerf

perfops/run_test.go:221–275  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

219}
220
221func TestDNSPerf(t *testing.T) {
222 reqTestCases := map[string]struct {
223 dnsPerfReq DNSPerfRequest
224 tr *recordingTransport
225 expReqBody string
226 }{
227 "Required only": {DNSPerfRequest{Target: "example.com"}, &recordingTransport{}, `{"target":"example.com"}`},
228 "With server": {DNSPerfRequest{Target: "example.com", DNSServer: "127.0.0.1"}, &recordingTransport{}, `{"target":"example.com","dnsServer":"127.0.0.1"}`},
229 "With location": {DNSPerfRequest{Target: "example.com", Location: "Asia"}, &recordingTransport{}, `{"target":"example.com","location":"Asia"}`},
230 }
231 ctx := context.Background()
232 for name, tc := range reqTestCases {
233 t.Run(name, func(t *testing.T) {
234 c, err := newTestClient(tc.tr)
235 if err != nil {
236 t.Fatalf("unexpected error %v", err)
237 }
238 c.Run.DNSPerf(ctx, &tc.dnsPerfReq)
239 if got := reqBody(tc.tr.req); tc.expReqBody != "" && tc.expReqBody != got {
240 t.Fatalf("expected %v; got %v", tc.expReqBody, got)
241 }
242 })
243 }
244
245 testCases := map[string]struct {
246 target string
247 dnsServer string
248 limit int
249 testID string
250 tr *respondingTransport
251 err error
252 }{
253 "Invalid target": {"meep", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"target"}},
254 "Invalid DNS server": {"example.com", "127.0", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"dns server"}},
255 "Invalid limit": {"example.com", "127.0.0.1", freeMaxNodeCap + 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "135"}`)}, &argError{"limit"}},
256 "HTTP error": {"example.com", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(400, "POST", `{"Error": "an error"}`)}, errors.New(`400: {"Error": "an error"}`)},
257 "Failed": {"example.com", "127.0.0.1", 1, "", &respondingTransport{resp: dummyResp(201, "POST", `{"Error": "an error"}`)}, errors.New("an error")},
258 "Created": {"example.com", "127.0.0.1", 1, "0123456789abcdefghij", &respondingTransport{resp: dummyResp(201, "POST", `{"id": "0123456789abcdefghij"}`)}, nil},
259 }
260 for name, tc := range testCases {
261 t.Run(name, func(t *testing.T) {
262 c, err := newTestClient(tc.tr)
263 if err != nil {
264 t.Fatalf("unexpected error %v", err)
265 }
266 got, err := c.Run.DNSPerf(ctx, &DNSPerfRequest{Target: tc.target, DNSServer: tc.dnsServer, Limit: tc.limit})
267 if !cmpError(err, tc.err) {
268 t.Fatalf("expected %v; got %v", tc.err, err)
269 }
270 if string(got) != tc.testID {
271 t.Fatalf("expected %v; got %v", tc.testID, got)
272 }
273 })
274 }
275}
276
277func TestDNSPerfOutput(t *testing.T) {
278 testCases := map[string]struct {

Callers

nothing calls this directly

Calls 5

newTestClientFunction · 0.85
dummyRespFunction · 0.85
DNSPerfMethod · 0.80
reqBodyFunction · 0.70
cmpErrorFunction · 0.70

Tested by

no test coverage detected