Skip to content

Commit

Permalink
chore: detecting drift via multiple error substrings
Browse files Browse the repository at this point in the history
  • Loading branch information
sanderblue committed May 28, 2024
1 parent f51ebda commit ec95f28
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 35 deletions.
71 changes: 44 additions & 27 deletions .github/workflows/test_integration_cron.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,57 @@
name: Integration Tests Cron Job

on:
workflow_dispatch: # this is just to test the functionality, remove before merging!!!!!!!!!!!!
workflow_dispatch:
push:
branches: [feat/integration-test-cron-job]
# schedule:
# # Cron executes at 0800, 1200 1600 (8am, 12pm, 4pm)
# - cron: "0 8,12,16 * * 1-5"

jobs:
test-integration:
# if: github.ref == 'refs/heads/main'
uses: newrelic/terraform-provider-newrelic/.github/workflows/test_integration.yml@feat/integration-test-cron-job
secrets:
NEW_RELIC_ACCOUNT_ID: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
NEW_RELIC_SUBACCOUNT_ID: ${{ secrets.NEW_RELIC_SUBACCOUNT_ID }}
NEW_RELIC_ADMIN_API_KEY: ${{ secrets.NEW_RELIC_ADMIN_API_KEY }}
NEW_RELIC_API_KEY: ${{ secrets.NEW_RELIC_API_KEY }}
NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY }}
NEW_RELIC_REGION: ${{ secrets.NEW_RELIC_REGION }}
NEW_RELIC_INSIGHTS_INSERT_KEY: ${{ secrets.NEW_RELIC_INSIGHTS_INSERT_KEY }}
NR_ACC_TESTING: ${{ secrets.NR_ACC_TESTING }}
INTEGRATION_TESTING_AWS_ARN: ${{ secrets.INTEGRATION_TESTING_AWS_ARN }}
INTEGRATION_TESTING_GCP_ACCOUNT_NAME: ${{ secrets.INTEGRATION_TESTING_GCP_ACCOUNT_NAME }}
INTEGRATION_TESTING_GCP_PROJECT_ID: ${{ secrets.INTEGRATION_TESTING_GCP_PROJECT_ID }}
INTEGRATION_TESTING_GCP_INTEGRATIONS_PROJECT_ID: ${{secrets.INTEGRATION_TESTING_GCP_INTEGRATIONS_PROJECT_ID}}
INTEGRATION_TESTING_AZURE_APPLICATION_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_APPLICATION_ID }}
INTEGRATION_TESTING_AZURE_CLIENT_SECRET_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_CLIENT_SECRET_ID }}
INTEGRATION_TESTING_AZURE_SUBSCRIPTION_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_SUBSCRIPTION_ID }}
INTEGRATION_TESTING_AZURE_TENANT_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_TENANT_ID }}

detect-drift:
runs-on: ubuntu-latest
steps:
- name: Check check
run: ls
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.21.x

- name: Add GOBIN to PATH
run: echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
shell: bash

- name: Checkout code
uses: actions/checkout@v4

- name: Cache deps
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Integration Tests
run: make test-integration cover-report
continue-on-error: true
env:
NEW_RELIC_ACCOUNT_ID: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
NEW_RELIC_SUBACCOUNT_ID: ${{ secrets.NEW_RELIC_SUBACCOUNT_ID }}
NEW_RELIC_ADMIN_API_KEY: ${{ secrets.NEW_RELIC_ADMIN_API_KEY }}
NEW_RELIC_API_KEY: ${{ secrets.NEW_RELIC_API_KEY }}
NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY }}
NEW_RELIC_REGION: ${{ secrets.NEW_RELIC_REGION }}
NEW_RELIC_INSIGHTS_INSERT_KEY: ${{ secrets.NEW_RELIC_INSIGHTS_INSERT_KEY }}
NR_ACC_TESTING: ${{ secrets.NR_ACC_TESTING }}
INTEGRATION_TESTING_AWS_ARN: ${{ secrets.INTEGRATION_TESTING_AWS_ARN }}
INTEGRATION_TESTING_GCP_ACCOUNT_NAME: ${{ secrets.INTEGRATION_TESTING_GCP_ACCOUNT_NAME }}
INTEGRATION_TESTING_GCP_PROJECT_ID: ${{ secrets.INTEGRATION_TESTING_GCP_PROJECT_ID }}
INTEGRATION_TESTING_GCP_INTEGRATIONS_PROJECT_ID: ${{secrets.INTEGRATION_TESTING_GCP_INTEGRATIONS_PROJECT_ID}}
INTEGRATION_TESTING_AZURE_APPLICATION_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_APPLICATION_ID }}
INTEGRATION_TESTING_AZURE_CLIENT_SECRET_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_CLIENT_SECRET_ID }}
INTEGRATION_TESTING_AZURE_SUBSCRIPTION_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_SUBSCRIPTION_ID }}
INTEGRATION_TESTING_AZURE_TENANT_ID: ${{ secrets.INTEGRATION_TESTING_AZURE_TENANT_ID }}

- name: Detect drift
if: ${{ always() }}
Expand All @@ -45,7 +64,6 @@ jobs:
- name: Send report to Slack
id: slack
if: ${{ steps.detect-state-drift.outputs.drift_report != '' }}
uses: slackapi/[email protected]
with:
# Uses Slack's Block Kit to build the message
Expand All @@ -68,7 +86,7 @@ jobs:
"elements": [
{
"type": "plain_text",
"text": ${{ toJSON(steps.detect-state-drift.outputs.failed_tests_with_drift) }}
"text": "${{ toJSON(steps.detect-state-drift.outputs.failed_tests_with_drift) }}"
}
]
},
Expand Down Expand Up @@ -98,4 +116,3 @@ jobs:
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

5 changes: 1 addition & 4 deletions newrelic/resource_newrelic_notifications_channel_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,7 @@ func TestNewRelicNotificationChannel_WebhookPropertyError(t *testing.T) {
# Test error for missing property key = url
`
destinationPropsAttr := `property {
key = "url"
value = "https://webhook.site/"
}
destinationPropsAttr := `
`

resource.ParallelTest(t, resource.TestCase{
Expand Down
24 changes: 20 additions & 4 deletions scripts/detect-state-drift.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,32 @@ module.exports = async ({
// console.log(jsonData);

const report = jsonData.filter(data => {
return data.Output ? data.Output.includes('error: After applying this test step, the plan was not empty') : false;
}).map(t => t.Output.trim());
const driftDetectedSubStrings = [
'the plan was not empty',
'expected an error but got none',
];

if (!data.Output) {
return false;
}

console.log(report);
let driftDetected = false
for (let i = 0; i < driftDetectedSubStrings.length; i++) {
if (data.Output.includes(driftDetectedSubStrings[i])) {
return true;
}
}

let msg = 'error: After applying this test step, the plan was not empty';
return driftDetected
}).map(t => t.Output.trim());

let msg = 'No drift detected.';
if (report.length > 0) {
msg = `'${report.join('\n')}'`;
}

console.log('drift_report:', msg);

core.setOutput('drift_report', msg);
});
};

0 comments on commit ec95f28

Please sign in to comment.