From 5e409117733a13a5e9ffba12480f4a131e832f05 Mon Sep 17 00:00:00 2001 From: Alex Barksdale Date: Tue, 13 Jul 2021 18:23:52 -0500 Subject: [PATCH] Update Postgres collection error type to match MySQL (#9698) * [Update] Collection error type to array * [Update] Collection err tests --- .../datadog_checks/postgres/statement_samples.py | 6 +++--- postgres/tests/test_pg_integration.py | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/postgres/datadog_checks/postgres/statement_samples.py b/postgres/datadog_checks/postgres/statement_samples.py index 8fea2c8c10b3b..548b72d21322a 100644 --- a/postgres/datadog_checks/postgres/statement_samples.py +++ b/postgres/datadog_checks/postgres/statement_samples.py @@ -363,9 +363,9 @@ def _collect_plan_for_statement(self, row): plan_dict, explain_err_code, err_msg = self._run_explain_safe( row['datname'], row['query'], obfuscated_statement ) - collection_error = None + collection_errors = None if explain_err_code: - collection_error = {'code': explain_err_code.value, 'message': err_msg if err_msg else None} + collection_errors = [{'code': explain_err_code.value, 'message': err_msg if err_msg else None}] plan, normalized_plan, obfuscated_plan, plan_signature = None, None, None, None if plan_dict: @@ -395,7 +395,7 @@ def _collect_plan_for_statement(self, row): "plan": { "definition": obfuscated_plan, "signature": plan_signature, - "collection_error": collection_error, + "collection_errors": collection_errors, }, "query_signature": query_signature, "resource_hash": query_signature, diff --git a/postgres/tests/test_pg_integration.py b/postgres/tests/test_pg_integration.py index 235426c291a16..5b32fb652a842 100644 --- a/postgres/tests/test_pg_integration.py +++ b/postgres/tests/test_pg_integration.py @@ -480,7 +480,7 @@ def test_get_db_explain_setup_state(integration_check, dbm_instance, dbname, exp @pytest.mark.parametrize("pg_stat_activity_view", ["pg_stat_activity", "datadog.pg_stat_activity()"]) @pytest.mark.parametrize( - "user,password,dbname,query,arg,expected_error_tag,expected_collection_error,expected_statement_truncated", + "user,password,dbname,query,arg,expected_error_tag,expected_collection_errors,expected_statement_truncated", [ ( "bob", @@ -509,7 +509,7 @@ def test_get_db_explain_setup_state(integration_check, dbm_instance, dbname, exp "SELECT * FROM kennel WHERE id = %s", 123, "error:explain-{}".format(DBExplainError.invalid_schema), - {'code': 'invalid_schema', 'message': ""}, + [{'code': 'invalid_schema', 'message': ""}], StatementTruncationState.not_truncated.value, ), ( @@ -519,7 +519,7 @@ def test_get_db_explain_setup_state(integration_check, dbm_instance, dbname, exp "SELECT * FROM kennel WHERE id = %s", 123, "error:explain-{}".format(DBExplainError.failed_function), - {'code': 'failed_function', 'message': ""}, + [{'code': 'failed_function', 'message': ""}], StatementTruncationState.not_truncated.value, ), ( @@ -542,7 +542,7 @@ def test_get_db_explain_setup_state(integration_check, dbm_instance, dbname, exp # looking at the length in bytes when testing for truncated statements u'\u20AC\u20AC\u20AC\u20AC\u20AC\u20AC\u20AC\u20AC\u20AC\u20AC', "error:explain-{}".format(DBExplainError.query_truncated), - {'code': 'query_truncated', 'message': 'track_activity_query_size=1024'}, + [{'code': 'query_truncated', 'message': 'track_activity_query_size=1024'}], StatementTruncationState.truncated.value, ), ], @@ -558,7 +558,7 @@ def test_statement_samples_collect( query, arg, expected_error_tag, - expected_collection_error, + expected_collection_errors, expected_statement_truncated, ): dbm_instance['pg_stat_activity_view'] = pg_stat_activity_view @@ -612,9 +612,9 @@ def test_statement_samples_collect( # validate the events to ensure we've provided an explanation for not providing an exec plan for event in matching: if event['db']['plan']['definition'] is None: - assert event['db']['plan']['collection_error'] == expected_collection_error + assert event['db']['plan']['collection_errors'] == expected_collection_errors else: - assert event['db']['plan']['collection_error'] is None + assert event['db']['plan']['collection_errors'] is None finally: conn.close()