From c8ab31f71ec20e4cb97a8df22940f110d63af53b Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Tue, 23 Aug 2022 17:32:55 +0200 Subject: [PATCH 01/20] Add selected_message_queues flag --- ibm_i/datadog_checks/ibm_i/config_models/defaults.py | 2 ++ ibm_i/datadog_checks/ibm_i/config_models/instance.py | 1 + ibm_i/datadog_checks/ibm_i/data/conf.yaml.example | 7 +++++++ ibm_i/datadog_checks/ibm_i/queries.py | 7 ++++--- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py index 54def8381a9d1..808c640f57d8f 100644 --- a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py +++ b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py @@ -67,6 +67,8 @@ def instance_queries(field, value): def instance_query_timeout(field, value): return 30 +def instance_selected_message_queues(field, value): + return get_default_field_value(field, value) def instance_service(field, value): return get_default_field_value(field, value) diff --git a/ibm_i/datadog_checks/ibm_i/config_models/instance.py b/ibm_i/datadog_checks/ibm_i/config_models/instance.py index a646f75bd535e..94f282e8445ce 100644 --- a/ibm_i/datadog_checks/ibm_i/config_models/instance.py +++ b/ibm_i/datadog_checks/ibm_i/config_models/instance.py @@ -49,6 +49,7 @@ class Config: password: Optional[str] queries: Optional[Sequence[Query]] query_timeout: Optional[int] = Field(None, gt=0) + selected_message_queues: Optional[Sequence[str]] service: Optional[str] severity_threshold: Optional[int] = Field(None, ge=0, le=99) system: Optional[str] diff --git a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example index d36925aa70e63..58e6c46015074 100644 --- a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example +++ b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example @@ -87,6 +87,13 @@ instances: # - : # - : + ## @param selected_message_queues - list of strings - optional + ## Filters the message queues you're watching to make your queries less computer-intensive. By default no filter is applied. + # + # selected_message_queues: + # - + # - + ## @param service - string - optional ## Attach the tag `service:` to every metric, event, and service check emitted by this integration. ## diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 9cab296ec3c7c..12e1eb4343fef 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -257,13 +257,14 @@ def get_job_queue_info(timeout): } -def get_message_queue_info(timeout, sev): +def get_message_queue_info(timeout, sev, selected_message_queues): + message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(selected_message_queues)})" if selected_message_queues else "" return { 'name': 'message_queue_info', 'query': { 'text': ( f'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= {sev} THEN 1 ELSE 0 END) ' # noqa:E501 - 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' + f'FROM QSYS2.MESSAGE_QUEUE_INFO {message_queues_filter} GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' ), 'timeout': timeout, }, @@ -287,5 +288,5 @@ def query_map(config: InstanceConfig): "job_memory_usage": get_job_memory_usage(config.job_query_timeout), "memory_info": get_memory_info(config.query_timeout), "job_queue": get_job_queue_info(config.query_timeout), - "message_queue_info": get_message_queue_info(config.system_mq_query_timeout, config.severity_threshold), + "message_queue_info": get_message_queue_info(config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues), } From 97e5441ca7b50f42d54acaa832ab93cb7ad13932 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Fri, 2 Sep 2022 16:54:34 +0200 Subject: [PATCH 02/20] Fix formatting issue --- ibm_i/datadog_checks/ibm_i/queries.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 12e1eb4343fef..7e295b82fa0a2 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -258,7 +258,8 @@ def get_job_queue_info(timeout): def get_message_queue_info(timeout, sev, selected_message_queues): - message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(selected_message_queues)})" if selected_message_queues else "" + message_queues_list = [f"'{elt}'" for elt in selected_message_queues] + message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" return { 'name': 'message_queue_info', 'query': { From aee17fc98bd9db3a6b990c14dc4b075d29efec07 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 5 Sep 2022 14:26:27 +0200 Subject: [PATCH 03/20] Fix specs and example conf file --- ibm_i/assets/configuration/spec.yaml | 10 ++++++++++ ibm_i/datadog_checks/ibm_i/data/conf.yaml.example | 14 +++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ibm_i/assets/configuration/spec.yaml b/ibm_i/assets/configuration/spec.yaml index 28157f2f1c68d..3d0821298ae38 100644 --- a/ibm_i/assets/configuration/spec.yaml +++ b/ibm_i/assets/configuration/spec.yaml @@ -94,4 +94,14 @@ files: - name: "job_queue" - name: "message_queue_info" default: *queries_default + - name: selected_message_queues + description: | + Filters the message queues to make your queries less computer-intensive. By default no filter is applied. + value: + type: array + items: + type: string + example: + - QSYSOPR + - QPGMR - template: instances/default diff --git a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example index 58e6c46015074..0745ff94a3c2f 100644 --- a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example +++ b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example @@ -78,6 +78,13 @@ instances: # - name: job_queue # - name: message_queue_info + ## @param selected_message_queues - list of strings - optional + ## Filters the message queues to make your queries less computer-intensive. By default no filter is applied. + # + # selected_message_queues: + # - QSYSOPR + # - QPGMR + ## @param tags - list of strings - optional ## A list of tags to attach to every metric and service check emitted by this instance. ## @@ -87,13 +94,6 @@ instances: # - : # - : - ## @param selected_message_queues - list of strings - optional - ## Filters the message queues you're watching to make your queries less computer-intensive. By default no filter is applied. - # - # selected_message_queues: - # - - # - - ## @param service - string - optional ## Attach the tag `service:` to every metric, event, and service check emitted by this integration. ## From 1388fce07e3c1256c925ceb7b8a687a94b5e6e22 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 5 Sep 2022 14:35:57 +0200 Subject: [PATCH 04/20] Fix models for linter --- ibm_i/datadog_checks/ibm_i/config_models/defaults.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py index 808c640f57d8f..a3dbcc0fbbf2a 100644 --- a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py +++ b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py @@ -67,9 +67,11 @@ def instance_queries(field, value): def instance_query_timeout(field, value): return 30 + def instance_selected_message_queues(field, value): return get_default_field_value(field, value) + def instance_service(field, value): return get_default_field_value(field, value) From 5fc95a170a3289f07da88c477629838d50844136 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 5 Sep 2022 14:46:41 +0200 Subject: [PATCH 05/20] Adding noqa:E501 comments to silence flake8 and keep readability --- ibm_i/datadog_checks/ibm_i/queries.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 7e295b82fa0a2..50e8ba68c5411 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -259,13 +259,13 @@ def get_job_queue_info(timeout): def get_message_queue_info(timeout, sev, selected_message_queues): message_queues_list = [f"'{elt}'" for elt in selected_message_queues] - message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" + message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" # noqa:E501 return { 'name': 'message_queue_info', 'query': { 'text': ( f'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= {sev} THEN 1 ELSE 0 END) ' # noqa:E501 - f'FROM QSYS2.MESSAGE_QUEUE_INFO {message_queues_filter} GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' + f'FROM QSYS2.MESSAGE_QUEUE_INFO {message_queues_filter} GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ), 'timeout': timeout, }, @@ -289,5 +289,5 @@ def query_map(config: InstanceConfig): "job_memory_usage": get_job_memory_usage(config.job_query_timeout), "memory_info": get_memory_info(config.query_timeout), "job_queue": get_job_queue_info(config.query_timeout), - "message_queue_info": get_message_queue_info(config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues), + "message_queue_info": get_message_queue_info(config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues), # noqa:E501 } From 3682dd2d390dce0751d9980e392fdaed45e8f08d Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 5 Sep 2022 14:56:19 +0200 Subject: [PATCH 06/20] Fix Black linter --- ibm_i/datadog_checks/ibm_i/queries.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 50e8ba68c5411..70c46e978c201 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -259,7 +259,9 @@ def get_job_queue_info(timeout): def get_message_queue_info(timeout, sev, selected_message_queues): message_queues_list = [f"'{elt}'" for elt in selected_message_queues] - message_queues_filter = f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" # noqa:E501 + message_queues_filter = ( + f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" + ) return { 'name': 'message_queue_info', 'query': { @@ -289,5 +291,7 @@ def query_map(config: InstanceConfig): "job_memory_usage": get_job_memory_usage(config.job_query_timeout), "memory_info": get_memory_info(config.query_timeout), "job_queue": get_job_queue_info(config.query_timeout), - "message_queue_info": get_message_queue_info(config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues), # noqa:E501 + "message_queue_info": get_message_queue_info( + config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues + ), } From c27507b2f0e17324f268977acc67a2afc0af3778 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Wed, 14 Sep 2022 12:15:32 +0200 Subject: [PATCH 07/20] Changed configuration structure --- ibm_i/assets/configuration/spec.yaml | 21 ++++++++++++------- .../ibm_i/config_models/defaults.py | 8 +++---- .../ibm_i/config_models/instance.py | 9 +++++++- .../ibm_i/data/conf.yaml.example | 10 ++++++--- ibm_i/datadog_checks/ibm_i/queries.py | 15 +++++++++---- 5 files changed, 44 insertions(+), 19 deletions(-) diff --git a/ibm_i/assets/configuration/spec.yaml b/ibm_i/assets/configuration/spec.yaml index 3d0821298ae38..695e1a1ed3989 100644 --- a/ibm_i/assets/configuration/spec.yaml +++ b/ibm_i/assets/configuration/spec.yaml @@ -94,14 +94,21 @@ files: - name: "job_queue" - name: "message_queue_info" default: *queries_default - - name: selected_message_queues + - name: message_queue_info description: | - Filters the message queues to make your queries less computer-intensive. By default no filter is applied. + A configuration mapping for the message_queue_info query. + + selected_message_queues filters the message queues to make your queries less computer-intensive. + By default no filter is applied. value: - type: array - items: - type: string example: - - QSYSOPR - - QPGMR + selected_message_queues: + - QSYSOPR + - QPGMR + type: object + properties: + - name: selected_message_queues + type: array + items: + type: string - template: instances/default diff --git a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py index a3dbcc0fbbf2a..b8692356f4ff6 100644 --- a/ibm_i/datadog_checks/ibm_i/config_models/defaults.py +++ b/ibm_i/datadog_checks/ibm_i/config_models/defaults.py @@ -38,6 +38,10 @@ def instance_job_query_timeout(field, value): return 240 +def instance_message_queue_info(field, value): + return get_default_field_value(field, value) + + def instance_metric_patterns(field, value): return get_default_field_value(field, value) @@ -68,10 +72,6 @@ def instance_query_timeout(field, value): return 30 -def instance_selected_message_queues(field, value): - return get_default_field_value(field, value) - - def instance_service(field, value): return get_default_field_value(field, value) diff --git a/ibm_i/datadog_checks/ibm_i/config_models/instance.py b/ibm_i/datadog_checks/ibm_i/config_models/instance.py index 94f282e8445ce..b6f8572409e11 100644 --- a/ibm_i/datadog_checks/ibm_i/config_models/instance.py +++ b/ibm_i/datadog_checks/ibm_i/config_models/instance.py @@ -19,6 +19,13 @@ from . import defaults, validators +class MessageQueueInfo(BaseModel): + class Config: + allow_mutation = False + + selected_message_queues: Optional[Sequence[str]] + + class MetricPatterns(BaseModel): class Config: allow_mutation = False @@ -44,12 +51,12 @@ class Config: empty_default_hostname: Optional[bool] hostname: Optional[str] = Field(None, max_length=255, min_length=1) job_query_timeout: Optional[int] = Field(None, gt=0) + message_queue_info: Optional[MessageQueueInfo] metric_patterns: Optional[MetricPatterns] min_collection_interval: Optional[float] password: Optional[str] queries: Optional[Sequence[Query]] query_timeout: Optional[int] = Field(None, gt=0) - selected_message_queues: Optional[Sequence[str]] service: Optional[str] severity_threshold: Optional[int] = Field(None, ge=0, le=99) system: Optional[str] diff --git a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example index 0745ff94a3c2f..811897187b6a7 100644 --- a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example +++ b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example @@ -78,10 +78,14 @@ instances: # - name: job_queue # - name: message_queue_info - ## @param selected_message_queues - list of strings - optional - ## Filters the message queues to make your queries less computer-intensive. By default no filter is applied. + ## @param message_queue_info - mapping - optional + ## A configuration mapping for the message_queue_info query. + ## + ## selected_message_queues filters the message queues to make your queries less computer-intensive. + ## By default no filter is applied. # - # selected_message_queues: + # message_queue_info: + # selected_message_queues: # - QSYSOPR # - QPGMR diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 70c46e978c201..7b3426694ffc1 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -257,11 +257,18 @@ def get_job_queue_info(timeout): } -def get_message_queue_info(timeout, sev, selected_message_queues): - message_queues_list = [f"'{elt}'" for elt in selected_message_queues] +def get_message_queue_info(timeout, sev, message_queue_info): + + # Getting the selected message queues if some were passed in the config file + message_queues_list = [] + if hasattr(message_queue_info, 'selected_message_queues') and message_queue_info.selected_message_queues: + message_queues_list = [f"'{elt}'" for elt in message_queue_info.selected_message_queues] + + # Building the message queues filter message_queues_filter = ( - f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if selected_message_queues else "" + f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if message_queues_list else "" ) + return { 'name': 'message_queue_info', 'query': { @@ -292,6 +299,6 @@ def query_map(config: InstanceConfig): "memory_info": get_memory_info(config.query_timeout), "job_queue": get_job_queue_info(config.query_timeout), "message_queue_info": get_message_queue_info( - config.system_mq_query_timeout, config.severity_threshold, config.selected_message_queues + config.system_mq_query_timeout, config.severity_threshold, config.message_queue_info ), } From 5c6a6a355e00e551fe4e6814a77d8be1429a4939 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Fri, 23 Sep 2022 15:22:23 +0200 Subject: [PATCH 08/20] Fix space in sql query more consistency --- ibm_i/datadog_checks/ibm_i/queries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm_i/datadog_checks/ibm_i/queries.py b/ibm_i/datadog_checks/ibm_i/queries.py index 7b3426694ffc1..649ac56ea1524 100644 --- a/ibm_i/datadog_checks/ibm_i/queries.py +++ b/ibm_i/datadog_checks/ibm_i/queries.py @@ -266,7 +266,7 @@ def get_message_queue_info(timeout, sev, message_queue_info): # Building the message queues filter message_queues_filter = ( - f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)})" if message_queues_list else "" + f"WHERE MESSAGE_QUEUE_NAME IN ({', '.join(message_queues_list)}) " if message_queues_list else "" ) return { @@ -274,7 +274,7 @@ def get_message_queue_info(timeout, sev, message_queue_info): 'query': { 'text': ( f'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= {sev} THEN 1 ELSE 0 END) ' # noqa:E501 - f'FROM QSYS2.MESSAGE_QUEUE_INFO {message_queues_filter} GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + f'FROM QSYS2.MESSAGE_QUEUE_INFO {message_queues_filter}GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ), 'timeout': timeout, }, From 71bdde73df9b98c4f971601a6509e93a892c70c7 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 10:13:37 -0400 Subject: [PATCH 09/20] Testing using InstanceConfig --- ibm_i/tests/test_sql_queries.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 ibm_i/tests/test_sql_queries.py diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py new file mode 100644 index 0000000000000..faa0345667af7 --- /dev/null +++ b/ibm_i/tests/test_sql_queries.py @@ -0,0 +1,34 @@ +# (C) Datadog, Inc. 2021-present +# All rights reserved +# Licensed under a 3-clause BSD style license (see LICENSE) + +from datadog_checks.ibm_i.config_models import InstanceConfig +from datadog_checks.ibm_i.config_models.instance import MessageQueueInfo +from datadog_checks.ibm_i.queries import query_map + + +def test_get_message_queue_info(): + instance_conf = InstanceConfig( + query_timeout=1, + job_query_timeout=2, + system_mq_query_timeout=3, + severity_threshold=50, + message_queue_info=MessageQueueInfo(selected_message_queues=[]) + ) + qmap_output = query_map(instance_conf) + assert qmap_output["message_queue_info"] == ( + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 + 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' + ) + instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR']) + qmap_output = query_map(instance_conf) + assert qmap_output["message_queue_info"] == ( + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 20 THEN 1 ELSE 0 END) ' + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + ) + instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR', 'QPGMR', 'CECUSER']) + qmap_output = query_map(instance_conf) + assert qmap_output["message_queue_info"] == ( + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 30 THEN 1 ELSE 0 END) ' + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + ) From f5ad13f0eca1ba365337894f0d1c577997ec9fea Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 10:29:41 -0400 Subject: [PATCH 10/20] Fix tests --- ibm_i/tests/test_sql_queries.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index faa0345667af7..9e0bbb502a3e5 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -16,19 +16,27 @@ def test_get_message_queue_info(): message_queue_info=MessageQueueInfo(selected_message_queues=[]) ) qmap_output = query_map(instance_conf) - assert qmap_output["message_queue_info"] == ( + assert qmap_output['message_queue_info']['name'] == 'message_queue_info' + assert qmap_output['message_queue_info']['columns'] == [ + {'name': 'message_queue_name', 'type': 'tag'}, + {'name': 'message_queue_library', 'type': 'tag'}, + {'name': 'ibm_i.message_queue.size', 'type': 'gauge'}, + {'name': 'ibm_i.message_queue.critical_size', 'type': 'gauge'}, + ] + assert qmap_output['message_queue_info']['query']['text'] == ( 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' ) + assert qmap_output['message_queue_info']['query']['text'] == 1 instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR']) qmap_output = query_map(instance_conf) - assert qmap_output["message_queue_info"] == ( + assert qmap_output['message_queue_info']['query']['text'] == ( 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 20 THEN 1 ELSE 0 END) ' 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ) instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR', 'QPGMR', 'CECUSER']) qmap_output = query_map(instance_conf) - assert qmap_output["message_queue_info"] == ( + assert qmap_output['message_queue_info']['query']['text'] == ( 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 30 THEN 1 ELSE 0 END) ' 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ) From 37a24c1b61bab64495e09812cfca7adc45bf851b Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 10:41:40 -0400 Subject: [PATCH 11/20] Fix typos --- ibm_i/tests/test_sql_queries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index 9e0bbb502a3e5..f04f23d71fbe6 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -13,7 +13,7 @@ def test_get_message_queue_info(): job_query_timeout=2, system_mq_query_timeout=3, severity_threshold=50, - message_queue_info=MessageQueueInfo(selected_message_queues=[]) + message_queue_info=MessageQueueInfo(selected_message_queues=[]), ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['name'] == 'message_queue_info' @@ -27,7 +27,7 @@ def test_get_message_queue_info(): 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' ) - assert qmap_output['message_queue_info']['query']['text'] == 1 + assert qmap_output['message_queue_info']['query']['timeout'] == 1 instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR']) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( From 6174dcbdb11cec1f1d6230072994c563d2d1b21d Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 10:53:54 -0400 Subject: [PATCH 12/20] Fix typos --- ibm_i/tests/test_sql_queries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index f04f23d71fbe6..3fe9d0cc48220 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -27,7 +27,7 @@ def test_get_message_queue_info(): 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' ) - assert qmap_output['message_queue_info']['query']['timeout'] == 1 + assert qmap_output['message_queue_info']['query']['timeout'] == 3 instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR']) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( From b1ff2efe1c8daacd1eee6e7c99ee47e4b41c0687 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 13:37:23 -0400 Subject: [PATCH 13/20] Remove immutable objects --- ibm_i/tests/test_sql_queries.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index 3fe9d0cc48220..afa134c882070 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -8,11 +8,14 @@ def test_get_message_queue_info(): + instance_conf_attr = { + "query_timeout": 1, + "job_query_timeout": 2, + "system_mq_query_timeout" : 3, + "severity_threshold": 50, + } instance_conf = InstanceConfig( - query_timeout=1, - job_query_timeout=2, - system_mq_query_timeout=3, - severity_threshold=50, + **instance_conf_attr, message_queue_info=MessageQueueInfo(selected_message_queues=[]), ) qmap_output = query_map(instance_conf) @@ -28,13 +31,19 @@ def test_get_message_queue_info(): 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' ) assert qmap_output['message_queue_info']['query']['timeout'] == 3 - instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR']) + instance_conf = InstanceConfig( + **instance_conf_attr, + message_queue_info=MessageQueueInfo(selected_message_queues=['QSYSOPR']), + ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 20 THEN 1 ELSE 0 END) ' 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ) - instance_conf.message_queue_info = MessageQueueInfo(selected_message_queues=['QSYSOPR', 'QPGMR', 'CECUSER']) + instance_conf = InstanceConfig( + **instance_conf_attr, + message_queue_info=MessageQueueInfo(selected_message_queues=['QSYSOPR', 'QPGMR', 'CECUSER']), + ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 30 THEN 1 ELSE 0 END) ' From b490ac14f5259b46bc732e16e5ce1cfdde3c6bae Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 13:43:48 -0400 Subject: [PATCH 14/20] Enhance documentation --- ibm_i/assets/configuration/spec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm_i/assets/configuration/spec.yaml b/ibm_i/assets/configuration/spec.yaml index 695e1a1ed3989..03b1553a56370 100644 --- a/ibm_i/assets/configuration/spec.yaml +++ b/ibm_i/assets/configuration/spec.yaml @@ -98,8 +98,8 @@ files: description: | A configuration mapping for the message_queue_info query. - selected_message_queues filters the message queues to make your queries less computer-intensive. - By default no filter is applied. + selected_message_queues restricts the message_queue_info query to a subset of the queues. + This can reduce the CPU usage on the target IBM i machine. By default no filter is applied. value: example: selected_message_queues: From 5fe81eb4a87332b565bc9641f27a7187ece97eec Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 13:49:29 -0400 Subject: [PATCH 15/20] Sync conf.yaml.example file --- ibm_i/datadog_checks/ibm_i/data/conf.yaml.example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example index 811897187b6a7..71562c58105c7 100644 --- a/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example +++ b/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example @@ -81,8 +81,8 @@ instances: ## @param message_queue_info - mapping - optional ## A configuration mapping for the message_queue_info query. ## - ## selected_message_queues filters the message queues to make your queries less computer-intensive. - ## By default no filter is applied. + ## selected_message_queues restricts the message_queue_info query to a subset of the queues. + ## This can reduce the CPU usage on the target IBM i machine. By default no filter is applied. # # message_queue_info: # selected_message_queues: From bbd23ee8a6eeeb1258995611ba686bf1ca5b090f Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 13:58:25 -0400 Subject: [PATCH 16/20] Typos just keep appearing --- ibm_i/tests/test_sql_queries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index afa134c882070..01705ed795c24 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -11,7 +11,7 @@ def test_get_message_queue_info(): instance_conf_attr = { "query_timeout": 1, "job_query_timeout": 2, - "system_mq_query_timeout" : 3, + "system_mq_query_timeout": 3, "severity_threshold": 50, } instance_conf = InstanceConfig( From a95bd70ac0fcb55d4805077b668d720c3f809dc4 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Mon, 26 Sep 2022 14:18:15 -0400 Subject: [PATCH 17/20] Yet another typo --- ibm_i/tests/test_sql_queries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index 01705ed795c24..0dddf97e33eee 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -37,7 +37,7 @@ def test_get_message_queue_info(): ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( - 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 20 THEN 1 ELSE 0 END) ' + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ) instance_conf = InstanceConfig( @@ -46,6 +46,6 @@ def test_get_message_queue_info(): ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['query']['text'] == ( - 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 30 THEN 1 ELSE 0 END) ' + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 ) From 7e9f71fc321b89143e288e080c180973b0ef909e Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Tue, 27 Sep 2022 11:20:02 -0400 Subject: [PATCH 18/20] Use pytest parametrize --- ibm_i/tests/test_sql_queries.py | 41 +++++++++++++-------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index 0dddf97e33eee..c002913735161 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -2,12 +2,24 @@ # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) +import pytest + from datadog_checks.ibm_i.config_models import InstanceConfig from datadog_checks.ibm_i.config_models.instance import MessageQueueInfo from datadog_checks.ibm_i.queries import query_map - -def test_get_message_queue_info(): +@pytest.mark.parametrize( + "selected_message_queues,expected", + [ + ([], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' + 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY'), + (['QSYSOPR'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY'), + (['QSYSOPR', 'QPGMR', 'CECUSER'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY') + ] +) +def test_get_message_queue_info(selected_message_queues, expected): instance_conf_attr = { "query_timeout": 1, "job_query_timeout": 2, @@ -16,7 +28,7 @@ def test_get_message_queue_info(): } instance_conf = InstanceConfig( **instance_conf_attr, - message_queue_info=MessageQueueInfo(selected_message_queues=[]), + message_queue_info=MessageQueueInfo(selected_message_queues=selected_message_queues), ) qmap_output = query_map(instance_conf) assert qmap_output['message_queue_info']['name'] == 'message_queue_info' @@ -26,26 +38,5 @@ def test_get_message_queue_info(): {'name': 'ibm_i.message_queue.size', 'type': 'gauge'}, {'name': 'ibm_i.message_queue.critical_size', 'type': 'gauge'}, ] - assert qmap_output['message_queue_info']['query']['text'] == ( - 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 - 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' - ) + assert qmap_output['message_queue_info']['query']['text'] == expected assert qmap_output['message_queue_info']['query']['timeout'] == 3 - instance_conf = InstanceConfig( - **instance_conf_attr, - message_queue_info=MessageQueueInfo(selected_message_queues=['QSYSOPR']), - ) - qmap_output = query_map(instance_conf) - assert qmap_output['message_queue_info']['query']['text'] == ( - 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 - ) - instance_conf = InstanceConfig( - **instance_conf_attr, - message_queue_info=MessageQueueInfo(selected_message_queues=['QSYSOPR', 'QPGMR', 'CECUSER']), - ) - qmap_output = query_map(instance_conf) - assert qmap_output['message_queue_info']['query']['text'] == ( - 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 - ) From 39c9481fcaa2052c5b99f52b968aee90086c1872 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Tue, 27 Sep 2022 11:30:24 -0400 Subject: [PATCH 19/20] Fix style for linter --- ibm_i/tests/test_sql_queries.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index c002913735161..58428ed45817a 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -8,15 +8,25 @@ from datadog_checks.ibm_i.config_models.instance import MessageQueueInfo from datadog_checks.ibm_i.queries import query_map + @pytest.mark.parametrize( "selected_message_queues,expected", [ - ([], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' - 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY'), - (['QSYSOPR'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY'), - (['QSYSOPR', 'QPGMR', 'CECUSER'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY') + ( + [], + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 + 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' + ), + ( + ['QSYSOPR'], + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + ), + ( + ['QSYSOPR', 'QPGMR', 'CECUSER'], + 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + ) ] ) def test_get_message_queue_info(selected_message_queues, expected): From f8ddbeab51c904d33ef15a3cb569191209e1413b Mon Sep 17 00:00:00 2001 From: Alexandre Menasria Date: Tue, 27 Sep 2022 11:36:49 -0400 Subject: [PATCH 20/20] Fix linter --- ibm_i/tests/test_sql_queries.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ibm_i/tests/test_sql_queries.py b/ibm_i/tests/test_sql_queries.py index 58428ed45817a..a20a3132e214a 100644 --- a/ibm_i/tests/test_sql_queries.py +++ b/ibm_i/tests/test_sql_queries.py @@ -15,19 +15,19 @@ ( [], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 - 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' + 'FROM QSYS2.MESSAGE_QUEUE_INFO GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY', ), ( ['QSYSOPR'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY', # noqa:E501 ), ( ['QSYSOPR', 'QPGMR', 'CECUSER'], 'SELECT MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY, COUNT(*), SUM(CASE WHEN SEVERITY >= 50 THEN 1 ELSE 0 END) ' # noqa:E501 - 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY' # noqa:E501 - ) - ] + 'FROM QSYS2.MESSAGE_QUEUE_INFO WHERE MESSAGE_QUEUE_NAME IN (\'QSYSOPR\', \'QPGMR\', \'CECUSER\') GROUP BY MESSAGE_QUEUE_NAME, MESSAGE_QUEUE_LIBRARY', # noqa:E501 + ), + ], ) def test_get_message_queue_info(selected_message_queues, expected): instance_conf_attr = {