From 285f378b14c73ef6ecc552e403b5fc952604dfa3 Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Thu, 9 May 2024 14:48:16 +0200 Subject: [PATCH 1/7] Adding Gatling group duration metric support --- bzt/modules/gatling.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/bzt/modules/gatling.py b/bzt/modules/gatling.py index 99c0aeb1ac..ddfc8ebe16 100644 --- a/bzt/modules/gatling.py +++ b/bzt/modules/gatling.py @@ -449,6 +449,7 @@ def __init__(self): self.retcode = None self.simulation_started = False self.dir_prefix = "gatling-%s" % id(self) + self.group_duration_metric = None self.tool = None # def get_cp_from_files(self): @@ -500,6 +501,7 @@ def prepare(self): raise TaurusConfigError(msg) self.dir_prefix = self.settings.get("dir-prefix", self.dir_prefix) + self.group_duration_metric = self.settings.get("group-duration-metric", self.group_duration_metric) self.stdout = open(self.engine.create_artifact("gatling", ".out"), "w") self.stderr = open(self.engine.create_artifact("gatling", ".err"), "w") @@ -508,7 +510,7 @@ def prepare(self): if version.parse(self.tool.version) >= version.parse("3.8.0"): self._copy_dependencies() - self.reader = DataLogReader(self.engine.artifacts_dir, self.log, self.dir_prefix) + self.reader = DataLogReader(self.engine.artifacts_dir, self.log, self.dir_prefix, self.group_duration_metric) if isinstance(self.engine.aggregator, ConsolidatingAggregator): self.engine.aggregator.add_underling(self.reader) @@ -712,7 +714,7 @@ def get_error_diagnostics(self): class DataLogReader(ResultsReader): """ Class to read KPI from data log """ - def __init__(self, basedir, parent_logger, dir_prefix): + def __init__(self, basedir, parent_logger, dir_prefix, group_duration_metric): super(DataLogReader, self).__init__() self.concurrency = 0 self.log = parent_logger.getChild(self.__class__.__name__) @@ -721,6 +723,7 @@ def __init__(self, basedir, parent_logger, dir_prefix): self.partial_buffer = "" self.delimiter = "\t" self.dir_prefix = dir_prefix + self.group_duration_metric = group_duration_metric self.guessed_gatling_version = None self._group_errors = defaultdict(set) @@ -774,7 +777,13 @@ def __parse_group(self, fields): if ',' in label: return None # skip nested groups for now t_stamp = int(fields[2]) / 1000.0 - r_time = int(fields[3]) / 1000.0 + + if self.group_duration_metric == True: + # Switch group metric from cumulated response time to group duration + # Similar behaviour to Gatling's own gatling.charting.useGroupDurationMetric property + r_time = (int(fields[2]) - int(fields[1])) / 1000.0 + else: + r_time = int(fields[3]) / 1000.0 if label in self._group_errors: error = ';'.join(self._group_errors.pop(label)) From 4e6162546400b7da63bbf7bc321dbe31374ca8cc Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Thu, 9 May 2024 14:55:29 +0200 Subject: [PATCH 2/7] Adding Gatling group duration metric tests --- .../gatling/gatling-6-000/simulation.log | 46 +++++++++++++++++++ tests/unit/modules/test_Gatling.py | 32 ++++++++++--- 2 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 tests/resources/gatling/gatling-6-000/simulation.log diff --git a/tests/resources/gatling/gatling-6-000/simulation.log b/tests/resources/gatling/gatling-6-000/simulation.log new file mode 100644 index 0000000000..6b90085ada --- /dev/null +++ b/tests/resources/gatling/gatling-6-000/simulation.log @@ -0,0 +1,46 @@ +RUN GatlingDemoSimulation gatlingdemosimulation 1715180543697 Gatling Group Duration Demo 3.7.6 +USER Gatling Demo START 1715180545815 +REQUEST Get Page 0 1715180545869 1715180546963 OK +REQUEST Pagination Get Page 0 1715180547003 1715180547128 OK +REQUEST Pagination Get Page 1 1715180547998 1715180548126 OK +REQUEST Pagination Get Page 2 1715180549013 1715180549141 OK +REQUEST Pagination Get Page 3 1715180550019 1715180550146 OK +REQUEST Pagination Get Page 4 1715180551034 1715180551159 OK +USER Gatling Demo START 1715180551798 +GROUP Pagination 1715180546985 1715180552052 633 OK +USER Gatling Demo END 1715180552061 +REQUEST Get Page 0 1715180551798 1715180552180 OK +REQUEST Pagination Get Page 0 1715180552181 1715180552311 OK +REQUEST Pagination Get Page 1 1715180553190 1715180553318 OK +REQUEST Pagination Get Page 2 1715180554192 1715180554327 OK +REQUEST Pagination Get Page 3 1715180555195 1715180555325 OK +REQUEST Pagination Get Page 4 1715180556197 1715180556325 OK +GROUP Pagination 1715180552180 1715180557209 651 OK +USER Gatling Demo END 1715180557211 +USER Gatling Demo START 1715180557803 +REQUEST Get Page 0 1715180557803 1715180558186 OK +REQUEST Pagination Get Page 0 1715180558187 1715180558319 OK +REQUEST Pagination Get Page 1 1715180559194 1715180559324 OK +REQUEST Pagination Get Page 2 1715180560196 1715180560322 OK +REQUEST Pagination Get Page 3 1715180561200 1715180561330 OK +REQUEST Pagination Get Page 4 1715180562215 1715180562347 OK +GROUP Pagination 1715180558187 1715180563221 650 OK +USER Gatling Demo END 1715180563222 +USER Gatling Demo START 1715180563801 +REQUEST Get Page 0 1715180563801 1715180564190 OK +REQUEST Pagination Get Page 0 1715180564191 1715180564322 OK +REQUEST Pagination Get Page 1 1715180565192 1715180565323 OK +REQUEST Pagination Get Page 2 1715180566206 1715180566340 OK +REQUEST Pagination Get Page 3 1715180567210 1715180567341 OK +REQUEST Pagination Get Page 4 1715180568216 1715180568348 OK +GROUP Pagination 1715180564190 1715180569219 659 OK +USER Gatling Demo END 1715180569220 +USER Gatling Demo START 1715180569800 +REQUEST Get Page 0 1715180569800 1715180570195 OK +REQUEST Pagination Get Page 0 1715180570196 1715180570325 OK +REQUEST Pagination Get Page 1 1715180571206 1715180571335 OK +REQUEST Pagination Get Page 2 1715180572221 1715180572353 OK +REQUEST Pagination Get Page 3 1715180573222 1715180573349 OK +REQUEST Pagination Get Page 4 1715180574226 1715180574353 OK +GROUP Pagination 1715180570195 1715180575240 644 OK +USER Gatling Demo END 1715180575241 \ No newline at end of file diff --git a/tests/unit/modules/test_Gatling.py b/tests/unit/modules/test_Gatling.py index 67256520e7..809cabe2cc 100644 --- a/tests/unit/modules/test_Gatling.py +++ b/tests/unit/modules/test_Gatling.py @@ -760,7 +760,7 @@ def test_requests_with_include_scenario(self): class TestDataLogReader(BZTestCase): def test_read(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-351') + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-351', None) list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 23) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -768,7 +768,7 @@ def test_read(self): def test_read_asserts(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-1') + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-1', None) list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 3) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -776,7 +776,7 @@ def test_read_asserts(self): def test_read_331_format(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-331') + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-331', None) list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 2) self.assertEqual(obj.guessed_gatling_version, "3.3.X") @@ -784,7 +784,7 @@ def test_read_331_format(self): def test_read_labels_problematic(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-2') # problematic one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-2', None) # problematic one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 1) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -793,7 +793,7 @@ def test_read_labels_problematic(self): def test_read_labels_regular(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-3') # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-3', None) # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 10) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -801,16 +801,34 @@ def test_read_labels_regular(self): def test_read_group(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-4') # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-4', None) # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 179) self.assertEqual(obj.guessed_gatling_version, "3.4+") last_cumul = list_of_values[-1][DataPoint.CUMULATIVE] self.assertEqual(2, len(last_cumul['[empty]'][KPISet.ERRORS])) + def test_read_group_duration_default(self): + log_path = RESOURCES_DIR + "gatling/" + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', None) # reading group response time set to cumulated response time (default) + list_of_values = list(obj.datapoints(True)) + self.assertEqual(len(list_of_values), 9) + self.assertEqual(obj.guessed_gatling_version, "3.4+") + last_cumul = list_of_values[-1][DataPoint.CUMULATIVE] + self.assertEqual(0.6474, last_cumul['Pagination'][KPISet.AVG_RESP_TIME]) + + def test_read_group_duration_group(self): + log_path = RESOURCES_DIR + "gatling/" + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', True) # reading group response time set to total duration + list_of_values = list(obj.datapoints(True)) + self.assertEqual(len(list_of_values), 9) + self.assertEqual(obj.guessed_gatling_version, "3.4+") + last_cumul = list_of_values[-1][DataPoint.CUMULATIVE] + self.assertEqual(5.0408, last_cumul['Pagination'][KPISet.AVG_RESP_TIME]) + def test_read_rc_asserts(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-5') # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-5', None) # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 1) self.assertEqual(obj.guessed_gatling_version, "3.4+") From 343456905cfe31bf389891bc701b18adb0006dfb Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Thu, 9 May 2024 14:57:17 +0200 Subject: [PATCH 3/7] Added changes record --- .../changes/feat-gatling-group-duration-metric-support.change | 1 + 1 file changed, 1 insertion(+) create mode 100644 site/dat/docs/changes/feat-gatling-group-duration-metric-support.change diff --git a/site/dat/docs/changes/feat-gatling-group-duration-metric-support.change b/site/dat/docs/changes/feat-gatling-group-duration-metric-support.change new file mode 100644 index 0000000000..4ca2cba1a8 --- /dev/null +++ b/site/dat/docs/changes/feat-gatling-group-duration-metric-support.change @@ -0,0 +1 @@ +Added option to switch Gatling group metrics calculation from cumulated response time to total group duration \ No newline at end of file From df2e7ddcc515d453ab7fcf560503eed7628dc7a2 Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Thu, 9 May 2024 14:58:33 +0200 Subject: [PATCH 4/7] Update Gatling respective property when using group-duration-metric --- bzt/modules/gatling.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bzt/modules/gatling.py b/bzt/modules/gatling.py index ddfc8ebe16..5f97b6a588 100644 --- a/bzt/modules/gatling.py +++ b/bzt/modules/gatling.py @@ -589,6 +589,8 @@ def _set_env(self): props['gatling.core.directory.resources'] = self.engine.artifacts_dir props['gatling.core.directory.results'] = self.engine.artifacts_dir + props['gatling.charting.useGroupDurationMetric'] = self.group_duration_metric + props.merge(self._get_simulation_props()) props.merge(self._get_load_props()) props.merge(self._get_scenario_props()) From 0a8d27c0866c3ae4aec3c5e9c6cb23340a036a73 Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Thu, 9 May 2024 14:59:52 +0200 Subject: [PATCH 5/7] Updated Gatling.md with new group duration metric configuration description --- site/dat/docs/Gatling.md | 1 + 1 file changed, 1 insertion(+) diff --git a/site/dat/docs/Gatling.md b/site/dat/docs/Gatling.md index c55458d410..020e57e3de 100644 --- a/site/dat/docs/Gatling.md +++ b/site/dat/docs/Gatling.md @@ -260,6 +260,7 @@ included-configs: # it must be a list of string values - `download-link`: Link to download Gatling from. By default: `https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/{version}/gatling-charts-highcharts-bundle-{version}-bundle.zip` - `version`: Gatling version, `3.1.2` by default - `dir-prefix`: Gatling report prefix, `gatling-%s` by default. Used by taurus to find gatling reports. If you use Gatling property `gatling.core.outputDirectoryBaseName`, you may use also this setting. + - `group-duration-metric`: Changes group response time metric from cumulated response time to group duration, `false` by default. If you use Gatling property `charting.charting.useGroupDurationMetric`, you may use also this setting. - `properties`: dictionary for tuning of gatling tool behaviour (see list of available parameters in gatling documentation) and sending your own variables into Scala program: From 8c6bfa8f49026dae1fc7274950cf368f5cd5e86a Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Mon, 13 May 2024 16:09:07 +0200 Subject: [PATCH 6/7] Fixed gatling env setup and renamed Gatling module group response time option --- bzt/modules/gatling.py | 16 ++++++++-------- site/dat/docs/Gatling.md | 2 +- tests/unit/modules/test_Gatling.py | 22 +++++++++++----------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/bzt/modules/gatling.py b/bzt/modules/gatling.py index 5f97b6a588..8d8026bbd4 100644 --- a/bzt/modules/gatling.py +++ b/bzt/modules/gatling.py @@ -449,7 +449,7 @@ def __init__(self): self.retcode = None self.simulation_started = False self.dir_prefix = "gatling-%s" % id(self) - self.group_duration_metric = None + self.group_response_time = "cumulated" self.tool = None # def get_cp_from_files(self): @@ -501,7 +501,7 @@ def prepare(self): raise TaurusConfigError(msg) self.dir_prefix = self.settings.get("dir-prefix", self.dir_prefix) - self.group_duration_metric = self.settings.get("group-duration-metric", self.group_duration_metric) + self.group_response_time = self.settings.get("group-response-time", self.group_response_time) self.stdout = open(self.engine.create_artifact("gatling", ".out"), "w") self.stderr = open(self.engine.create_artifact("gatling", ".err"), "w") @@ -510,7 +510,7 @@ def prepare(self): if version.parse(self.tool.version) >= version.parse("3.8.0"): self._copy_dependencies() - self.reader = DataLogReader(self.engine.artifacts_dir, self.log, self.dir_prefix, self.group_duration_metric) + self.reader = DataLogReader(self.engine.artifacts_dir, self.log, self.dir_prefix, self.group_response_time) if isinstance(self.engine.aggregator, ConsolidatingAggregator): self.engine.aggregator.add_underling(self.reader) @@ -589,7 +589,7 @@ def _set_env(self): props['gatling.core.directory.resources'] = self.engine.artifacts_dir props['gatling.core.directory.results'] = self.engine.artifacts_dir - props['gatling.charting.useGroupDurationMetric'] = self.group_duration_metric + props['gatling.charting.useGroupDurationMetric'] = ("true" if self.group_response_time == "duration" else "false") props.merge(self._get_simulation_props()) props.merge(self._get_load_props()) @@ -716,7 +716,7 @@ def get_error_diagnostics(self): class DataLogReader(ResultsReader): """ Class to read KPI from data log """ - def __init__(self, basedir, parent_logger, dir_prefix, group_duration_metric): + def __init__(self, basedir, parent_logger, dir_prefix, group_response_time): super(DataLogReader, self).__init__() self.concurrency = 0 self.log = parent_logger.getChild(self.__class__.__name__) @@ -725,7 +725,7 @@ def __init__(self, basedir, parent_logger, dir_prefix, group_duration_metric): self.partial_buffer = "" self.delimiter = "\t" self.dir_prefix = dir_prefix - self.group_duration_metric = group_duration_metric + self.group_response_time = group_response_time self.guessed_gatling_version = None self._group_errors = defaultdict(set) @@ -780,8 +780,8 @@ def __parse_group(self, fields): return None # skip nested groups for now t_stamp = int(fields[2]) / 1000.0 - if self.group_duration_metric == True: - # Switch group metric from cumulated response time to group duration + if self.group_response_time == "duration": + # Switch group response time from cumulated response time to group duration # Similar behaviour to Gatling's own gatling.charting.useGroupDurationMetric property r_time = (int(fields[2]) - int(fields[1])) / 1000.0 else: diff --git a/site/dat/docs/Gatling.md b/site/dat/docs/Gatling.md index 020e57e3de..2f944abddf 100644 --- a/site/dat/docs/Gatling.md +++ b/site/dat/docs/Gatling.md @@ -260,7 +260,7 @@ included-configs: # it must be a list of string values - `download-link`: Link to download Gatling from. By default: `https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/{version}/gatling-charts-highcharts-bundle-{version}-bundle.zip` - `version`: Gatling version, `3.1.2` by default - `dir-prefix`: Gatling report prefix, `gatling-%s` by default. Used by taurus to find gatling reports. If you use Gatling property `gatling.core.outputDirectoryBaseName`, you may use also this setting. - - `group-duration-metric`: Changes group response time metric from cumulated response time to group duration, `false` by default. If you use Gatling property `charting.charting.useGroupDurationMetric`, you may use also this setting. + - `group-response-time`: Group response time metric, `cumulated` (default) or `duration`. If you use Gatling property `charting.charting.useGroupDurationMetric`, you may use also this setting. - `properties`: dictionary for tuning of gatling tool behaviour (see list of available parameters in gatling documentation) and sending your own variables into Scala program: diff --git a/tests/unit/modules/test_Gatling.py b/tests/unit/modules/test_Gatling.py index 809cabe2cc..43aa242a24 100644 --- a/tests/unit/modules/test_Gatling.py +++ b/tests/unit/modules/test_Gatling.py @@ -760,7 +760,7 @@ def test_requests_with_include_scenario(self): class TestDataLogReader(BZTestCase): def test_read(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-351', None) + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-351', "cumulated") list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 23) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -768,7 +768,7 @@ def test_read(self): def test_read_asserts(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-1', None) + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-1', "cumulated") list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 3) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -776,7 +776,7 @@ def test_read_asserts(self): def test_read_331_format(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-331', None) + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-331', "cumulated") list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 2) self.assertEqual(obj.guessed_gatling_version, "3.3.X") @@ -784,7 +784,7 @@ def test_read_331_format(self): def test_read_labels_problematic(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-2', None) # problematic one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-2', "cumulated") # problematic one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 1) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -793,7 +793,7 @@ def test_read_labels_problematic(self): def test_read_labels_regular(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-3', None) # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-3', "cumulated") # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 10) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -801,25 +801,25 @@ def test_read_labels_regular(self): def test_read_group(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-4', None) # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-4', "cumulated") # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 179) self.assertEqual(obj.guessed_gatling_version, "3.4+") last_cumul = list_of_values[-1][DataPoint.CUMULATIVE] self.assertEqual(2, len(last_cumul['[empty]'][KPISet.ERRORS])) - def test_read_group_duration_default(self): + def test_read_group_response_cucumated(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', None) # reading group response time set to cumulated response time (default) + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', "cumulated") # reading group response time set to cumulated response time (default) list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 9) self.assertEqual(obj.guessed_gatling_version, "3.4+") last_cumul = list_of_values[-1][DataPoint.CUMULATIVE] self.assertEqual(0.6474, last_cumul['Pagination'][KPISet.AVG_RESP_TIME]) - def test_read_group_duration_group(self): + def test_read_group_response_duration(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', True) # reading group response time set to total duration + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-6', "duration") # reading group response time set to total duration list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 9) self.assertEqual(obj.guessed_gatling_version, "3.4+") @@ -828,7 +828,7 @@ def test_read_group_duration_group(self): def test_read_rc_asserts(self): log_path = RESOURCES_DIR + "gatling/" - obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-5', None) # regular one + obj = DataLogReader(log_path, ROOT_LOGGER, 'gatling-5', "cumulated") # regular one list_of_values = list(obj.datapoints(True)) self.assertEqual(len(list_of_values), 1) self.assertEqual(obj.guessed_gatling_version, "3.4+") From 26c6c53c060dde22d15090e370aaf8cb2fc731a9 Mon Sep 17 00:00:00 2001 From: Dmitry Mayer Date: Mon, 20 May 2024 10:52:43 +0200 Subject: [PATCH 7/7] Fixed failing unit test text_external --- bzt/modules/external.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bzt/modules/external.py b/bzt/modules/external.py index 7347a400d9..a0490521ee 100644 --- a/bzt/modules/external.py +++ b/bzt/modules/external.py @@ -105,7 +105,7 @@ def _get_reader(self): elif header.startswith("