Add basic logs enabled check (#92324)

This commit is contained in:
Alyssa (Bull) Joyner
2024-09-09 13:35:56 -06:00
committed by GitHub
parent 951f676ac8
commit 0049e4f997
3 changed files with 62 additions and 24 deletions
@@ -83,15 +83,6 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
t.Errorf("failed to create fake client")
}
dsInfo := types.DatasourceInfo{
Services: map[string]types.DatasourceService{
"Azure Monitor": {URL: svr.URL, HTTPClient: client},
},
JSONData: map[string]any{
"azureLogAnalyticsSameAs": false,
},
}
appInsightsRegExp, err := regexp.Compile("(?i)providers/microsoft.insights/components")
if err != nil {
t.Error("failed to compile reg: %w", err)
@@ -100,6 +91,7 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
tests := []struct {
name string
fromAlert bool
basicLogsEnabled bool
queryModel backend.DataQuery
azureLogAnalyticsQuery *AzureLogAnalyticsQuery
Err require.ErrorAssertionFunc
@@ -332,8 +324,9 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
Err: require.NoError,
},
{
name: "Basic Logs query",
fromAlert: false,
name: "Basic Logs query",
fromAlert: false,
basicLogsEnabled: true,
queryModel: backend.DataQuery{
JSON: []byte(fmt.Sprintf(`{
"queryType": "Azure Log Analytics",
@@ -377,8 +370,9 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
Err: require.NoError,
},
{
name: "Basic Logs query with multiple resources",
fromAlert: false,
name: "Basic Logs query with multiple resources",
fromAlert: false,
basicLogsEnabled: true,
queryModel: backend.DataQuery{
JSON: []byte(fmt.Sprintf(`{
"queryType": "Azure Log Analytics",
@@ -399,8 +393,9 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
Err: require.Error,
},
{
name: "Basic Logs query with non LA workspace resources",
fromAlert: false,
name: "Basic Logs query with non LA workspace resources",
fromAlert: false,
basicLogsEnabled: true,
queryModel: backend.DataQuery{
JSON: []byte(fmt.Sprintf(`{
"queryType": "Azure Log Analytics",
@@ -421,8 +416,9 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
Err: require.Error,
},
{
name: "Basic Logs query from alerts",
fromAlert: true,
name: "Basic Logs query from alerts",
fromAlert: true,
basicLogsEnabled: true,
queryModel: backend.DataQuery{
JSON: []byte(fmt.Sprintf(`{
"queryType": "Azure Log Analytics",
@@ -442,6 +438,30 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
azureLogAnalyticsQuery: nil,
Err: require.Error,
},
{
name: "Basic Logs query fails if basicLogsEnabled is set to false",
fromAlert: true,
basicLogsEnabled: false,
queryModel: backend.DataQuery{
JSON: []byte(fmt.Sprintf(`{
"queryType": "Azure Log Analytics",
"azureLogAnalytics": {
"resources": ["/subscriptions/test-sub/resourceGroups/test-rg/providers/Microsoft.Insights/components/r1"],
"query": "Perf",
"resultFormat": "%s",
"dashboardTime": true,
"timeColumn": "TimeGenerated",
"basicLogsQuery": true
}
}`, dataquery.ResultFormatTimeSeries)),
RefID: "A",
TimeRange: timeRange,
QueryType: string(dataquery.AzureQueryTypeAzureLogAnalytics),
},
azureLogAnalyticsQuery: nil,
Err: require.Error,
},
{
name: "Detects App Insights resource queries",
fromAlert: false,
@@ -524,6 +544,15 @@ func TestBuildLogAnalyticsQuery(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
dsInfo := types.DatasourceInfo{
Services: map[string]types.DatasourceService{
"Azure Monitor": {URL: svr.URL, HTTPClient: client},
},
JSONData: map[string]any{
"azureLogAnalyticsSameAs": false,
"basicLogsEnabled": tt.basicLogsEnabled, // Use the value from the current test case
},
}
query, err := buildLogAnalyticsQuery(tt.queryModel, dsInfo, appInsightsRegExp, tt.fromAlert)
tt.Err(t, err)
if diff := cmp.Diff(tt.azureLogAnalyticsQuery, query); diff != "" {