diff --git a/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go b/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go index ca1c2536..1fd52dc9 100644 --- a/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go +++ b/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go @@ -16,13 +16,14 @@ import ( ) func TestPopulateBlockingMetrics(t *testing.T) { - conn, mock := connection.CreateMockSQL(t) pgIntegration, _ := integration.New("test", "1.0.0") args := args.ArgumentList{QueryCountThreshold: 10} databaseName := "testdb" - version := uint64(13) - expectedQuery := queries.BlockingQueriesForV12AndV13 + version := uint64(14) + validationQueryStatStatements := fmt.Sprintf("SELECT count(*) FROM pg_extension WHERE extname = '%s'", "pg_stat_statements") + mock.ExpectQuery(regexp.QuoteMeta(validationQueryStatStatements)).WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(1)) + expectedQuery := queries.BlockingQueriesForV14AndAbove query := fmt.Sprintf(expectedQuery, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "blocked_pid", "blocked_query", "blocked_query_id", "blocked_query_start", "database_name", @@ -37,17 +38,6 @@ func TestPopulateBlockingMetrics(t *testing.T) { assert.NoError(t, mock.ExpectationsWereMet()) } -func TestPopulateBlockingMetricsUnSupportedVersion(t *testing.T) { - conn, mock := connection.CreateMockSQL(t) - pgIntegration, _ := integration.New("test", "1.0.0") - args := args.ArgumentList{QueryCountThreshold: 10} - databaseName := "testdb" - version := uint64(11) - err := performancemetrics.PopulateBlockingMetrics(conn, pgIntegration, args, databaseName, version) - assert.EqualError(t, err, commonutils.ErrNotEligible.Error()) - assert.NoError(t, mock.ExpectationsWereMet()) -} - func TestPopulateBlockingMetricsSupportedVersionExtensionNotRequired(t *testing.T) { conn, mock := connection.CreateMockSQL(t) pgIntegration, _ := integration.New("test", "1.0.0") @@ -68,6 +58,17 @@ func TestPopulateBlockingMetricsSupportedVersionExtensionNotRequired(t *testing. assert.NoError(t, mock.ExpectationsWereMet()) } +func TestPopulateBlockingMetricsUnSupportedVersion(t *testing.T) { + conn, mock := connection.CreateMockSQL(t) + pgIntegration, _ := integration.New("test", "1.0.0") + args := args.ArgumentList{QueryCountThreshold: 10} + databaseName := "testdb" + version := uint64(11) + err := performancemetrics.PopulateBlockingMetrics(conn, pgIntegration, args, databaseName, version) + assert.EqualError(t, err, commonutils.ErrNotEligible.Error()) + assert.NoError(t, mock.ExpectationsWereMet()) +} + func TestPopulateBlockingMetricsExtensionsNotEnabled(t *testing.T) { conn, mock := connection.CreateMockSQL(t) pgIntegration, _ := integration.New("test", "1.0.0") diff --git a/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go b/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go index 856214bd..d44bbe17 100644 --- a/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go +++ b/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go @@ -56,15 +56,12 @@ func TestPopulateSlowMetricsInEligibility(t *testing.T) { assert.NoError(t, mock.ExpectationsWereMet()) } -func TestGetSlowRunningMetrics(t *testing.T) { - +func runSlowQueryTest(t *testing.T, query string, version uint64, expectedLength int) { conn, mock := connection.CreateMockSQL(t) args := args.ArgumentList{QueryCountThreshold: 10} databaseName := "testdb" - version := uint64(13) - expectedQuery := queries.SlowQueriesForV13AndAbove - query := fmt.Sprintf(expectedQuery, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + query = fmt.Sprintf(query, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "query_id", "query_text", "database_name", "schema_name", "execution_count", "avg_elapsed_time_ms", "avg_disk_reads", "avg_disk_writes", "statement_type", "collection_timestamp", @@ -75,17 +72,23 @@ func TestGetSlowRunningMetrics(t *testing.T) { slowQueryList, _, err := performancemetrics.GetSlowRunningMetrics(conn, args, databaseName, version) assert.NoError(t, err) - assert.Len(t, slowQueryList, 1) + assert.Len(t, slowQueryList, expectedLength) assert.NoError(t, mock.ExpectationsWereMet()) } -func TestGetSlowRunningEmptyMetrics(t *testing.T) { +func TestGetSlowRunningMetrics(t *testing.T) { + runSlowQueryTest(t, queries.SlowQueriesForV13AndAbove, 13, 1) +} +func TestGetSlowRunningMetricsV12(t *testing.T) { + runSlowQueryTest(t, queries.SlowQueriesForV12, 12, 1) +} + +func TestGetSlowRunningEmptyMetrics(t *testing.T) { conn, mock := connection.CreateMockSQL(t) args := args.ArgumentList{QueryCountThreshold: 10} databaseName := "testdb" version := uint64(13) - expectedQuery := queries.SlowQueriesForV13AndAbove query := fmt.Sprintf(expectedQuery, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ @@ -99,29 +102,6 @@ func TestGetSlowRunningEmptyMetrics(t *testing.T) { assert.NoError(t, mock.ExpectationsWereMet()) } -func TestGetSlowRunningMetricsV12(t *testing.T) { - - conn, mock := connection.CreateMockSQL(t) - args := args.ArgumentList{QueryCountThreshold: 10} - databaseName := "testdb" - version := uint64(12) - - expectedQuery := queries.SlowQueriesForV12 - query := fmt.Sprintf(expectedQuery, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) - mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ - "newrelic", "query_id", "query_text", "database_name", "schema_name", "execution_count", - "avg_elapsed_time_ms", "avg_disk_reads", "avg_disk_writes", "statement_type", "collection_timestamp", - }).AddRow( - "newrelic", "queryid1", "SELECT 1", "testdb", "public", 10, - 15.0, 5.0, 2.0, "SELECT", "2023-01-01T00:00:00Z", - )) - slowQueryList, _, err := performancemetrics.GetSlowRunningMetrics(conn, args, databaseName, version) - - assert.NoError(t, err) - assert.Len(t, slowQueryList, 1) - assert.NoError(t, mock.ExpectationsWereMet()) -} - func TestGetSlowRunningMetricsUnsupportedVersion(t *testing.T) { conn, mock := connection.CreateMockSQL(t)