github.com/newrelic/newrelic-client-go@v1.1.0/pkg/alerts/conditions_integration_test.go (about) 1 //go:build integration 2 // +build integration 3 4 package alerts 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 12 nr "github.com/newrelic/newrelic-client-go/pkg/testhelpers" 13 ) 14 15 func TestIntegrationConditions(t *testing.T) { 16 t.Parallel() 17 18 var ( 19 testConditionRandStr = nr.RandSeq(5) 20 testConditionPolicy = Policy{ 21 Name: fmt.Sprintf("test-integration-alert-conditions-%s", 22 testConditionRandStr), 23 IncidentPreference: IncidentPreferenceTypes.PerPolicy, 24 } 25 testCondition = Condition{ 26 Type: ConditionTypes.APMApplicationMetric, 27 Name: "Adpex (High)", 28 Enabled: true, 29 Entities: []string{}, 30 Metric: MetricTypes.Apdex, 31 RunbookURL: "", 32 Terms: []ConditionTerm{ 33 { 34 Duration: 5, 35 Operator: "above", 36 Priority: "critical", 37 Threshold: 0.9, 38 TimeFunction: TimeFunctionTypes.All, 39 }, 40 { 41 Duration: 5, 42 Operator: "equal", 43 Priority: "warning", 44 Threshold: 0.95, 45 TimeFunction: TimeFunctionTypes.All, 46 }, 47 }, 48 UserDefined: ConditionUserDefined{ 49 Metric: "", 50 ValueFunction: "", 51 }, 52 Scope: "application", 53 GCMetric: "", 54 ViolationCloseTimer: 0, 55 } 56 ) 57 58 client := newIntegrationTestClient(t) 59 60 // Setup 61 policy, err := client.CreatePolicy(testConditionPolicy) 62 63 require.NoError(t, err) 64 65 // Deferred teardown 66 defer func() { 67 _, err := client.DeletePolicy(policy.ID) 68 69 if err != nil { 70 t.Logf("error cleaning up alert policy %d (%s): %s", policy.ID, policy.Name, err) 71 } 72 }() 73 74 // Test: Create 75 createResult, err := client.CreateCondition(policy.ID, testCondition) 76 77 require.NoError(t, err) 78 require.NotNil(t, createResult) 79 80 // Test: Get 81 listResult, err := client.ListConditions(policy.ID) 82 83 require.NoError(t, err) 84 require.Greater(t, len(listResult), 0) 85 86 // Test: Get 87 readResult, err := client.GetCondition(policy.ID, createResult.ID) 88 89 require.NoError(t, err) 90 require.NotNil(t, readResult) 91 92 // Test: Update 93 createResult.Name = "Apdex Update Test" 94 updateResult, err := client.UpdateCondition(*createResult) 95 96 require.NoError(t, err) 97 require.NotNil(t, updateResult) 98 require.Equal(t, "Apdex Update Test", updateResult.Name) 99 100 // Test: Delete 101 result, err := client.DeleteCondition(updateResult.ID) 102 103 require.NoError(t, err) 104 require.NotNil(t, result) 105 }