Skip to content

Commit 4739360

Browse files
committed
feat(alerts): integration tests for polling frequency field
1 parent 3acad52 commit 4739360

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

pkg/alerts/nrql_conditions_integration_test.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ var (
3030
nrqlConditionTitleTemplate = "Title {{ createdAt }}" // needed for setting pointer
3131
nrqlConditionPredictBy = 7200 // needed for setting pointer
3232
nrqlConditionSignalSeasonality = NrqlSignalSeasonalities.Weekly // needed for setting pointer
33+
nrqlConditionBasePollingFrequency = 3600 // needed for setting pointer
34+
nrqlConditionBasePollingAggWindow = 3600 // needed for setting pointer
3335
nrqlConditionCreateBase = NrqlConditionCreateBase{
3436
Description: "test description",
3537
Enabled: true,
@@ -1229,3 +1231,108 @@ func TestIntegrationNrqlConditions_DisableHealthStatusReporting(t *testing.T) {
12291231
}
12301232
}()
12311233
}
1234+
1235+
func TestIntegrationNrqlConditions_SignalPollingFrequency(t *testing.T) {
1236+
t.Parallel()
1237+
1238+
testAccountID, err := mock.GetTestAccountID()
1239+
if err != nil {
1240+
t.Skipf("%s", err)
1241+
}
1242+
1243+
var (
1244+
updatedPollingFrequency = 7200
1245+
)
1246+
1247+
var conditionCreateInput = NrqlConditionCreateInput{
1248+
NrqlConditionCreateBase: NrqlConditionCreateBase{
1249+
Enabled: true,
1250+
Name: fmt.Sprintf("test-nrql-condition-%s", testNrqlConditionRandomString),
1251+
Nrql: NrqlConditionCreateQuery{
1252+
Query: "select count(*) from CloudCost",
1253+
DataAccountId: &testAccountID,
1254+
},
1255+
Terms: []NrqlConditionTerm{
1256+
{
1257+
Threshold: &nrqlConditionBaseThreshold,
1258+
ThresholdOccurrences: ThresholdOccurrences.AtLeastOnce,
1259+
ThresholdDuration: 3600,
1260+
Operator: AlertsNRQLConditionTermsOperatorTypes.ABOVE,
1261+
Priority: NrqlConditionPriorities.Critical,
1262+
},
1263+
},
1264+
ViolationTimeLimitSeconds: 3600,
1265+
Signal: &AlertsNrqlConditionCreateSignal{
1266+
AggregationWindow: &nrqlConditionBasePollingAggWindow,
1267+
EvaluationDelay: &nrqlConditionEvaluationDelay,
1268+
AggregationDelay: &nrqlConditionBaseAggDelay,
1269+
PollingFrequency: &nrqlConditionBasePollingFrequency,
1270+
},
1271+
},
1272+
}
1273+
var conditionUpdateInput = NrqlConditionUpdateInput{
1274+
NrqlConditionUpdateBase: NrqlConditionUpdateBase{
1275+
Enabled: true,
1276+
Name: fmt.Sprintf("test-nrql-condition-%s", testNrqlConditionRandomString),
1277+
Nrql: NrqlConditionUpdateQuery{
1278+
Query: "select count(*) from CloudCost",
1279+
DataAccountId: &testAccountID,
1280+
},
1281+
Terms: []NrqlConditionTerm{
1282+
{
1283+
Threshold: &nrqlConditionBaseThreshold,
1284+
ThresholdOccurrences: ThresholdOccurrences.AtLeastOnce,
1285+
ThresholdDuration: 7200,
1286+
Operator: AlertsNRQLConditionTermsOperatorTypes.ABOVE,
1287+
Priority: NrqlConditionPriorities.Critical,
1288+
},
1289+
},
1290+
ViolationTimeLimitSeconds: 3600,
1291+
Signal: &AlertsNrqlConditionUpdateSignal{
1292+
AggregationWindow: &nrqlConditionBasePollingAggWindow,
1293+
EvaluationDelay: &nrqlConditionEvaluationDelay,
1294+
AggregationDelay: &nrqlConditionBaseAggDelay,
1295+
PollingFrequency: &updatedPollingFrequency,
1296+
},
1297+
},
1298+
}
1299+
1300+
var randStr = mock.RandSeq(5)
1301+
1302+
// Setup
1303+
client := newIntegrationTestClient(t)
1304+
testPolicy := AlertsPolicyInput{
1305+
IncidentPreference: AlertsIncidentPreferenceTypes.PER_POLICY,
1306+
Name: fmt.Sprintf("test-alert-policy-%s", randStr),
1307+
}
1308+
policy, err := client.CreatePolicyMutation(testAccountID, testPolicy)
1309+
require.NoError(t, err)
1310+
1311+
// Test: Create (condition with Signal.PollingFrequency field)
1312+
1313+
createdCondition, err := client.CreateNrqlConditionStaticMutation(testAccountID, policy.ID, conditionCreateInput)
1314+
require.NoError(t, err)
1315+
require.NotNil(t, createdCondition)
1316+
require.NotNil(t, createdCondition.ID)
1317+
require.NotNil(t, createdCondition.PolicyID)
1318+
require.Equal(t, &nrqlConditionBasePollingFrequency, createdCondition.Signal.PollingFrequency)
1319+
1320+
// Test: Get (condition with Signal.PollingFrequency field)
1321+
readResult, err := client.GetNrqlConditionQuery(testAccountID, createdCondition.ID)
1322+
require.NoError(t, err)
1323+
require.NotNil(t, readResult)
1324+
require.Equal(t, &nrqlConditionBasePollingFrequency, readResult.Signal.PollingFrequency)
1325+
1326+
// Test: Update (condition with non-default Signal.PollingFrequency field)
1327+
updatedCondition, err := client.UpdateNrqlConditionStaticMutation(testAccountID, createdCondition.ID, conditionUpdateInput)
1328+
require.NoError(t, err)
1329+
require.Equal(t, &updatedPollingFrequency, updatedCondition.Signal.PollingFrequency)
1330+
1331+
// Deferred teardown
1332+
defer func() {
1333+
_, err := client.DeletePolicyMutation(testAccountID, policy.ID)
1334+
if err != nil {
1335+
t.Logf("error cleaning up alert policy %s (%s): %s", policy.ID, policy.Name, err)
1336+
}
1337+
}()
1338+
}

0 commit comments

Comments
 (0)