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  }