github.com/newrelic/newrelic-client-go@v1.1.0/pkg/apm/application_instances_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package apm 5 6 import ( 7 "fmt" 8 "net/http" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestListApplicationInstancesWithParams(t *testing.T) { 15 t.Parallel() 16 expectedHost := "appHost" 17 expectedIDs := "123,456" 18 19 apm := newTestClient(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 20 values := r.URL.Query() 21 22 host := values.Get("filter[hostname]") 23 ids := values.Get("filter[ids]") 24 25 assert.Equal(t, expectedHost, host) 26 assert.Equal(t, expectedIDs, ids) 27 28 w.Header().Set("Content-Type", "application/json") 29 _, err := w.Write([]byte(`{"application_instances":[]}`)) 30 31 assert.NoError(t, err) 32 })) 33 34 params := ListApplicationInstancesParams{ 35 Hostname: expectedHost, 36 IDs: []int{123, 456}, 37 } 38 39 _, err := apm.ListApplicationInstances(testApplication.ID, ¶ms) 40 41 assert.NoError(t, err) 42 } 43 44 func TestGetApplicationInstance(t *testing.T) { 45 t.Parallel() 46 47 testApplicationID := 204261410 48 testApplicationInstanceID := 317218023 49 testApplicationHostID := 204260579 50 51 testApplicationInstanceSummary := ApplicationSummary{ 52 ResponseTime: 5.91, 53 Throughput: 1, 54 ErrorRate: 0, 55 ApdexScore: 1, 56 InstanceCount: 1, 57 } 58 59 testApplicationInstanceEndUserSummary := ApplicationEndUserSummary{ 60 ResponseTime: 5.91, 61 Throughput: 1, 62 ApdexTarget: 0, 63 ApdexScore: 1, 64 } 65 66 testApplicationInstanceLinks := ApplicationInstanceLinks{ 67 Application: testApplicationID, 68 ApplicationHost: testApplicationHostID, 69 } 70 71 testApplicationInstance := ApplicationInstance{ 72 ID: testApplicationInstanceID, 73 ApplicationName: "Billing Service", 74 Host: "host", 75 Port: 80, 76 Language: "python", 77 HealthStatus: "unknown", 78 Summary: testApplicationInstanceSummary, 79 EndUserSummary: testApplicationInstanceEndUserSummary, 80 Links: testApplicationInstanceLinks, 81 } 82 83 testApplicationInstanceJson := fmt.Sprintf(`{ 84 "id": %d, 85 "application_name": "Billing Service", 86 "language": "python", 87 "port": 80, 88 "host": "host", 89 "health_status": "unknown", 90 "application_summary": { 91 "response_time": 5.91, 92 "throughput": 1, 93 "error_rate": 0, 94 "apdex_score": 1, 95 "instance_count": 1 96 }, 97 "end_user_summary": { 98 "response_time": 5.91, 99 "throughput": 1, 100 "apdex_score": 1 101 }, 102 "links": { 103 "application": %d, 104 "application_host": %d 105 } 106 }`, testApplicationInstanceID, testApplicationID, testApplicationHostID) 107 108 responseJSON := fmt.Sprintf(`{ "application_instance": %s}`, testApplicationInstanceJson) 109 apm := newMockResponse(t, responseJSON, http.StatusOK) 110 111 actual, err := apm.GetApplicationInstance(testApplication.ID, testApplicationInstance.ID) 112 113 assert.NoError(t, err) 114 assert.NotNil(t, actual) 115 assert.Equal(t, &testApplicationInstance, actual) 116 }