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, &params)
    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  }