From 0c2f1dc58acde98fac43edfb4d37048cab41856c Mon Sep 17 00:00:00 2001 From: ikarna2 Date: Sun, 3 Dec 2023 16:56:41 -0600 Subject: [PATCH] adding superset to openctest framework --- core/README.md | 4 +- core/add_project.sh | 8 + core/default_configs/superset-default.tsv | 23 + core/generate_ctest/gen_ctest.py | 91 ++ core/generate_ctest/gen_json.py | 61 + core/generate_ctest/result/report.csv | 950 +++++++++++++ .../result/superset-generated-values.tsv | 23 + core/generate_value/value_generation.py | 5 + core/identify_param/README.md | 8 + core/identify_param/gen_param_to_case.py | 128 ++ core/identify_param/identify_params.py | 163 +++ .../results/superset/all_params.json | 25 + .../results/superset/all_test_cases.json | 48 + .../superset/flattened_params_to_tests.json | 922 ++++++++++++ .../results/superset/result_mapping.json | 1232 +++++++++++++++++ core/jest_setup.sh | 17 + core/patch/superset/interception.patch | 78 ++ core/patch/superset/logging.patch | 12 + core/run_ctest_javascript/README.md | 20 + .../ctest_runner_json_override.py | 47 + core/superset.sh | 27 + data/ctest_mapping/opensource-superset.json | 922 ++++++++++++ 22 files changed, 4813 insertions(+), 1 deletion(-) create mode 100644 core/default_configs/superset-default.tsv create mode 100644 core/generate_ctest/gen_ctest.py create mode 100644 core/generate_ctest/gen_json.py create mode 100644 core/generate_ctest/result/report.csv create mode 100644 core/generate_value/result/superset-generated-values.tsv create mode 100644 core/identify_param/gen_param_to_case.py create mode 100644 core/identify_param/identify_params.py create mode 100644 core/identify_param/results/superset/all_params.json create mode 100644 core/identify_param/results/superset/all_test_cases.json create mode 100644 core/identify_param/results/superset/flattened_params_to_tests.json create mode 100644 core/identify_param/results/superset/result_mapping.json create mode 100644 core/jest_setup.sh create mode 100644 core/patch/superset/interception.patch create mode 100644 core/patch/superset/logging.patch create mode 100644 core/run_ctest_javascript/README.md create mode 100644 core/run_ctest_javascript/ctest_runner_json_override.py create mode 100644 core/superset.sh create mode 100644 data/ctest_mapping/opensource-superset.json diff --git a/core/README.md b/core/README.md index d6a2bac0..3ee7fdf5 100644 --- a/core/README.md +++ b/core/README.md @@ -14,6 +14,7 @@ A prototype for generating and running ctests. Below are the projects we current - Hbase 2.2.2: `hbase-server`. - ZooKeeper 3.5.6: `zookeeper-server`. - Alluxio 2.1.0: `core`. +- Superset 3.0.2: `superset-websocket`. We also provided our instrumented versions of the above projects: @@ -21,6 +22,7 @@ We also provided our instrumented versions of the above projects: - Hbase 2.2.2: https://github.com/xlab-uiuc/hbase - ZooKeeper 3.5.6: https://github.com/xlab-uiuc/zookeeper - Alluxio 2.1.0: https://github.com/xlab-uiuc/alluxio +- Superset 3.0.2: https://github.com/ishitakarna/superset Our instrumented version projects have two branches: - `ctest-injection`: branch with "Intercept Configuration API" instrumentation (See `ADDING_NEW_PROJECT.md`). This branch is used by `generate_ctest` and `run_ctest`. @@ -59,7 +61,7 @@ To generate ctests or run ctest, you need to first clone the target project. 1. In `openctest/core`, run `./add_project.sh
` to clone the project, switch to and build the branch `ctest-injection`. This branch will be later used by `generate_ctest` and `run_ctest`. 2. In `openctest/core/identify_param`, run `./add_project.sh
` to clone the project, switch to and build the branch `ctest-logging`. This branch will be later used by `identify_param`. -`
` can be `hadoop`, `hbase`, `zookeeper` or `alluxio`. +`
` can be `hadoop`, `hbase`, `zookeeper`, `alluxio`, or `superset`. ## Usage diff --git a/core/add_project.sh b/core/add_project.sh index e5640839..5bcd3d17 100755 --- a/core/add_project.sh +++ b/core/add_project.sh @@ -48,6 +48,13 @@ function setup_alluxio() { mvn clean install -DskipTests -Dcheckstyle.skip -Dlicense.skip -Dfindbugs.skip -Dmaven.javadoc.skip=true } +function setup_superset() { + [ ! -d "app/superset" ] && git clone https://github.com/ishitakarna/superset app/superset + cd app/superset + git fetch && git checkout ctest + npm install +} + function usage() { echo "Usage: add_project.sh
" exit 1 @@ -64,6 +71,7 @@ function main() { hbase) setup_hbase ;; zookeeper) setup_zookeeper ;; alluxio) setup_alluxio ;; + superset) setup_superset ;; *) echo "Unexpected project: $project - only support hadoop, hbase, zookeeper and alluxio." ;; esac fi diff --git a/core/default_configs/superset-default.tsv b/core/default_configs/superset-default.tsv new file mode 100644 index 00000000..5a1876b6 --- /dev/null +++ b/core/default_configs/superset-default.tsv @@ -0,0 +1,23 @@ +gcChannelsIntervalMs 120000 Time interval for garbage collecting inactive channels +jwtAlgorithms.0 HS256 First algorithm used for JSON Web Token (JWT) encoding/decoding +jwtChannelIdKey channel Key name in JWT for identifying the channel +jwtCookieName test-async-token Name of the cookie used for storing the JWT +jwtSecret test123-test123-test123-test123-test123-test123-test123 This is the secret key used for signing JSON Web Tokens (JWTs) +logFilename app.log Name of the file where logs are written +logLevel info Severity level of the logs being recorded (e.g., info, debug) +logToFile FALSE Boolean indicating whether to log to a file (true) or not (false) +pingSocketsIntervalMs 20000 Interval for pinging sockets to check their connectivity +port 8125 Network port used for connecting +redis.db 10 This parameter specifies the database number to be used in the Redis data store +redis.host 127.0.0.1 This parameter specifies the hostname or IP address of the Redis server +redis.password some pwd This is the password used for authentication to the Redis server +redis.port 6379 This defines the port number on which the Redis server is running and accepting connections +redis.ssl FALSE A boolean parameter indicating whether SSL encryption should be used for the connection to the Redis server +redis.username default Username for authenticating with the Redis server +redis.validateHostname TRUE Boolean indicating whether to validate the Redis server's hostname +redisStreamPrefix test-async-events- Prefix for Redis stream keys +redisStreamReadBlockMs 5000 Time in milliseconds to block when reading from a Redis stream +redisStreamReadCount 100 Number of messages to read from a Redis stream in one go +socketResponseTimeoutMs 60000 Timeout in milliseconds for socket responses +statsd.host 127.0.0.1 This is the hostname or IP address of the StatsD server +statsd.port 8125 This parameter specifies the port number on which the StatsD server is listening \ No newline at end of file diff --git a/core/generate_ctest/gen_ctest.py b/core/generate_ctest/gen_ctest.py new file mode 100644 index 00000000..317d39bf --- /dev/null +++ b/core/generate_ctest/gen_ctest.py @@ -0,0 +1,91 @@ +import subprocess +import csv +import json +import os + + +def read_tsv(file_path): + params = {} + with open(file_path) as file: + reader = csv.reader(file, delimiter='\t') + for row in reader: + param, *values = row + params[param] = values + return params + + +def read_json(file_path): + with open(file_path) as file: + return json.load(file) + + +def run_test_case(param, value, test_cases, report): + for test_case in test_cases: + test_file, test_name = test_case.split(": ") + test_name = test_name.replace('_', ' ') + test_file_path = f"/home/ikarna2/project/fork/superset/superset-websocket/spec{test_file}" + + + # Generate the JSON configuration command + gen_json_cmd = ["python3", "gen_json.py", param, value, "config.test.override.json"] + print("Executing command:", ' '.join(gen_json_cmd)) + subprocess.run(gen_json_cmd) + + # Run the test case command + test_cmd = ["python3", "ctest_runner_json_override.py", "config.test.override.json", + "/home/ikarna2/project/fork/superset/superset-websocket", test_file_path, f'"{test_name}"'] + print("Executing command:", ' '.join(test_cmd)) + result = subprocess.run(test_cmd, capture_output=True, text=True) + + + # Process the result + if result.returncode == 0: + test_result = 'p' + else: + test_result = 'f' + + # Assuming the execution time is part of the result output + execution_time = extract_execution_time(result.stdout) + + + report.append([param, test_case, value, test_result, execution_time]) + + + + +def extract_execution_time(output): + # Extract execution time from the output + # Placeholder for actual implementation + return "time_placeholder" + + +def write_report(report, file_path): + with open(file_path, 'w', newline='') as file: + writer = csv.writer(file) + for row in report: + writer.writerow(row) + + +def main(): + tsv_file = 'default_params.tsv' # Placeholder for TSV file path + json_file = 'flattened_params_to_tests.json' # Placeholder for JSON file path + report_file = 'test_report.csv' + + + params = read_tsv(tsv_file) + test_mapping = read_json(json_file) + report = [] + + + for param, values in params.items(): + test_cases = test_mapping.get(param, []) + for value in values: + if value != 'SKIP': + run_test_case(param, value, test_cases, report) + + + write_report(report, report_file) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/core/generate_ctest/gen_json.py b/core/generate_ctest/gen_json.py new file mode 100644 index 00000000..336bef94 --- /dev/null +++ b/core/generate_ctest/gen_json.py @@ -0,0 +1,61 @@ +import json +import sys + + +def create_json_from_flattened_key(key, value): + parts = key.split('.') + json_obj = {} + current_level = json_obj + + + for i, part in enumerate(parts): + is_last_part = i == len(parts) - 1 + + + if part.isdigit(): # If part is a number, handle as a list + part = int(part) + # Ensure current level is a list + if not isinstance(current_level, list): + current_level = [] + # Expand the list if necessary + while len(current_level) <= part: + current_level.append({} if not is_last_part else None) + if is_last_part: + current_level[part] = value + else: + current_level = current_level[part] + else: # Handle as a dict + if part not in current_level: + current_level[part] = [] if (i+1 < len(parts) and parts[i+1].isdigit()) else {} + if is_last_part: + current_level[part] = value + else: + current_level = current_level[part] + + + return json_obj + + +def write_json_to_file(json_data, filename): + with open(filename, 'w') as file: + json.dump(json_data, file, indent=4) + + +def main(): + if len(sys.argv) != 4: + print("Usage: script.py ") + sys.exit(1) + + + flattened_key = sys.argv[1] + value = sys.argv[2] + output_file = sys.argv[3] + + + json_data = create_json_from_flattened_key(flattened_key, value) + write_json_to_file(json_data, output_file) + print(f"JSON data written to {output_file}") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/core/generate_ctest/result/report.csv b/core/generate_ctest/result/report.csv new file mode 100644 index 00000000..294b79e9 --- /dev/null +++ b/core/generate_ctest/result/report.csv @@ -0,0 +1,950 @@ +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,60000,p +gcChannelsIntervalMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,60000,p +gcChannelsIntervalMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,60000,p +gcChannelsIntervalMs,config.test.ts: should_perform_deep_merge_between_configs,60000,p +gcChannelsIntervalMs,index.test.ts: sends_data_to_channel,60000,p +gcChannelsIntervalMs,index.test.ts: stale_sockets,60000,p +gcChannelsIntervalMs,index.test.ts: success_with_results,60000,p +gcChannelsIntervalMs,index.test.ts: error,60000,p +gcChannelsIntervalMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,60000,p +gcChannelsIntervalMs,index.test.ts: closing_sockets,60000,p +gcChannelsIntervalMs,index.test.ts: multiple_sockets,60000,p +gcChannelsIntervalMs,index.test.ts: services_health_checks,60000,p +gcChannelsIntervalMs,config.test.ts: should_override_Redis_config_with_environment_variables,60000,p +gcChannelsIntervalMs,index.test.ts: success_no_results,60000,p +gcChannelsIntervalMs,index.test.ts: invalid_JWT,60000,p +gcChannelsIntervalMs,config.test.ts: should_override_StatsD_config_with_environment_variables,60000,p +gcChannelsIntervalMs,index.test.ts: no_sockets,60000,p +gcChannelsIntervalMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,60000,p +gcChannelsIntervalMs,config.test.ts: should_use_default_values_for_missing_environment_variables,60000,p +gcChannelsIntervalMs,index.test.ts: active_sockets,60000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",60000,p +gcChannelsIntervalMs,config.test.ts: should_override_JWT_config_with_environment_variables,60000,p +gcChannelsIntervalMs,index.test.ts: error_sending_data_to_client,60000,p +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,60000,p +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,60000,p +gcChannelsIntervalMs,index.test.ts: responds_with_a_404_when_not_found,60000,p +gcChannelsIntervalMs,config.test.ts: should_clean_up_environment_variables_after_use,60000,p +gcChannelsIntervalMs,index.test.ts: valid_upgrade,60000,p +gcChannelsIntervalMs,config.test.ts: should_build_default_configuration,60000,p +gcChannelsIntervalMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,60000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_with_lastId",60000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_no_channel",60000,p +gcChannelsIntervalMs,config.test.ts: should_handle_invalid_environment_variable_values,60000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_no_lastId",60000,p +gcChannelsIntervalMs,index.test.ts: channel_not_present,60000,p +gcChannelsIntervalMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,60000,p +gcChannelsIntervalMs,index.test.ts: closed_sockets,60000,p +gcChannelsIntervalMs,index.test.ts: invalid_channel,60000,p +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,240000,p +gcChannelsIntervalMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,240000,p +gcChannelsIntervalMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,240000,p +gcChannelsIntervalMs,config.test.ts: should_perform_deep_merge_between_configs,240000,p +gcChannelsIntervalMs,index.test.ts: sends_data_to_channel,240000,p +gcChannelsIntervalMs,index.test.ts: stale_sockets,240000,p +gcChannelsIntervalMs,index.test.ts: success_with_results,240000,p +gcChannelsIntervalMs,index.test.ts: error,240000,p +gcChannelsIntervalMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,240000,p +gcChannelsIntervalMs,index.test.ts: closing_sockets,240000,p +gcChannelsIntervalMs,index.test.ts: multiple_sockets,240000,p +gcChannelsIntervalMs,index.test.ts: services_health_checks,240000,p +gcChannelsIntervalMs,config.test.ts: should_override_Redis_config_with_environment_variables,240000,p +gcChannelsIntervalMs,index.test.ts: success_no_results,240000,p +gcChannelsIntervalMs,index.test.ts: invalid_JWT,240000,p +gcChannelsIntervalMs,config.test.ts: should_override_StatsD_config_with_environment_variables,240000,p +gcChannelsIntervalMs,index.test.ts: no_sockets,240000,p +gcChannelsIntervalMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,240000,p +gcChannelsIntervalMs,config.test.ts: should_use_default_values_for_missing_environment_variables,240000,p +gcChannelsIntervalMs,index.test.ts: active_sockets,240000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",240000,p +gcChannelsIntervalMs,config.test.ts: should_override_JWT_config_with_environment_variables,240000,p +gcChannelsIntervalMs,index.test.ts: error_sending_data_to_client,240000,p +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,240000,p +gcChannelsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,240000,p +gcChannelsIntervalMs,index.test.ts: responds_with_a_404_when_not_found,240000,p +gcChannelsIntervalMs,config.test.ts: should_clean_up_environment_variables_after_use,240000,p +gcChannelsIntervalMs,index.test.ts: valid_upgrade,240000,p +gcChannelsIntervalMs,config.test.ts: should_build_default_configuration,240000,p +gcChannelsIntervalMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,240000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_with_lastId",240000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_no_channel",240000,p +gcChannelsIntervalMs,config.test.ts: should_handle_invalid_environment_variable_values,240000,p +gcChannelsIntervalMs,"index.test.ts: valid_JWT,_no_lastId",240000,p +gcChannelsIntervalMs,index.test.ts: channel_not_present,240000,p +gcChannelsIntervalMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,240000,p +gcChannelsIntervalMs,index.test.ts: closed_sockets,240000,p +gcChannelsIntervalMs,index.test.ts: invalid_channel,240000,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,JSON,p +jwtAlgorithms.0,config.test.ts: should_correctly_apply_partial_configuration_overrides,JSON,p +jwtAlgorithms.0,index.test.ts: it_increments_a_valid_Redis_stream_ID,JSON,p +jwtAlgorithms.0,config.test.ts: should_perform_deep_merge_between_configs,JSON,p +jwtAlgorithms.0,index.test.ts: sends_data_to_channel,JSON,p +jwtAlgorithms.0,index.test.ts: stale_sockets,JSON,p +jwtAlgorithms.0,index.test.ts: success_with_results,JSON,p +jwtAlgorithms.0,index.test.ts: error,JSON,p +jwtAlgorithms.0,config.test.ts: buildConfig_performs_deep_merge_between_configs,JSON,p +jwtAlgorithms.0,index.test.ts: closing_sockets,JSON,p +jwtAlgorithms.0,index.test.ts: multiple_sockets,JSON,p +jwtAlgorithms.0,index.test.ts: services_health_checks,JSON,p +jwtAlgorithms.0,config.test.ts: should_override_Redis_config_with_environment_variables,JSON,p +jwtAlgorithms.0,index.test.ts: success_no_results,JSON,p +jwtAlgorithms.0,index.test.ts: invalid_JWT,JSON,p +jwtAlgorithms.0,config.test.ts: should_override_StatsD_config_with_environment_variables,JSON,p +jwtAlgorithms.0,index.test.ts: no_sockets,JSON,p +jwtAlgorithms.0,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,JSON,p +jwtAlgorithms.0,config.test.ts: should_use_default_values_for_missing_environment_variables,JSON,p +jwtAlgorithms.0,index.test.ts: active_sockets,JSON,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",JSON,p +jwtAlgorithms.0,config.test.ts: should_override_JWT_config_with_environment_variables,JSON,p +jwtAlgorithms.0,index.test.ts: error_sending_data_to_client,JSON,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,JSON,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,JSON,p +jwtAlgorithms.0,index.test.ts: responds_with_a_404_when_not_found,JSON,p +jwtAlgorithms.0,config.test.ts: should_clean_up_environment_variables_after_use,JSON,p +jwtAlgorithms.0,index.test.ts: valid_upgrade,JSON,p +jwtAlgorithms.0,config.test.ts: should_build_default_configuration,JSON,p +jwtAlgorithms.0,index.test.ts: it_handles_an_invalid_Redis_stream_ID,JSON,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_with_lastId",JSON,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_no_channel",JSON,p +jwtAlgorithms.0,config.test.ts: should_handle_invalid_environment_variable_values,JSON,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_no_lastId",JSON,p +jwtAlgorithms.0,index.test.ts: channel_not_present,JSON,p +jwtAlgorithms.0,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,JSON,p +jwtAlgorithms.0,index.test.ts: closed_sockets,JSON,p +jwtAlgorithms.0,index.test.ts: invalid_channel,JSON,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,JWT,p +jwtAlgorithms.0,config.test.ts: should_correctly_apply_partial_configuration_overrides,JWT,p +jwtAlgorithms.0,index.test.ts: it_increments_a_valid_Redis_stream_ID,JWT,p +jwtAlgorithms.0,config.test.ts: should_perform_deep_merge_between_configs,JWT,p +jwtAlgorithms.0,index.test.ts: sends_data_to_channel,JWT,p +jwtAlgorithms.0,index.test.ts: stale_sockets,JWT,p +jwtAlgorithms.0,index.test.ts: success_with_results,JWT,p +jwtAlgorithms.0,index.test.ts: error,JWT,p +jwtAlgorithms.0,config.test.ts: buildConfig_performs_deep_merge_between_configs,JWT,p +jwtAlgorithms.0,index.test.ts: closing_sockets,JWT,p +jwtAlgorithms.0,index.test.ts: multiple_sockets,JWT,p +jwtAlgorithms.0,index.test.ts: services_health_checks,JWT,p +jwtAlgorithms.0,config.test.ts: should_override_Redis_config_with_environment_variables,JWT,p +jwtAlgorithms.0,index.test.ts: success_no_results,JWT,p +jwtAlgorithms.0,index.test.ts: invalid_JWT,JWT,p +jwtAlgorithms.0,config.test.ts: should_override_StatsD_config_with_environment_variables,JWT,p +jwtAlgorithms.0,index.test.ts: no_sockets,JWT,p +jwtAlgorithms.0,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,JWT,p +jwtAlgorithms.0,config.test.ts: should_use_default_values_for_missing_environment_variables,JWT,p +jwtAlgorithms.0,index.test.ts: active_sockets,JWT,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",JWT,p +jwtAlgorithms.0,config.test.ts: should_override_JWT_config_with_environment_variables,JWT,p +jwtAlgorithms.0,index.test.ts: error_sending_data_to_client,JWT,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,JWT,p +jwtAlgorithms.0,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,JWT,p +jwtAlgorithms.0,index.test.ts: responds_with_a_404_when_not_found,JWT,p +jwtAlgorithms.0,config.test.ts: should_clean_up_environment_variables_after_use,JWT,p +jwtAlgorithms.0,index.test.ts: valid_upgrade,JWT,p +jwtAlgorithms.0,config.test.ts: should_build_default_configuration,JWT,p +jwtAlgorithms.0,index.test.ts: it_handles_an_invalid_Redis_stream_ID,JWT,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_with_lastId",JWT,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_no_channel",JWT,p +jwtAlgorithms.0,config.test.ts: should_handle_invalid_environment_variable_values,JWT,p +jwtAlgorithms.0,"index.test.ts: valid_JWT,_no_lastId",JWT,p +jwtAlgorithms.0,index.test.ts: channel_not_present,JWT,p +jwtAlgorithms.0,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,JWT,p +jwtAlgorithms.0,index.test.ts: closed_sockets,JWT,p +jwtAlgorithms.0,index.test.ts: invalid_channel,JWT,p +logToFile,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,TRUE,p +logToFile,config.test.ts: should_correctly_apply_partial_configuration_overrides,TRUE,p +logToFile,index.test.ts: it_increments_a_valid_Redis_stream_ID,TRUE,p +logToFile,config.test.ts: should_perform_deep_merge_between_configs,TRUE,p +logToFile,index.test.ts: sends_data_to_channel,TRUE,p +logToFile,index.test.ts: stale_sockets,TRUE,p +logToFile,index.test.ts: success_with_results,TRUE,p +logToFile,index.test.ts: error,TRUE,p +logToFile,config.test.ts: buildConfig_performs_deep_merge_between_configs,TRUE,p +logToFile,index.test.ts: closing_sockets,TRUE,p +logToFile,index.test.ts: multiple_sockets,TRUE,p +logToFile,index.test.ts: services_health_checks,TRUE,p +logToFile,config.test.ts: should_override_Redis_config_with_environment_variables,TRUE,p +logToFile,index.test.ts: success_no_results,TRUE,p +logToFile,index.test.ts: invalid_JWT,TRUE,p +logToFile,config.test.ts: should_override_StatsD_config_with_environment_variables,TRUE,p +logToFile,index.test.ts: no_sockets,TRUE,p +logToFile,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,TRUE,p +logToFile,config.test.ts: should_use_default_values_for_missing_environment_variables,TRUE,p +logToFile,index.test.ts: active_sockets,TRUE,p +logToFile,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",TRUE,p +logToFile,config.test.ts: should_override_JWT_config_with_environment_variables,TRUE,p +logToFile,index.test.ts: error_sending_data_to_client,TRUE,p +logToFile,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,TRUE,p +logToFile,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,TRUE,p +logToFile,index.test.ts: responds_with_a_404_when_not_found,TRUE,p +logToFile,config.test.ts: should_clean_up_environment_variables_after_use,TRUE,p +logToFile,index.test.ts: valid_upgrade,TRUE,p +logToFile,config.test.ts: should_build_default_configuration,TRUE,p +logToFile,index.test.ts: it_handles_an_invalid_Redis_stream_ID,TRUE,p +logToFile,"index.test.ts: valid_JWT,_with_lastId",TRUE,p +logToFile,"index.test.ts: valid_JWT,_no_channel",TRUE,p +logToFile,config.test.ts: should_handle_invalid_environment_variable_values,TRUE,p +logToFile,"index.test.ts: valid_JWT,_no_lastId",TRUE,p +logToFile,index.test.ts: channel_not_present,TRUE,p +logToFile,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,TRUE,p +logToFile,index.test.ts: closed_sockets,TRUE,p +logToFile,index.test.ts: invalid_channel,TRUE,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,10000,p +pingSocketsIntervalMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,10000,p +pingSocketsIntervalMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,10000,p +pingSocketsIntervalMs,config.test.ts: should_perform_deep_merge_between_configs,10000,p +pingSocketsIntervalMs,index.test.ts: sends_data_to_channel,10000,p +pingSocketsIntervalMs,index.test.ts: stale_sockets,10000,p +pingSocketsIntervalMs,index.test.ts: success_with_results,10000,p +pingSocketsIntervalMs,index.test.ts: error,10000,p +pingSocketsIntervalMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,10000,p +pingSocketsIntervalMs,index.test.ts: closing_sockets,10000,p +pingSocketsIntervalMs,index.test.ts: multiple_sockets,10000,p +pingSocketsIntervalMs,index.test.ts: services_health_checks,10000,p +pingSocketsIntervalMs,config.test.ts: should_override_Redis_config_with_environment_variables,10000,p +pingSocketsIntervalMs,index.test.ts: success_no_results,10000,p +pingSocketsIntervalMs,index.test.ts: invalid_JWT,10000,p +pingSocketsIntervalMs,config.test.ts: should_override_StatsD_config_with_environment_variables,10000,p +pingSocketsIntervalMs,index.test.ts: no_sockets,10000,p +pingSocketsIntervalMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,10000,p +pingSocketsIntervalMs,config.test.ts: should_use_default_values_for_missing_environment_variables,10000,p +pingSocketsIntervalMs,index.test.ts: active_sockets,10000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",10000,p +pingSocketsIntervalMs,config.test.ts: should_override_JWT_config_with_environment_variables,10000,p +pingSocketsIntervalMs,index.test.ts: error_sending_data_to_client,10000,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,10000,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,10000,p +pingSocketsIntervalMs,index.test.ts: responds_with_a_404_when_not_found,10000,p +pingSocketsIntervalMs,config.test.ts: should_clean_up_environment_variables_after_use,10000,p +pingSocketsIntervalMs,index.test.ts: valid_upgrade,10000,p +pingSocketsIntervalMs,config.test.ts: should_build_default_configuration,10000,p +pingSocketsIntervalMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,10000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_with_lastId",10000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_no_channel",10000,p +pingSocketsIntervalMs,config.test.ts: should_handle_invalid_environment_variable_values,10000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_no_lastId",10000,p +pingSocketsIntervalMs,index.test.ts: channel_not_present,10000,p +pingSocketsIntervalMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,10000,p +pingSocketsIntervalMs,index.test.ts: closed_sockets,10000,p +pingSocketsIntervalMs,index.test.ts: invalid_channel,10000,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,40000,p +pingSocketsIntervalMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,40000,p +pingSocketsIntervalMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,40000,p +pingSocketsIntervalMs,config.test.ts: should_perform_deep_merge_between_configs,40000,p +pingSocketsIntervalMs,index.test.ts: sends_data_to_channel,40000,p +pingSocketsIntervalMs,index.test.ts: stale_sockets,40000,p +pingSocketsIntervalMs,index.test.ts: success_with_results,40000,p +pingSocketsIntervalMs,index.test.ts: error,40000,p +pingSocketsIntervalMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,40000,p +pingSocketsIntervalMs,index.test.ts: closing_sockets,40000,p +pingSocketsIntervalMs,index.test.ts: multiple_sockets,40000,p +pingSocketsIntervalMs,index.test.ts: services_health_checks,40000,p +pingSocketsIntervalMs,config.test.ts: should_override_Redis_config_with_environment_variables,40000,p +pingSocketsIntervalMs,index.test.ts: success_no_results,40000,p +pingSocketsIntervalMs,index.test.ts: invalid_JWT,40000,p +pingSocketsIntervalMs,config.test.ts: should_override_StatsD_config_with_environment_variables,40000,p +pingSocketsIntervalMs,index.test.ts: no_sockets,40000,p +pingSocketsIntervalMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,40000,p +pingSocketsIntervalMs,config.test.ts: should_use_default_values_for_missing_environment_variables,40000,p +pingSocketsIntervalMs,index.test.ts: active_sockets,40000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",40000,p +pingSocketsIntervalMs,config.test.ts: should_override_JWT_config_with_environment_variables,40000,p +pingSocketsIntervalMs,index.test.ts: error_sending_data_to_client,40000,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,40000,p +pingSocketsIntervalMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,40000,p +pingSocketsIntervalMs,index.test.ts: responds_with_a_404_when_not_found,40000,p +pingSocketsIntervalMs,config.test.ts: should_clean_up_environment_variables_after_use,40000,p +pingSocketsIntervalMs,index.test.ts: valid_upgrade,40000,p +pingSocketsIntervalMs,config.test.ts: should_build_default_configuration,40000,p +pingSocketsIntervalMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,40000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_with_lastId",40000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_no_channel",40000,p +pingSocketsIntervalMs,config.test.ts: should_handle_invalid_environment_variable_values,40000,p +pingSocketsIntervalMs,"index.test.ts: valid_JWT,_no_lastId",40000,p +pingSocketsIntervalMs,index.test.ts: channel_not_present,40000,p +pingSocketsIntervalMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,40000,p +pingSocketsIntervalMs,index.test.ts: closed_sockets,40000,p +pingSocketsIntervalMs,index.test.ts: invalid_channel,40000,p +port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,4062,p +port,config.test.ts: should_correctly_apply_partial_configuration_overrides,4062,p +port,index.test.ts: it_increments_a_valid_Redis_stream_ID,4062,p +port,config.test.ts: should_perform_deep_merge_between_configs,4062,p +port,index.test.ts: sends_data_to_channel,4062,p +port,index.test.ts: stale_sockets,4062,p +port,index.test.ts: success_with_results,4062,p +port,index.test.ts: error,4062,p +port,config.test.ts: buildConfig_performs_deep_merge_between_configs,4062,p +port,index.test.ts: closing_sockets,4062,p +port,index.test.ts: multiple_sockets,4062,p +port,index.test.ts: services_health_checks,4062,p +port,config.test.ts: should_override_Redis_config_with_environment_variables,4062,p +port,index.test.ts: success_no_results,4062,p +port,index.test.ts: invalid_JWT,4062,p +port,config.test.ts: should_override_StatsD_config_with_environment_variables,4062,p +port,index.test.ts: no_sockets,4062,p +port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,4062,p +port,config.test.ts: should_use_default_values_for_missing_environment_variables,4062,p +port,index.test.ts: active_sockets,4062,p +port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",4062,p +port,config.test.ts: should_override_JWT_config_with_environment_variables,4062,p +port,index.test.ts: error_sending_data_to_client,4062,p +port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,4062,p +port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,4062,p +port,index.test.ts: responds_with_a_404_when_not_found,4062,p +port,config.test.ts: should_clean_up_environment_variables_after_use,4062,p +port,index.test.ts: valid_upgrade,4062,p +port,config.test.ts: should_build_default_configuration,4062,p +port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,4062,p +port,"index.test.ts: valid_JWT,_with_lastId",4062,p +port,"index.test.ts: valid_JWT,_no_channel",4062,p +port,config.test.ts: should_handle_invalid_environment_variable_values,4062,p +port,"index.test.ts: valid_JWT,_no_lastId",4062,p +port,index.test.ts: channel_not_present,4062,p +port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,4062,p +port,index.test.ts: closed_sockets,4062,p +port,index.test.ts: invalid_channel,4062,p +port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,16250,p +port,config.test.ts: should_correctly_apply_partial_configuration_overrides,16250,p +port,index.test.ts: it_increments_a_valid_Redis_stream_ID,16250,p +port,config.test.ts: should_perform_deep_merge_between_configs,16250,p +port,index.test.ts: sends_data_to_channel,16250,p +port,index.test.ts: stale_sockets,16250,p +port,index.test.ts: success_with_results,16250,p +port,index.test.ts: error,16250,p +port,config.test.ts: buildConfig_performs_deep_merge_between_configs,16250,p +port,index.test.ts: closing_sockets,16250,p +port,index.test.ts: multiple_sockets,16250,p +port,index.test.ts: services_health_checks,16250,p +port,config.test.ts: should_override_Redis_config_with_environment_variables,16250,p +port,index.test.ts: success_no_results,16250,p +port,index.test.ts: invalid_JWT,16250,p +port,config.test.ts: should_override_StatsD_config_with_environment_variables,16250,p +port,index.test.ts: no_sockets,16250,p +port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,16250,p +port,config.test.ts: should_use_default_values_for_missing_environment_variables,16250,p +port,index.test.ts: active_sockets,16250,p +port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",16250,p +port,config.test.ts: should_override_JWT_config_with_environment_variables,16250,p +port,index.test.ts: error_sending_data_to_client,16250,p +port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,16250,p +port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,16250,p +port,index.test.ts: responds_with_a_404_when_not_found,16250,p +port,config.test.ts: should_clean_up_environment_variables_after_use,16250,p +port,index.test.ts: valid_upgrade,16250,p +port,config.test.ts: should_build_default_configuration,16250,p +port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,16250,p +port,"index.test.ts: valid_JWT,_with_lastId",16250,p +port,"index.test.ts: valid_JWT,_no_channel",16250,p +port,config.test.ts: should_handle_invalid_environment_variable_values,16250,p +port,"index.test.ts: valid_JWT,_no_lastId",16250,p +port,index.test.ts: channel_not_present,16250,p +port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,16250,p +port,index.test.ts: closed_sockets,16250,p +port,index.test.ts: invalid_channel,16250,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,1,p +redis.db,config.test.ts: should_correctly_apply_partial_configuration_overrides,1,p +redis.db,index.test.ts: it_increments_a_valid_Redis_stream_ID,1,p +redis.db,config.test.ts: should_perform_deep_merge_between_configs,1,p +redis.db,index.test.ts: sends_data_to_channel,1,p +redis.db,index.test.ts: stale_sockets,1,p +redis.db,index.test.ts: success_with_results,1,p +redis.db,index.test.ts: error,1,p +redis.db,config.test.ts: buildConfig_performs_deep_merge_between_configs,1,p +redis.db,index.test.ts: closing_sockets,1,p +redis.db,index.test.ts: multiple_sockets,1,p +redis.db,index.test.ts: services_health_checks,1,p +redis.db,config.test.ts: should_override_Redis_config_with_environment_variables,1,p +redis.db,index.test.ts: success_no_results,1,p +redis.db,index.test.ts: invalid_JWT,1,p +redis.db,config.test.ts: should_override_StatsD_config_with_environment_variables,1,p +redis.db,index.test.ts: no_sockets,1,p +redis.db,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,1,p +redis.db,config.test.ts: should_use_default_values_for_missing_environment_variables,1,p +redis.db,index.test.ts: active_sockets,1,p +redis.db,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",1,p +redis.db,config.test.ts: should_override_JWT_config_with_environment_variables,1,p +redis.db,index.test.ts: error_sending_data_to_client,1,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,1,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,1,p +redis.db,index.test.ts: responds_with_a_404_when_not_found,1,p +redis.db,config.test.ts: should_clean_up_environment_variables_after_use,1,p +redis.db,index.test.ts: valid_upgrade,1,p +redis.db,config.test.ts: should_build_default_configuration,1,p +redis.db,index.test.ts: it_handles_an_invalid_Redis_stream_ID,1,p +redis.db,"index.test.ts: valid_JWT,_with_lastId",1,p +redis.db,"index.test.ts: valid_JWT,_no_channel",1,p +redis.db,config.test.ts: should_handle_invalid_environment_variable_values,1,p +redis.db,"index.test.ts: valid_JWT,_no_lastId",1,p +redis.db,index.test.ts: channel_not_present,1,p +redis.db,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,1,p +redis.db,index.test.ts: closed_sockets,1,p +redis.db,index.test.ts: invalid_channel,1,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,20,p +redis.db,config.test.ts: should_correctly_apply_partial_configuration_overrides,20,p +redis.db,index.test.ts: it_increments_a_valid_Redis_stream_ID,20,p +redis.db,config.test.ts: should_perform_deep_merge_between_configs,20,p +redis.db,index.test.ts: sends_data_to_channel,20,p +redis.db,index.test.ts: stale_sockets,20,p +redis.db,index.test.ts: success_with_results,20,p +redis.db,index.test.ts: error,20,p +redis.db,config.test.ts: buildConfig_performs_deep_merge_between_configs,20,p +redis.db,index.test.ts: closing_sockets,20,p +redis.db,index.test.ts: multiple_sockets,20,p +redis.db,index.test.ts: services_health_checks,20,p +redis.db,config.test.ts: should_override_Redis_config_with_environment_variables,20,p +redis.db,index.test.ts: success_no_results,20,p +redis.db,index.test.ts: invalid_JWT,20,p +redis.db,config.test.ts: should_override_StatsD_config_with_environment_variables,20,p +redis.db,index.test.ts: no_sockets,20,p +redis.db,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,20,p +redis.db,config.test.ts: should_use_default_values_for_missing_environment_variables,20,p +redis.db,index.test.ts: active_sockets,20,p +redis.db,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",20,p +redis.db,config.test.ts: should_override_JWT_config_with_environment_variables,20,p +redis.db,index.test.ts: error_sending_data_to_client,20,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,20,p +redis.db,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,20,p +redis.db,index.test.ts: responds_with_a_404_when_not_found,20,p +redis.db,config.test.ts: should_clean_up_environment_variables_after_use,20,p +redis.db,index.test.ts: valid_upgrade,20,p +redis.db,config.test.ts: should_build_default_configuration,20,p +redis.db,index.test.ts: it_handles_an_invalid_Redis_stream_ID,20,p +redis.db,"index.test.ts: valid_JWT,_with_lastId",20,p +redis.db,"index.test.ts: valid_JWT,_no_channel",20,p +redis.db,config.test.ts: should_handle_invalid_environment_variable_values,20,p +redis.db,"index.test.ts: valid_JWT,_no_lastId",20,p +redis.db,index.test.ts: channel_not_present,20,p +redis.db,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,20,p +redis.db,index.test.ts: closed_sockets,20,p +redis.db,index.test.ts: invalid_channel,20,p +redis.host,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,127.0.0.1,p +redis.host,config.test.ts: should_correctly_apply_partial_configuration_overrides,127.0.0.1,p +redis.host,index.test.ts: it_increments_a_valid_Redis_stream_ID,127.0.0.1,p +redis.host,config.test.ts: should_perform_deep_merge_between_configs,127.0.0.1,p +redis.host,index.test.ts: sends_data_to_channel,127.0.0.1,p +redis.host,index.test.ts: stale_sockets,127.0.0.1,p +redis.host,index.test.ts: success_with_results,127.0.0.1,p +redis.host,index.test.ts: error,127.0.0.1,p +redis.host,config.test.ts: buildConfig_performs_deep_merge_between_configs,127.0.0.1,p +redis.host,index.test.ts: closing_sockets,127.0.0.1,p +redis.host,index.test.ts: multiple_sockets,127.0.0.1,p +redis.host,index.test.ts: services_health_checks,127.0.0.1,p +redis.host,config.test.ts: should_override_Redis_config_with_environment_variables,127.0.0.1,p +redis.host,index.test.ts: success_no_results,127.0.0.1,p +redis.host,index.test.ts: invalid_JWT,127.0.0.1,p +redis.host,config.test.ts: should_override_StatsD_config_with_environment_variables,127.0.0.1,p +redis.host,index.test.ts: no_sockets,127.0.0.1,p +redis.host,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,127.0.0.1,p +redis.host,config.test.ts: should_use_default_values_for_missing_environment_variables,127.0.0.1,p +redis.host,index.test.ts: active_sockets,127.0.0.1,p +redis.host,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",127.0.0.1,p +redis.host,config.test.ts: should_override_JWT_config_with_environment_variables,127.0.0.1,p +redis.host,index.test.ts: error_sending_data_to_client,127.0.0.1,p +redis.host,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,127.0.0.1,p +redis.host,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,127.0.0.1,p +redis.host,index.test.ts: responds_with_a_404_when_not_found,127.0.0.1,p +redis.host,config.test.ts: should_clean_up_environment_variables_after_use,127.0.0.1,p +redis.host,index.test.ts: valid_upgrade,127.0.0.1,p +redis.host,config.test.ts: should_build_default_configuration,127.0.0.1,p +redis.host,index.test.ts: it_handles_an_invalid_Redis_stream_ID,127.0.0.1,p +redis.host,"index.test.ts: valid_JWT,_with_lastId",127.0.0.1,p +redis.host,"index.test.ts: valid_JWT,_no_channel",127.0.0.1,p +redis.host,config.test.ts: should_handle_invalid_environment_variable_values,127.0.0.1,p +redis.host,"index.test.ts: valid_JWT,_no_lastId",127.0.0.1,p +redis.host,index.test.ts: channel_not_present,127.0.0.1,p +redis.host,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,127.0.0.1,p +redis.host,index.test.ts: closed_sockets,127.0.0.1,p +redis.host,index.test.ts: invalid_channel,127.0.0.1,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,3000,p +redis.port,config.test.ts: should_correctly_apply_partial_configuration_overrides,3000,p +redis.port,index.test.ts: it_increments_a_valid_Redis_stream_ID,3000,p +redis.port,config.test.ts: should_perform_deep_merge_between_configs,3000,p +redis.port,index.test.ts: sends_data_to_channel,3000,p +redis.port,index.test.ts: stale_sockets,3000,p +redis.port,index.test.ts: success_with_results,3000,p +redis.port,index.test.ts: error,3000,p +redis.port,config.test.ts: buildConfig_performs_deep_merge_between_configs,3000,p +redis.port,index.test.ts: closing_sockets,3000,p +redis.port,index.test.ts: multiple_sockets,3000,p +redis.port,index.test.ts: services_health_checks,3000,p +redis.port,config.test.ts: should_override_Redis_config_with_environment_variables,3000,p +redis.port,index.test.ts: success_no_results,3000,p +redis.port,index.test.ts: invalid_JWT,3000,p +redis.port,config.test.ts: should_override_StatsD_config_with_environment_variables,3000,p +redis.port,index.test.ts: no_sockets,3000,p +redis.port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,3000,p +redis.port,config.test.ts: should_use_default_values_for_missing_environment_variables,3000,p +redis.port,index.test.ts: active_sockets,3000,p +redis.port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",3000,p +redis.port,config.test.ts: should_override_JWT_config_with_environment_variables,3000,p +redis.port,index.test.ts: error_sending_data_to_client,3000,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,3000,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,3000,p +redis.port,index.test.ts: responds_with_a_404_when_not_found,3000,p +redis.port,config.test.ts: should_clean_up_environment_variables_after_use,3000,p +redis.port,index.test.ts: valid_upgrade,3000,p +redis.port,config.test.ts: should_build_default_configuration,3000,p +redis.port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,3000,p +redis.port,"index.test.ts: valid_JWT,_with_lastId",3000,p +redis.port,"index.test.ts: valid_JWT,_no_channel",3000,p +redis.port,config.test.ts: should_handle_invalid_environment_variable_values,3000,p +redis.port,"index.test.ts: valid_JWT,_no_lastId",3000,p +redis.port,index.test.ts: channel_not_present,3000,p +redis.port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,3000,p +redis.port,index.test.ts: closed_sockets,3000,p +redis.port,index.test.ts: invalid_channel,3000,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,3001,p +redis.port,config.test.ts: should_correctly_apply_partial_configuration_overrides,3001,p +redis.port,index.test.ts: it_increments_a_valid_Redis_stream_ID,3001,p +redis.port,config.test.ts: should_perform_deep_merge_between_configs,3001,p +redis.port,index.test.ts: sends_data_to_channel,3001,p +redis.port,index.test.ts: stale_sockets,3001,p +redis.port,index.test.ts: success_with_results,3001,p +redis.port,index.test.ts: error,3001,p +redis.port,config.test.ts: buildConfig_performs_deep_merge_between_configs,3001,p +redis.port,index.test.ts: closing_sockets,3001,p +redis.port,index.test.ts: multiple_sockets,3001,p +redis.port,index.test.ts: services_health_checks,3001,p +redis.port,config.test.ts: should_override_Redis_config_with_environment_variables,3001,p +redis.port,index.test.ts: success_no_results,3001,p +redis.port,index.test.ts: invalid_JWT,3001,p +redis.port,config.test.ts: should_override_StatsD_config_with_environment_variables,3001,p +redis.port,index.test.ts: no_sockets,3001,p +redis.port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,3001,p +redis.port,config.test.ts: should_use_default_values_for_missing_environment_variables,3001,p +redis.port,index.test.ts: active_sockets,3001,p +redis.port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",3001,p +redis.port,config.test.ts: should_override_JWT_config_with_environment_variables,3001,p +redis.port,index.test.ts: error_sending_data_to_client,3001,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,3001,p +redis.port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,3001,p +redis.port,index.test.ts: responds_with_a_404_when_not_found,3001,p +redis.port,config.test.ts: should_clean_up_environment_variables_after_use,3001,p +redis.port,index.test.ts: valid_upgrade,3001,p +redis.port,config.test.ts: should_build_default_configuration,3001,p +redis.port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,3001,p +redis.port,"index.test.ts: valid_JWT,_with_lastId",3001,p +redis.port,"index.test.ts: valid_JWT,_no_channel",3001,p +redis.port,config.test.ts: should_handle_invalid_environment_variable_values,3001,p +redis.port,"index.test.ts: valid_JWT,_no_lastId",3001,p +redis.port,index.test.ts: channel_not_present,3001,p +redis.port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,3001,p +redis.port,index.test.ts: closed_sockets,3001,p +redis.port,index.test.ts: invalid_channel,3001,p +redis.ssl,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,TRUE,p +redis.ssl,config.test.ts: should_correctly_apply_partial_configuration_overrides,TRUE,p +redis.ssl,index.test.ts: it_increments_a_valid_Redis_stream_ID,TRUE,p +redis.ssl,config.test.ts: should_perform_deep_merge_between_configs,TRUE,p +redis.ssl,index.test.ts: sends_data_to_channel,TRUE,p +redis.ssl,index.test.ts: stale_sockets,TRUE,p +redis.ssl,index.test.ts: success_with_results,TRUE,p +redis.ssl,index.test.ts: error,TRUE,p +redis.ssl,config.test.ts: buildConfig_performs_deep_merge_between_configs,TRUE,p +redis.ssl,index.test.ts: closing_sockets,TRUE,p +redis.ssl,index.test.ts: multiple_sockets,TRUE,p +redis.ssl,index.test.ts: services_health_checks,TRUE,p +redis.ssl,config.test.ts: should_override_Redis_config_with_environment_variables,TRUE,p +redis.ssl,index.test.ts: success_no_results,TRUE,p +redis.ssl,index.test.ts: invalid_JWT,TRUE,p +redis.ssl,config.test.ts: should_override_StatsD_config_with_environment_variables,TRUE,p +redis.ssl,index.test.ts: no_sockets,TRUE,p +redis.ssl,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,TRUE,p +redis.ssl,config.test.ts: should_use_default_values_for_missing_environment_variables,TRUE,p +redis.ssl,index.test.ts: active_sockets,TRUE,p +redis.ssl,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",TRUE,p +redis.ssl,config.test.ts: should_override_JWT_config_with_environment_variables,TRUE,p +redis.ssl,index.test.ts: error_sending_data_to_client,TRUE,p +redis.ssl,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,TRUE,p +redis.ssl,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,TRUE,p +redis.ssl,index.test.ts: responds_with_a_404_when_not_found,TRUE,p +redis.ssl,config.test.ts: should_clean_up_environment_variables_after_use,TRUE,p +redis.ssl,index.test.ts: valid_upgrade,TRUE,p +redis.ssl,config.test.ts: should_build_default_configuration,TRUE,p +redis.ssl,index.test.ts: it_handles_an_invalid_Redis_stream_ID,TRUE,p +redis.ssl,"index.test.ts: valid_JWT,_with_lastId",TRUE,p +redis.ssl,"index.test.ts: valid_JWT,_no_channel",TRUE,p +redis.ssl,config.test.ts: should_handle_invalid_environment_variable_values,TRUE,p +redis.ssl,"index.test.ts: valid_JWT,_no_lastId",TRUE,p +redis.ssl,index.test.ts: channel_not_present,TRUE,p +redis.ssl,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,TRUE,p +redis.ssl,index.test.ts: closed_sockets,TRUE,p +redis.ssl,index.test.ts: invalid_channel,TRUE,p +redis.validateHostname,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,FALSE,p +redis.validateHostname,config.test.ts: should_correctly_apply_partial_configuration_overrides,FALSE,p +redis.validateHostname,index.test.ts: it_increments_a_valid_Redis_stream_ID,FALSE,p +redis.validateHostname,config.test.ts: should_perform_deep_merge_between_configs,FALSE,p +redis.validateHostname,index.test.ts: sends_data_to_channel,FALSE,p +redis.validateHostname,index.test.ts: stale_sockets,FALSE,p +redis.validateHostname,index.test.ts: success_with_results,FALSE,p +redis.validateHostname,index.test.ts: error,FALSE,p +redis.validateHostname,config.test.ts: buildConfig_performs_deep_merge_between_configs,FALSE,p +redis.validateHostname,index.test.ts: closing_sockets,FALSE,p +redis.validateHostname,index.test.ts: multiple_sockets,FALSE,p +redis.validateHostname,index.test.ts: services_health_checks,FALSE,p +redis.validateHostname,config.test.ts: should_override_Redis_config_with_environment_variables,FALSE,p +redis.validateHostname,index.test.ts: success_no_results,FALSE,p +redis.validateHostname,index.test.ts: invalid_JWT,FALSE,p +redis.validateHostname,config.test.ts: should_override_StatsD_config_with_environment_variables,FALSE,p +redis.validateHostname,index.test.ts: no_sockets,FALSE,p +redis.validateHostname,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,FALSE,p +redis.validateHostname,config.test.ts: should_use_default_values_for_missing_environment_variables,FALSE,p +redis.validateHostname,index.test.ts: active_sockets,FALSE,p +redis.validateHostname,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",FALSE,p +redis.validateHostname,config.test.ts: should_override_JWT_config_with_environment_variables,FALSE,p +redis.validateHostname,index.test.ts: error_sending_data_to_client,FALSE,p +redis.validateHostname,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,FALSE,p +redis.validateHostname,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,FALSE,p +redis.validateHostname,index.test.ts: responds_with_a_404_when_not_found,FALSE,p +redis.validateHostname,config.test.ts: should_clean_up_environment_variables_after_use,FALSE,p +redis.validateHostname,index.test.ts: valid_upgrade,FALSE,p +redis.validateHostname,config.test.ts: should_build_default_configuration,FALSE,p +redis.validateHostname,index.test.ts: it_handles_an_invalid_Redis_stream_ID,FALSE,p +redis.validateHostname,"index.test.ts: valid_JWT,_with_lastId",FALSE,p +redis.validateHostname,"index.test.ts: valid_JWT,_no_channel",FALSE,p +redis.validateHostname,config.test.ts: should_handle_invalid_environment_variable_values,FALSE,p +redis.validateHostname,"index.test.ts: valid_JWT,_no_lastId",FALSE,p +redis.validateHostname,index.test.ts: channel_not_present,FALSE,p +redis.validateHostname,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,FALSE,p +redis.validateHostname,index.test.ts: closed_sockets,FALSE,p +redis.validateHostname,index.test.ts: invalid_channel,FALSE,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,abc,p +redisStreamReadBlockMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,abc,p +redisStreamReadBlockMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,abc,p +redisStreamReadBlockMs,config.test.ts: should_perform_deep_merge_between_configs,abc,p +redisStreamReadBlockMs,index.test.ts: sends_data_to_channel,abc,p +redisStreamReadBlockMs,index.test.ts: stale_sockets,abc,p +redisStreamReadBlockMs,index.test.ts: success_with_results,abc,p +redisStreamReadBlockMs,index.test.ts: error,abc,p +redisStreamReadBlockMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,abc,p +redisStreamReadBlockMs,index.test.ts: closing_sockets,abc,p +redisStreamReadBlockMs,index.test.ts: multiple_sockets,abc,p +redisStreamReadBlockMs,index.test.ts: services_health_checks,abc,p +redisStreamReadBlockMs,config.test.ts: should_override_Redis_config_with_environment_variables,abc,p +redisStreamReadBlockMs,index.test.ts: success_no_results,abc,p +redisStreamReadBlockMs,index.test.ts: invalid_JWT,abc,p +redisStreamReadBlockMs,config.test.ts: should_override_StatsD_config_with_environment_variables,abc,p +redisStreamReadBlockMs,index.test.ts: no_sockets,abc,p +redisStreamReadBlockMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,abc,p +redisStreamReadBlockMs,config.test.ts: should_use_default_values_for_missing_environment_variables,abc,p +redisStreamReadBlockMs,index.test.ts: active_sockets,abc,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",abc,p +redisStreamReadBlockMs,config.test.ts: should_override_JWT_config_with_environment_variables,abc,p +redisStreamReadBlockMs,index.test.ts: error_sending_data_to_client,abc,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,abc,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,abc,p +redisStreamReadBlockMs,index.test.ts: responds_with_a_404_when_not_found,abc,p +redisStreamReadBlockMs,config.test.ts: should_clean_up_environment_variables_after_use,abc,p +redisStreamReadBlockMs,index.test.ts: valid_upgrade,abc,p +redisStreamReadBlockMs,config.test.ts: should_build_default_configuration,abc,p +redisStreamReadBlockMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,abc,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_with_lastId",abc,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_no_channel",abc,p +redisStreamReadBlockMs,config.test.ts: should_handle_invalid_environment_variable_values,abc,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_no_lastId",abc,p +redisStreamReadBlockMs,index.test.ts: channel_not_present,abc,p +redisStreamReadBlockMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,abc,p +redisStreamReadBlockMs,index.test.ts: closed_sockets,abc,p +redisStreamReadBlockMs,index.test.ts: invalid_channel,abc,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,10000,p +redisStreamReadBlockMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,10000,p +redisStreamReadBlockMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,10000,p +redisStreamReadBlockMs,config.test.ts: should_perform_deep_merge_between_configs,10000,p +redisStreamReadBlockMs,index.test.ts: sends_data_to_channel,10000,p +redisStreamReadBlockMs,index.test.ts: stale_sockets,10000,p +redisStreamReadBlockMs,index.test.ts: success_with_results,10000,p +redisStreamReadBlockMs,index.test.ts: error,10000,p +redisStreamReadBlockMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,10000,p +redisStreamReadBlockMs,index.test.ts: closing_sockets,10000,p +redisStreamReadBlockMs,index.test.ts: multiple_sockets,10000,p +redisStreamReadBlockMs,index.test.ts: services_health_checks,10000,p +redisStreamReadBlockMs,config.test.ts: should_override_Redis_config_with_environment_variables,10000,p +redisStreamReadBlockMs,index.test.ts: success_no_results,10000,p +redisStreamReadBlockMs,index.test.ts: invalid_JWT,10000,p +redisStreamReadBlockMs,config.test.ts: should_override_StatsD_config_with_environment_variables,10000,p +redisStreamReadBlockMs,index.test.ts: no_sockets,10000,p +redisStreamReadBlockMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,10000,p +redisStreamReadBlockMs,config.test.ts: should_use_default_values_for_missing_environment_variables,10000,p +redisStreamReadBlockMs,index.test.ts: active_sockets,10000,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",10000,p +redisStreamReadBlockMs,config.test.ts: should_override_JWT_config_with_environment_variables,10000,p +redisStreamReadBlockMs,index.test.ts: error_sending_data_to_client,10000,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,10000,p +redisStreamReadBlockMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,10000,p +redisStreamReadBlockMs,index.test.ts: responds_with_a_404_when_not_found,10000,p +redisStreamReadBlockMs,config.test.ts: should_clean_up_environment_variables_after_use,10000,p +redisStreamReadBlockMs,index.test.ts: valid_upgrade,10000,p +redisStreamReadBlockMs,config.test.ts: should_build_default_configuration,10000,p +redisStreamReadBlockMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,10000,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_with_lastId",10000,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_no_channel",10000,p +redisStreamReadBlockMs,config.test.ts: should_handle_invalid_environment_variable_values,10000,p +redisStreamReadBlockMs,"index.test.ts: valid_JWT,_no_lastId",10000,p +redisStreamReadBlockMs,index.test.ts: channel_not_present,10000,p +redisStreamReadBlockMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,10000,p +redisStreamReadBlockMs,index.test.ts: closed_sockets,10000,p +redisStreamReadBlockMs,index.test.ts: invalid_channel,10000,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,50,p +redisStreamReadCount,config.test.ts: should_correctly_apply_partial_configuration_overrides,50,p +redisStreamReadCount,index.test.ts: it_increments_a_valid_Redis_stream_ID,50,p +redisStreamReadCount,config.test.ts: should_perform_deep_merge_between_configs,50,p +redisStreamReadCount,index.test.ts: sends_data_to_channel,50,p +redisStreamReadCount,index.test.ts: stale_sockets,50,p +redisStreamReadCount,index.test.ts: success_with_results,50,p +redisStreamReadCount,index.test.ts: error,50,p +redisStreamReadCount,config.test.ts: buildConfig_performs_deep_merge_between_configs,50,p +redisStreamReadCount,index.test.ts: closing_sockets,50,p +redisStreamReadCount,index.test.ts: multiple_sockets,50,p +redisStreamReadCount,index.test.ts: services_health_checks,50,p +redisStreamReadCount,config.test.ts: should_override_Redis_config_with_environment_variables,50,p +redisStreamReadCount,index.test.ts: success_no_results,50,p +redisStreamReadCount,index.test.ts: invalid_JWT,50,p +redisStreamReadCount,config.test.ts: should_override_StatsD_config_with_environment_variables,50,p +redisStreamReadCount,index.test.ts: no_sockets,50,p +redisStreamReadCount,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,50,p +redisStreamReadCount,config.test.ts: should_use_default_values_for_missing_environment_variables,50,p +redisStreamReadCount,index.test.ts: active_sockets,50,p +redisStreamReadCount,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",50,p +redisStreamReadCount,config.test.ts: should_override_JWT_config_with_environment_variables,50,p +redisStreamReadCount,index.test.ts: error_sending_data_to_client,50,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,50,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,50,p +redisStreamReadCount,index.test.ts: responds_with_a_404_when_not_found,50,p +redisStreamReadCount,config.test.ts: should_clean_up_environment_variables_after_use,50,p +redisStreamReadCount,index.test.ts: valid_upgrade,50,p +redisStreamReadCount,config.test.ts: should_build_default_configuration,50,p +redisStreamReadCount,index.test.ts: it_handles_an_invalid_Redis_stream_ID,50,p +redisStreamReadCount,"index.test.ts: valid_JWT,_with_lastId",50,p +redisStreamReadCount,"index.test.ts: valid_JWT,_no_channel",50,p +redisStreamReadCount,config.test.ts: should_handle_invalid_environment_variable_values,50,p +redisStreamReadCount,"index.test.ts: valid_JWT,_no_lastId",50,p +redisStreamReadCount,index.test.ts: channel_not_present,50,p +redisStreamReadCount,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,50,p +redisStreamReadCount,index.test.ts: closed_sockets,50,p +redisStreamReadCount,index.test.ts: invalid_channel,50,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,200,p +redisStreamReadCount,config.test.ts: should_correctly_apply_partial_configuration_overrides,200,p +redisStreamReadCount,index.test.ts: it_increments_a_valid_Redis_stream_ID,200,p +redisStreamReadCount,config.test.ts: should_perform_deep_merge_between_configs,200,p +redisStreamReadCount,index.test.ts: sends_data_to_channel,200,p +redisStreamReadCount,index.test.ts: stale_sockets,200,p +redisStreamReadCount,index.test.ts: success_with_results,200,p +redisStreamReadCount,index.test.ts: error,200,p +redisStreamReadCount,config.test.ts: buildConfig_performs_deep_merge_between_configs,200,p +redisStreamReadCount,index.test.ts: closing_sockets,200,p +redisStreamReadCount,index.test.ts: multiple_sockets,200,p +redisStreamReadCount,index.test.ts: services_health_checks,200,p +redisStreamReadCount,config.test.ts: should_override_Redis_config_with_environment_variables,200,p +redisStreamReadCount,index.test.ts: success_no_results,200,p +redisStreamReadCount,index.test.ts: invalid_JWT,200,p +redisStreamReadCount,config.test.ts: should_override_StatsD_config_with_environment_variables,200,p +redisStreamReadCount,index.test.ts: no_sockets,200,p +redisStreamReadCount,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,200,p +redisStreamReadCount,config.test.ts: should_use_default_values_for_missing_environment_variables,200,p +redisStreamReadCount,index.test.ts: active_sockets,200,p +redisStreamReadCount,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",200,p +redisStreamReadCount,config.test.ts: should_override_JWT_config_with_environment_variables,200,p +redisStreamReadCount,index.test.ts: error_sending_data_to_client,200,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,200,p +redisStreamReadCount,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,200,p +redisStreamReadCount,index.test.ts: responds_with_a_404_when_not_found,200,p +redisStreamReadCount,config.test.ts: should_clean_up_environment_variables_after_use,200,p +redisStreamReadCount,index.test.ts: valid_upgrade,200,p +redisStreamReadCount,config.test.ts: should_build_default_configuration,200,p +redisStreamReadCount,index.test.ts: it_handles_an_invalid_Redis_stream_ID,200,p +redisStreamReadCount,"index.test.ts: valid_JWT,_with_lastId",200,p +redisStreamReadCount,"index.test.ts: valid_JWT,_no_channel",200,p +redisStreamReadCount,config.test.ts: should_handle_invalid_environment_variable_values,200,p +redisStreamReadCount,"index.test.ts: valid_JWT,_no_lastId",200,p +redisStreamReadCount,index.test.ts: channel_not_present,200,p +redisStreamReadCount,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,200,p +redisStreamReadCount,index.test.ts: closed_sockets,200,p +redisStreamReadCount,index.test.ts: invalid_channel,200,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,30000,p +socketResponseTimeoutMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,30000,p +socketResponseTimeoutMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,30000,p +socketResponseTimeoutMs,config.test.ts: should_perform_deep_merge_between_configs,30000,p +socketResponseTimeoutMs,index.test.ts: sends_data_to_channel,30000,p +socketResponseTimeoutMs,index.test.ts: stale_sockets,30000,p +socketResponseTimeoutMs,index.test.ts: success_with_results,30000,p +socketResponseTimeoutMs,index.test.ts: error,30000,p +socketResponseTimeoutMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,30000,p +socketResponseTimeoutMs,index.test.ts: closing_sockets,30000,p +socketResponseTimeoutMs,index.test.ts: multiple_sockets,30000,p +socketResponseTimeoutMs,index.test.ts: services_health_checks,30000,p +socketResponseTimeoutMs,config.test.ts: should_override_Redis_config_with_environment_variables,30000,p +socketResponseTimeoutMs,index.test.ts: success_no_results,30000,p +socketResponseTimeoutMs,index.test.ts: invalid_JWT,30000,p +socketResponseTimeoutMs,config.test.ts: should_override_StatsD_config_with_environment_variables,30000,p +socketResponseTimeoutMs,index.test.ts: no_sockets,30000,p +socketResponseTimeoutMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,30000,p +socketResponseTimeoutMs,config.test.ts: should_use_default_values_for_missing_environment_variables,30000,p +socketResponseTimeoutMs,index.test.ts: active_sockets,30000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",30000,p +socketResponseTimeoutMs,config.test.ts: should_override_JWT_config_with_environment_variables,30000,p +socketResponseTimeoutMs,index.test.ts: error_sending_data_to_client,30000,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,30000,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,30000,p +socketResponseTimeoutMs,index.test.ts: responds_with_a_404_when_not_found,30000,p +socketResponseTimeoutMs,config.test.ts: should_clean_up_environment_variables_after_use,30000,p +socketResponseTimeoutMs,index.test.ts: valid_upgrade,30000,p +socketResponseTimeoutMs,config.test.ts: should_build_default_configuration,30000,p +socketResponseTimeoutMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,30000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_with_lastId",30000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_no_channel",30000,p +socketResponseTimeoutMs,config.test.ts: should_handle_invalid_environment_variable_values,30000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_no_lastId",30000,p +socketResponseTimeoutMs,index.test.ts: channel_not_present,30000,p +socketResponseTimeoutMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,30000,p +socketResponseTimeoutMs,index.test.ts: closed_sockets,30000,p +socketResponseTimeoutMs,index.test.ts: invalid_channel,30000,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,120000,p +socketResponseTimeoutMs,config.test.ts: should_correctly_apply_partial_configuration_overrides,120000,p +socketResponseTimeoutMs,index.test.ts: it_increments_a_valid_Redis_stream_ID,120000,p +socketResponseTimeoutMs,config.test.ts: should_perform_deep_merge_between_configs,120000,p +socketResponseTimeoutMs,index.test.ts: sends_data_to_channel,120000,p +socketResponseTimeoutMs,index.test.ts: stale_sockets,120000,p +socketResponseTimeoutMs,index.test.ts: success_with_results,120000,p +socketResponseTimeoutMs,index.test.ts: error,120000,p +socketResponseTimeoutMs,config.test.ts: buildConfig_performs_deep_merge_between_configs,120000,p +socketResponseTimeoutMs,index.test.ts: closing_sockets,120000,p +socketResponseTimeoutMs,index.test.ts: multiple_sockets,120000,p +socketResponseTimeoutMs,index.test.ts: services_health_checks,120000,p +socketResponseTimeoutMs,config.test.ts: should_override_Redis_config_with_environment_variables,120000,p +socketResponseTimeoutMs,index.test.ts: success_no_results,120000,p +socketResponseTimeoutMs,index.test.ts: invalid_JWT,120000,p +socketResponseTimeoutMs,config.test.ts: should_override_StatsD_config_with_environment_variables,120000,p +socketResponseTimeoutMs,index.test.ts: no_sockets,120000,p +socketResponseTimeoutMs,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,120000,p +socketResponseTimeoutMs,config.test.ts: should_use_default_values_for_missing_environment_variables,120000,p +socketResponseTimeoutMs,index.test.ts: active_sockets,120000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",120000,p +socketResponseTimeoutMs,config.test.ts: should_override_JWT_config_with_environment_variables,120000,p +socketResponseTimeoutMs,index.test.ts: error_sending_data_to_client,120000,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,120000,p +socketResponseTimeoutMs,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,120000,p +socketResponseTimeoutMs,index.test.ts: responds_with_a_404_when_not_found,120000,p +socketResponseTimeoutMs,config.test.ts: should_clean_up_environment_variables_after_use,120000,p +socketResponseTimeoutMs,index.test.ts: valid_upgrade,120000,p +socketResponseTimeoutMs,config.test.ts: should_build_default_configuration,120000,p +socketResponseTimeoutMs,index.test.ts: it_handles_an_invalid_Redis_stream_ID,120000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_with_lastId",120000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_no_channel",120000,p +socketResponseTimeoutMs,config.test.ts: should_handle_invalid_environment_variable_values,120000,p +socketResponseTimeoutMs,"index.test.ts: valid_JWT,_no_lastId",120000,p +socketResponseTimeoutMs,index.test.ts: channel_not_present,120000,p +socketResponseTimeoutMs,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,120000,p +socketResponseTimeoutMs,index.test.ts: closed_sockets,120000,p +socketResponseTimeoutMs,index.test.ts: invalid_channel,120000,p +statsd.host,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,127.0.0.1,p +statsd.host,config.test.ts: should_correctly_apply_partial_configuration_overrides,127.0.0.1,p +statsd.host,index.test.ts: it_increments_a_valid_Redis_stream_ID,127.0.0.1,p +statsd.host,config.test.ts: should_perform_deep_merge_between_configs,127.0.0.1,p +statsd.host,index.test.ts: sends_data_to_channel,127.0.0.1,p +statsd.host,index.test.ts: stale_sockets,127.0.0.1,p +statsd.host,index.test.ts: success_with_results,127.0.0.1,p +statsd.host,index.test.ts: error,127.0.0.1,p +statsd.host,config.test.ts: buildConfig_performs_deep_merge_between_configs,127.0.0.1,p +statsd.host,index.test.ts: closing_sockets,127.0.0.1,p +statsd.host,index.test.ts: multiple_sockets,127.0.0.1,p +statsd.host,index.test.ts: services_health_checks,127.0.0.1,p +statsd.host,config.test.ts: should_override_Redis_config_with_environment_variables,127.0.0.1,p +statsd.host,index.test.ts: success_no_results,127.0.0.1,p +statsd.host,index.test.ts: invalid_JWT,127.0.0.1,p +statsd.host,config.test.ts: should_override_StatsD_config_with_environment_variables,127.0.0.1,p +statsd.host,index.test.ts: no_sockets,127.0.0.1,p +statsd.host,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,127.0.0.1,p +statsd.host,config.test.ts: should_use_default_values_for_missing_environment_variables,127.0.0.1,p +statsd.host,index.test.ts: active_sockets,127.0.0.1,p +statsd.host,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",127.0.0.1,p +statsd.host,config.test.ts: should_override_JWT_config_with_environment_variables,127.0.0.1,p +statsd.host,index.test.ts: error_sending_data_to_client,127.0.0.1,p +statsd.host,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,127.0.0.1,p +statsd.host,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,127.0.0.1,p +statsd.host,index.test.ts: responds_with_a_404_when_not_found,127.0.0.1,p +statsd.host,config.test.ts: should_clean_up_environment_variables_after_use,127.0.0.1,p +statsd.host,index.test.ts: valid_upgrade,127.0.0.1,p +statsd.host,config.test.ts: should_build_default_configuration,127.0.0.1,p +statsd.host,index.test.ts: it_handles_an_invalid_Redis_stream_ID,127.0.0.1,p +statsd.host,"index.test.ts: valid_JWT,_with_lastId",127.0.0.1,p +statsd.host,"index.test.ts: valid_JWT,_no_channel",127.0.0.1,p +statsd.host,config.test.ts: should_handle_invalid_environment_variable_values,127.0.0.1,p +statsd.host,"index.test.ts: valid_JWT,_no_lastId",127.0.0.1,p +statsd.host,index.test.ts: channel_not_present,127.0.0.1,p +statsd.host,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,127.0.0.1,p +statsd.host,index.test.ts: closed_sockets,127.0.0.1,p +statsd.host,index.test.ts: invalid_channel,127.0.0.1,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,3000,p +statsd.port,config.test.ts: should_correctly_apply_partial_configuration_overrides,3000,p +statsd.port,index.test.ts: it_increments_a_valid_Redis_stream_ID,3000,p +statsd.port,config.test.ts: should_perform_deep_merge_between_configs,3000,p +statsd.port,index.test.ts: sends_data_to_channel,3000,p +statsd.port,index.test.ts: stale_sockets,3000,p +statsd.port,index.test.ts: success_with_results,3000,p +statsd.port,index.test.ts: error,3000,p +statsd.port,config.test.ts: buildConfig_performs_deep_merge_between_configs,3000,p +statsd.port,index.test.ts: closing_sockets,3000,p +statsd.port,index.test.ts: multiple_sockets,3000,p +statsd.port,index.test.ts: services_health_checks,3000,p +statsd.port,config.test.ts: should_override_Redis_config_with_environment_variables,3000,p +statsd.port,index.test.ts: success_no_results,3000,p +statsd.port,index.test.ts: invalid_JWT,3000,p +statsd.port,config.test.ts: should_override_StatsD_config_with_environment_variables,3000,p +statsd.port,index.test.ts: no_sockets,3000,p +statsd.port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,3000,p +statsd.port,config.test.ts: should_use_default_values_for_missing_environment_variables,3000,p +statsd.port,index.test.ts: active_sockets,3000,p +statsd.port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",3000,p +statsd.port,config.test.ts: should_override_JWT_config_with_environment_variables,3000,p +statsd.port,index.test.ts: error_sending_data_to_client,3000,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,3000,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,3000,p +statsd.port,index.test.ts: responds_with_a_404_when_not_found,3000,p +statsd.port,config.test.ts: should_clean_up_environment_variables_after_use,3000,p +statsd.port,index.test.ts: valid_upgrade,3000,p +statsd.port,config.test.ts: should_build_default_configuration,3000,p +statsd.port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,3000,p +statsd.port,"index.test.ts: valid_JWT,_with_lastId",3000,p +statsd.port,"index.test.ts: valid_JWT,_no_channel",3000,p +statsd.port,config.test.ts: should_handle_invalid_environment_variable_values,3000,p +statsd.port,"index.test.ts: valid_JWT,_no_lastId",3000,p +statsd.port,index.test.ts: channel_not_present,3000,p +statsd.port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,3000,p +statsd.port,index.test.ts: closed_sockets,3000,p +statsd.port,index.test.ts: invalid_channel,3000,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_with_a_password,3001,p +statsd.port,config.test.ts: should_correctly_apply_partial_configuration_overrides,3001,p +statsd.port,index.test.ts: it_increments_a_valid_Redis_stream_ID,3001,p +statsd.port,config.test.ts: should_perform_deep_merge_between_configs,3001,p +statsd.port,index.test.ts: sends_data_to_channel,3001,p +statsd.port,index.test.ts: stale_sockets,3001,p +statsd.port,index.test.ts: success_with_results,3001,p +statsd.port,index.test.ts: error,3001,p +statsd.port,config.test.ts: buildConfig_performs_deep_merge_between_configs,3001,p +statsd.port,index.test.ts: closing_sockets,3001,p +statsd.port,index.test.ts: multiple_sockets,3001,p +statsd.port,index.test.ts: services_health_checks,3001,p +statsd.port,config.test.ts: should_override_Redis_config_with_environment_variables,3001,p +statsd.port,index.test.ts: success_no_results,3001,p +statsd.port,index.test.ts: invalid_JWT,3001,p +statsd.port,config.test.ts: should_override_StatsD_config_with_environment_variables,3001,p +statsd.port,index.test.ts: no_sockets,3001,p +statsd.port,config.test.ts: should_provide_consistent_configuration_on_multiple_calls,3001,p +statsd.port,config.test.ts: should_use_default_values_for_missing_environment_variables,3001,p +statsd.port,index.test.ts: active_sockets,3001,p +statsd.port,"index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId",3001,p +statsd.port,config.test.ts: should_override_JWT_config_with_environment_variables,3001,p +statsd.port,index.test.ts: error_sending_data_to_client,3001,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_with_SSL,3001,p +statsd.port,index.test.ts: it_builds_a_valid_Redis_URL_from_defaults,3001,p +statsd.port,index.test.ts: responds_with_a_404_when_not_found,3001,p +statsd.port,config.test.ts: should_clean_up_environment_variables_after_use,3001,p +statsd.port,index.test.ts: valid_upgrade,3001,p +statsd.port,config.test.ts: should_build_default_configuration,3001,p +statsd.port,index.test.ts: it_handles_an_invalid_Redis_stream_ID,3001,p +statsd.port,"index.test.ts: valid_JWT,_with_lastId",3001,p +statsd.port,"index.test.ts: valid_JWT,_no_channel",3001,p +statsd.port,config.test.ts: should_handle_invalid_environment_variable_values,3001,p +statsd.port,"index.test.ts: valid_JWT,_no_lastId",3001,p +statsd.port,index.test.ts: channel_not_present,3001,p +statsd.port,config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides,3001,p +statsd.port,index.test.ts: closed_sockets,3001,p +statsd.port,index.test.ts: invalid_channel,3001,p \ No newline at end of file diff --git a/core/generate_value/result/superset-generated-values.tsv b/core/generate_value/result/superset-generated-values.tsv new file mode 100644 index 00000000..745f702a --- /dev/null +++ b/core/generate_value/result/superset-generated-values.tsv @@ -0,0 +1,23 @@ +gcChannelsIntervalMs 60000 240000 +jwtAlgorithms.0 JSON JWT +jwtChannelIdKey SKIP SKIP +jwtCookieName SKIP SKIP +jwtSecret SKIP SKIP +logFilename SKIP SKIP +logLevel SKIP SKIP +logToFile TRUE SKIP +pingSocketsIntervalMs 10000 40000 +port 4062 16250 +redis.db 1 20 +redis.host 127.0.0.1 SKIP +redis.password SKIP SKIP +redis.port 3000 3001 +redis.ssl TRUE SKIP +redis.username SKIP SKIP +redis.validateHostname FALSE SKIP +redisStreamPrefix SKIP SKIP +redisStreamReadBlockMs 2500 10000 +redisStreamReadCount 50 200 +socketResponseTimeoutMs 30000 120000 +statsd.host 127.0.0.1 SKIP +statsd.port 3000 3001 \ No newline at end of file diff --git a/core/generate_value/value_generation.py b/core/generate_value/value_generation.py index 82a5bde8..12149eaa 100644 --- a/core/generate_value/value_generation.py +++ b/core/generate_value/value_generation.py @@ -25,6 +25,9 @@ def read_tsv(module): if module == "zookeeper-server": assert len(params) == 32 return 32 + elif module == "superset": + assert len(params) == 23 + return 23 else: assert len(params) == 90 return 90 @@ -105,6 +108,8 @@ def print_params(module): f = open(module + output, "w") if module == "zookeeper-server": assert len(params) == 32 + elif module == "superset": + assert len(params) == 23 else: assert len(params) >= 90 for param in params: diff --git a/core/identify_param/README.md b/core/identify_param/README.md index 20d6a4f7..43156ac7 100644 --- a/core/identify_param/README.md +++ b/core/identify_param/README.md @@ -16,6 +16,14 @@ See [Identifying Parameters Exercised in Tests](https://github.com/xlab-uiuc/ope ./identify_param.sh hadoop-common ``` +For Apache Superset + +``` + python3 identify_params.py + python3 gen_param_to_case.py +``` + +Generates 4 files - `result_mapping.json`, `all_test_cases.json`, `all_params.json`, and `flattened_params_to_tests.json` ### Result diff --git a/core/identify_param/gen_param_to_case.py b/core/identify_param/gen_param_to_case.py new file mode 100644 index 00000000..ef6eecf6 --- /dev/null +++ b/core/identify_param/gen_param_to_case.py @@ -0,0 +1,128 @@ +import re +import subprocess +import os +import glob +import json +import sys + + +def flatten_json(y): + out = {} + + + def flatten(x, name=''): + if isinstance(x, dict): + for a in x: + flatten(x[a], name + a + '.') + elif isinstance(x, list): + i = 0 + for a in x: + flatten(a, name + str(i) + '.') + i += 1 + else: + out[name.rstrip('.')] = x + + + flatten(y) + return out + + +def extract_test_names(file_path): + try: + with open(file_path, 'r') as file: + content = file.read() + except FileNotFoundError: + return [] + + + pattern = re.compile(r"test\(['\"](.*?)['\"],|it\(['\"](.*?)['\"],") + test_names = [] + + + for match in pattern.finditer(content): + test_names.append(match.group(1) or match.group(2)) + + + return test_names + + +def run_test_case(file_path, test_name): + file_name = os.path.basename(file_path) + sanitized_test_name = test_name.replace(' ', '_').replace("'", "").replace('"', '') + log_file_path = os.path.join('logs', f"{file_name}-{sanitized_test_name}.log") + + + command = ["npx", "jest", file_path, "-t", test_name] + with open(log_file_path, 'w') as log_file: + subprocess.run(command, stdout=log_file, text=True) + + +def process_directory(directory_path): + os.makedirs('logs', exist_ok=True) + + + spec_files = glob.glob(os.path.join(directory_path, '**/*.test.ts'), recursive=True) + spec_files.extend(glob.glob(os.path.join(directory_path, '**/*.spec.ts'), recursive=True)) + + + for file_path in spec_files: + test_names = extract_test_names(file_path) + for name in test_names: + run_test_case(file_path, name) + + +def extract_data_and_map_params(log_directory): + param_to_test_cases = {} + log_files = os.listdir(log_directory) + + + for log_file in log_files: + parts = log_file.split('-') + test_file_name = parts[0] + test_case_name = '-'.join(parts[1:]).rsplit('.log', 1)[0].replace(' ', '_') + test_case_identifier = f"{test_file_name}: {test_case_name}" + + + with open(os.path.join(log_directory, log_file), 'r') as file: + content = file.read() + + + json_pattern = re.compile(r"\[CTEST\]\[GET-PARAM\] #### (.*?) ####", re.DOTALL) + json_match = json_pattern.search(content) + if json_match: + json_data_str = json_match.group(1) + try: + json_data = json.loads(json_data_str) + flattened_data = flatten_json(json_data) + for param in flattened_data: + if param not in param_to_test_cases: + param_to_test_cases[param] = [] + param_to_test_cases[param].append(test_case_identifier) + except json.JSONDecodeError: + pass # Handle error or log as needed + + + return param_to_test_cases + + +def write_to_file(filename, data): + with open(filename, 'w') as file: + json.dump(data, file, indent=2) + + +if len(sys.argv) != 3: + print("Usage: gen_param_to_case.py ") + sys.exit(1) + + +directory_path = sys.argv[1] +log_directory = sys.argv[2] + + +process_directory(directory_path) +param_to_test_cases = extract_data_and_map_params(log_directory) + + +output_file_path = 'flattened_params_to_tests.json' +write_to_file(output_file_path, param_to_test_cases) +print(f"Mapping of flattened parameters to test cases written to {output_file_path}") \ No newline at end of file diff --git a/core/identify_param/identify_params.py b/core/identify_param/identify_params.py new file mode 100644 index 00000000..621c853a --- /dev/null +++ b/core/identify_param/identify_params.py @@ -0,0 +1,163 @@ +import re +import subprocess +import os +import glob +import json +import sys + + +global_results = {} +all_test_cases = set() +all_params = set() + + +def remove_nested_keys(json_data, params): + if isinstance(json_data, dict): + for key in list(json_data.keys()): + direct_key = key in params + nested_keys = [p for p in params if p.startswith(key + '.')] + + if direct_key: + del json_data[key] + elif nested_keys: + adjusted_nested_keys = [p.split('.', 1)[1] for p in nested_keys] + remove_nested_keys(json_data[key], adjusted_nested_keys) + else: + remove_nested_keys(json_data[key], params) + elif isinstance(json_data, list): + for item in json_data: + remove_nested_keys(item, params) + + +def flatten_json(y): + out = {} + + + def flatten(x, name=''): + if type(x) is dict: + for a in x: + flatten(x[a], name + a + '.') + elif type(x) is list: + i = 0 + for a in x: + flatten(a, name + str(i) + '.') + i += 1 + else: + out[name.rstrip('.')] = x + + + flatten(y) + return out + + +def extract_data(log_directory): + global global_results, all_test_cases, all_params + log_files = os.listdir(log_directory) + + + for log_file in log_files: + parts = log_file.split('-') + test_file_name = parts[0] + test_case_name = '-'.join(parts[1:]).rsplit('.log', 1)[0].replace(' ', '_') + + + all_test_cases.add(f"{test_file_name}: {test_case_name}") + + + with open(os.path.join(log_directory, log_file), 'r') as file: + content = file.read() + + + json_pattern = re.compile(r"\[CTEST\]\[GET-PARAM\] #### (.*?) ####", re.DOTALL) + json_match = json_pattern.search(content) + json_data = None + if json_match: + json_data_str = json_match.group(1) + try: + json_data = json.loads(json_data_str) + except json.JSONDecodeError: + json_data = None + + + if json_data: + flattened_data = flatten_json(json_data) + all_params.update(flattened_data.keys()) + + + if test_file_name not in global_results: + global_results[test_file_name] = {} + global_results[test_file_name][test_case_name] = json_data + + +def extract_test_names(file_path): + try: + with open(file_path, 'r') as file: + content = file.read() + except FileNotFoundError: + return [] + + + pattern = re.compile(r"test\(['\"](.*?)['\"],|it\(['\"](.*?)['\"],") + test_names = [] + + + for match in pattern.finditer(content): + test_names.append(match.group(1) or match.group(2)) + + + return test_names + + +def run_test_case(file_path, test_name): + file_name = os.path.basename(file_path) + sanitized_test_name = test_name.replace(' ', '_').replace("'", "").replace('"', '') + log_file_path = os.path.join('logs', f"{file_name}-{sanitized_test_name}.log") + + + command = ["npx", "jest", file_path, "-t", test_name] + with open(log_file_path, 'w') as log_file: + subprocess.run(command, stdout=log_file, text=True) + + +def process_directory(directory_path): + os.makedirs('logs', exist_ok=True) + + + spec_files = glob.glob(os.path.join(directory_path, '**/*.test.ts'), recursive=True) + spec_files.extend(glob.glob(os.path.join(directory_path, '**/*.spec.ts'), recursive=True)) + + + for file_path in spec_files: + test_names = extract_test_names(file_path) + for name in test_names: + run_test_case(file_path, name) + + +def write_to_file(filename, data): + with open(filename, 'w') as file: + json.dump(data, file, indent=2) + + +if len(sys.argv) != 3: + print("Usage: script.py ") + sys.exit(1) + + +directory_path = sys.argv[1] +log_directory = sys.argv[2] + + +process_directory(directory_path) +extract_data(log_directory) + + +write_to_file('result_mapping.json', global_results) +print("Results written to result_mapping.json") + + +write_to_file('all_test_cases.json', list(all_test_cases)) +print("Test cases written to all_test_cases.json") + + +write_to_file('all_params.json', list(all_params)) +print("Parameters written to all_params.json") \ No newline at end of file diff --git a/core/identify_param/results/superset/all_params.json b/core/identify_param/results/superset/all_params.json new file mode 100644 index 00000000..0f9980d2 --- /dev/null +++ b/core/identify_param/results/superset/all_params.json @@ -0,0 +1,25 @@ +[ + "redis.port", + "redisStreamPrefix", + "jwtAlgorithms.0", + "logToFile", + "statsd.host", + "jwtChannelIdKey", + "logFilename", + "redisStreamReadCount", + "jwtSecret", + "redis.host", + "redis.db", + "port", + "socketResponseTimeoutMs", + "logLevel", + "redis.validateHostname", + "pingSocketsIntervalMs", + "statsd.port", + "jwtCookieName", + "redis.username", + "redis.password", + "redisStreamReadBlockMs", + "gcChannelsIntervalMs", + "redis.ssl" +] \ No newline at end of file diff --git a/core/identify_param/results/superset/all_test_cases.json b/core/identify_param/results/superset/all_test_cases.json new file mode 100644 index 00000000..d2cbb93b --- /dev/null +++ b/core/identify_param/results/superset/all_test_cases.json @@ -0,0 +1,48 @@ +[ + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: error", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "config.test.ts: should_perform_deep_merge_between_configs", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "merge.spec.ts: handles_block_coverage_merged_into_function_coverage", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: invalid_channel", + "index.test.ts: closing_sockets", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: responds_with_a_404_when_not_found", + "merge.spec.ts: accepts_arrays_with_a_single_item_for_`mergeScriptCovs`", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: sends_data_to_channel", + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "merge.spec.ts: accepts_empty_arrays_for_`mergeProcessCovs`", + "index.test.ts: valid_JWT,_no_lastId", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closed_sockets", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: active_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: no_sockets", + "merge.spec.ts: accepts_arrays_with_a_single_item_for_`mergeFunctionCovs`", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: error_sending_data_to_client", + "merge.spec.ts: accepts_empty_arrays_for_`mergeFunctionCovs`", + "index.test.ts: valid_upgrade", + "index.test.ts: invalid_JWT", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "merge.spec.ts: accepts_arrays_with_a_single_item_for_`mergeProcessCovs`", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: stale_sockets", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_build_default_configuration", + "index.test.ts: success_with_results", + "merge.spec.ts: handles_function_coverage_merged_into_block_coverage", + "merge.spec.ts: accepts_empty_arrays_for_`mergeScriptCovs`" +] \ No newline at end of file diff --git a/core/identify_param/results/superset/flattened_params_to_tests.json b/core/identify_param/results/superset/flattened_params_to_tests.json new file mode 100644 index 00000000..c86f4cce --- /dev/null +++ b/core/identify_param/results/superset/flattened_params_to_tests.json @@ -0,0 +1,922 @@ +{ + "port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logLevel": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logToFile": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logFilename": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamPrefix": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamReadCount": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamReadBlockMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtAlgorithms.0": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtSecret": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtCookieName": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtChannelIdKey": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "socketResponseTimeoutMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "pingSocketsIntervalMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "gcChannelsIntervalMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "statsd.host": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "statsd.port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.host": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.password": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.username": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.db": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.ssl": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.validateHostname": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ] +} \ No newline at end of file diff --git a/core/identify_param/results/superset/result_mapping.json b/core/identify_param/results/superset/result_mapping.json new file mode 100644 index 00000000..9b3cc144 --- /dev/null +++ b/core/identify_param/results/superset/result_mapping.json @@ -0,0 +1,1232 @@ +{ + "index.test.ts": { + "it_builds_a_valid_Redis_URL_with_a_password": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "it_increments_a_valid_Redis_stream_ID": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "sends_data_to_channel": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "stale_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "success_with_results": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "error": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "closing_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "multiple_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "services_health_checks": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "success_no_results": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "invalid_JWT": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "no_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "active_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "valid_JWT,_with_lastId_and_lastFirehoseId": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "error_sending_data_to_client": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "it_builds_a_valid_Redis_URL_with_SSL": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "it_builds_a_valid_Redis_URL_from_defaults": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "responds_with_a_404_when_not_found": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "valid_upgrade": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "it_handles_an_invalid_Redis_stream_ID": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "valid_JWT,_with_lastId": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "valid_JWT,_no_channel": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "valid_JWT,_no_lastId": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "channel_not_present": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "closed_sockets": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "invalid_channel": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + } + }, + "config.test.ts": { + "should_correctly_apply_partial_configuration_overrides": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_perform_deep_merge_between_configs": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "buildConfig_performs_deep_merge_between_configs": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_override_Redis_config_with_environment_variables": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_override_StatsD_config_with_environment_variables": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_provide_consistent_configuration_on_multiple_calls": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_use_default_values_for_missing_environment_variables": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_override_JWT_config_with_environment_variables": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_clean_up_environment_variables_after_use": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_build_default_configuration": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "should_handle_invalid_environment_variable_values": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + }, + "buildConfig_builds_configuration_and_applies_env_var_overrides": { + "port": 8080, + "logLevel": "info", + "logToFile": false, + "logFilename": "app.log", + "redisStreamPrefix": "test-async-events-", + "redisStreamReadCount": 100, + "redisStreamReadBlockMs": 5000, + "jwtAlgorithms": [ + "HS256" + ], + "jwtSecret": "test123-test123-test123-test123-test123-test123-test123", + "jwtCookieName": "test-async-token", + "jwtChannelIdKey": "channel", + "socketResponseTimeoutMs": 60000, + "pingSocketsIntervalMs": 20000, + "gcChannelsIntervalMs": 120000, + "statsd": { + "host": "127.0.0.1", + "port": 8125, + "globalTags": [] + }, + "redis": { + "host": "127.0.0.1", + "port": 6379, + "password": "some pwd", + "username": "default", + "db": 10, + "ssl": false, + "validateHostname": true + } + } + }, + "merge.spec.ts": { + "accepts_empty_arrays_for_`mergeScriptCovs`": null, + "accepts_arrays_with_a_single_item_for_`mergeFunctionCovs`": null, + "accepts_arrays_with_a_single_item_for_`mergeProcessCovs`": null, + "handles_block_coverage_merged_into_function_coverage": null, + "accepts_arrays_with_a_single_item_for_`mergeScriptCovs`": null, + "accepts_empty_arrays_for_`mergeProcessCovs`": null, + "handles_function_coverage_merged_into_block_coverage": null, + "accepts_empty_arrays_for_`mergeFunctionCovs`": null + } +} \ No newline at end of file diff --git a/core/jest_setup.sh b/core/jest_setup.sh new file mode 100644 index 00000000..c1fb14e1 --- /dev/null +++ b/core/jest_setup.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +echo "Installing Node.js and npm..." +sudo apt update +sudo apt install -y nodejs npm + +echo "Node.js and npm installed:" +node --version +npm --version + +echo "Installing Jest..." +npm install --global jest + +echo "Jest installed:" +jest --version + +echo "Environment setup complete. You can now use Jest for testing." \ No newline at end of file diff --git a/core/patch/superset/interception.patch b/core/patch/superset/interception.patch new file mode 100644 index 00000000..5f76edae --- /dev/null +++ b/core/patch/superset/interception.patch @@ -0,0 +1,78 @@ +diff --git a/superset-websocket/src/config.ts b/superset-websocket/src/config.ts +index 7c2504892..ebf12d05b 100644 +--- a/superset-websocket/src/config.ts ++++ b/superset-websocket/src/config.ts +@@ -96,12 +96,23 @@ function configFromFile(): Partial { + } + } + ++function copyOverrides(): Partial { ++ const configFile = '../config.test.override.json'; ++ try { ++ return require(configFile); ++ } catch (err) { ++ console.warn('config.json file not found'); ++ return {}; ++ } ++} ++ + const isPresent = (s: string) => /\S+/.test(s); + const toNumber = Number; + const toBoolean = (s: string) => s.toLowerCase() === 'true'; + const toStringArray = (s: string) => s.split(','); + +-function applyEnvOverrides(config: ConfigType): ConfigType { ++function applyEnvOverrides(config_base: ConfigType): ConfigType { ++ let config = _.cloneDeep(config_base) + const envVarConfigSetter: { [envVar: string]: (val: string) => void } = { + PORT: val => (config.port = toNumber(val)), + LOG_LEVEL: val => (config.logLevel = val), +@@ -138,10 +149,45 @@ function applyEnvOverrides(config: ConfigType): ConfigType { + } + }); + ++ let updated = getUpdatedKeys(config_base, config); ++ console.log("[CTEST][SET-PARAM] " + updated.join(', ')); ++ + return config; + } + ++function getUpdatedKeys(obj1: any, obj2: any, prefix: string = ''): string[] { ++ let updatedKeys: string[] = []; ++ ++ for (let key in obj1) { ++ if (!obj2.hasOwnProperty(key)) continue; ++ ++ const fullKey = prefix ? `${prefix}.${key}` : key; ++ const val1 = obj1[key]; ++ const val2 = obj2[key]; ++ ++ if (typeof val1 === 'object' && val1 !== null && typeof val2 === 'object' && val2 !== null) { ++ if (Array.isArray(val1) && Array.isArray(val2)) { ++ if (!arrayEquals(val1, val2)) { ++ updatedKeys.push(fullKey); ++ } ++ } else { ++ updatedKeys = updatedKeys.concat(getUpdatedKeys(val1, val2, fullKey)); ++ } ++ } else if (val1 !== val2) { ++ updatedKeys.push(fullKey); ++ } ++ } ++ ++ return updatedKeys; ++} ++ ++function arrayEquals(a: any[], b: any[]): boolean { ++ return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index) => val === b[index]); ++} ++ + export function buildConfig(): ConfigType { +- const config = _.merge(defaultConfig(), configFromFile()); ++ const config_temp = _.merge(defaultConfig(), configFromFile()); ++ const config = _.merge(config_temp, copyOverrides()); ++ console.log("[CTEST][GET-PARAM] ####", JSON.stringify(config), "####"); + return applyEnvOverrides(config); +-} ++} +\ No newline at end of file \ No newline at end of file diff --git a/core/patch/superset/logging.patch b/core/patch/superset/logging.patch new file mode 100644 index 00000000..a9b2c9e6 --- /dev/null +++ b/core/patch/superset/logging.patch @@ -0,0 +1,12 @@ +diff --git a/superset-websocket/src/config.ts b/superset-websocket/src/config.ts +index 7c2504892..229a426a3 100644 +--- a/superset-websocket/src/config.ts ++++ b/superset-websocket/src/config.ts +@@ -143,5 +143,6 @@ function applyEnvOverrides(config: ConfigType): ConfigType { + + + export function buildConfig(): ConfigType { + const config = _.merge(defaultConfig(), configFromFile()); ++ console.log("[CTEST][GET-PARAM] ####", JSON.stringify(config), "####"); + return applyEnvOverrides(config); + } \ No newline at end of file diff --git a/core/run_ctest_javascript/README.md b/core/run_ctest_javascript/README.md new file mode 100644 index 00000000..fd3dbf24 --- /dev/null +++ b/core/run_ctest_javascript/README.md @@ -0,0 +1,20 @@ +# Running CTest + + +``` + python3 ctest_runner_json_override.py +``` + + +``` + : The name of the file to be moved and renamed. This is the source file that the script will operate on. + + + : The directory where the file will be moved to. If this directory does not exist, the script will create it. + + + : The path to the Jest test case file. This is used to specify which Jest test case to run. + + + : The specific name of the Jest test case to be executed. This allows the script to run a particular test case within a larger test suite. +``` \ No newline at end of file diff --git a/core/run_ctest_javascript/ctest_runner_json_override.py b/core/run_ctest_javascript/ctest_runner_json_override.py new file mode 100644 index 00000000..ecd77986 --- /dev/null +++ b/core/run_ctest_javascript/ctest_runner_json_override.py @@ -0,0 +1,47 @@ +import os +import shutil +import subprocess +import sys + + +def move_file(file_name, dest_dir): + new_file_name = "config.test.override.json" + if not os.path.isfile(file_name): + print("File does not exist.") + return + if not os.path.exists(dest_dir): + print("Destination directory does not exist, creating it.") + os.makedirs(dest_dir) + new_file_path = os.path.join(dest_dir, new_file_name) + shutil.move(file_name, new_file_path) + print(f"File {file_name} moved and renamed to {new_file_path}") + + +def run_jest_test(test_case_path, test_case_name): + print("Running the npx jest command with the specified test case") + try: + result = subprocess.run(['npx', 'jest', test_case_path, '-t', test_case_name], check=True) + if result.returncode == 0: + print("CTest PASS") + else: + print(f"CTest FAIL: {result.returncode}") + return result.returncode + except subprocess.CalledProcessError as e: + print(f"CTest FAIL: {e}") + return 1 + + +if __name__ == "__main__": + if len(sys.argv) != 5: + print("Usage: python3 ctest_runner_json_override.py ") + sys.exit(1) + + + file_name = sys.argv[1] + dest_dir = sys.argv[2] + test_case_path = sys.argv[3] + test_case_name = sys.argv[4] + + + move_file(file_name, dest_dir) + run_jest_test(test_case_path, test_case_name) \ No newline at end of file diff --git a/core/superset.sh b/core/superset.sh new file mode 100644 index 00000000..5e5897d5 --- /dev/null +++ b/core/superset.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ -z "$1" ] +then + echo "Please provide a version number as an argument." + exit 1 +fi + +VERSION=$1 + +REPO_URL="https://github.com/apache/superset.git" + +git clone $REPO_URL +cd superset +git checkout tags/$VERSION -b $VERSION-branch + +cd superset-websocket + +if ! command -v npm &> /dev/null +then + echo "npm could not be found. Please install it." + exit 1 +fi + +npm install + +cd .. \ No newline at end of file diff --git a/data/ctest_mapping/opensource-superset.json b/data/ctest_mapping/opensource-superset.json new file mode 100644 index 00000000..c86f4cce --- /dev/null +++ b/data/ctest_mapping/opensource-superset.json @@ -0,0 +1,922 @@ +{ + "port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logLevel": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logToFile": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "logFilename": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamPrefix": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamReadCount": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redisStreamReadBlockMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtAlgorithms.0": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtSecret": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtCookieName": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "jwtChannelIdKey": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "socketResponseTimeoutMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "pingSocketsIntervalMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "gcChannelsIntervalMs": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "statsd.host": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "statsd.port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.host": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.port": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.password": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.username": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.db": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.ssl": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ], + "redis.validateHostname": [ + "index.test.ts: it_builds_a_valid_Redis_URL_with_a_password", + "config.test.ts: should_correctly_apply_partial_configuration_overrides", + "index.test.ts: it_increments_a_valid_Redis_stream_ID", + "config.test.ts: should_perform_deep_merge_between_configs", + "index.test.ts: sends_data_to_channel", + "index.test.ts: stale_sockets", + "index.test.ts: success_with_results", + "index.test.ts: error", + "config.test.ts: buildConfig_performs_deep_merge_between_configs", + "index.test.ts: closing_sockets", + "index.test.ts: multiple_sockets", + "index.test.ts: services_health_checks", + "config.test.ts: should_override_Redis_config_with_environment_variables", + "index.test.ts: success_no_results", + "index.test.ts: invalid_JWT", + "config.test.ts: should_override_StatsD_config_with_environment_variables", + "index.test.ts: no_sockets", + "config.test.ts: should_provide_consistent_configuration_on_multiple_calls", + "config.test.ts: should_use_default_values_for_missing_environment_variables", + "index.test.ts: active_sockets", + "index.test.ts: valid_JWT,_with_lastId_and_lastFirehoseId", + "config.test.ts: should_override_JWT_config_with_environment_variables", + "index.test.ts: error_sending_data_to_client", + "index.test.ts: it_builds_a_valid_Redis_URL_with_SSL", + "index.test.ts: it_builds_a_valid_Redis_URL_from_defaults", + "index.test.ts: responds_with_a_404_when_not_found", + "config.test.ts: should_clean_up_environment_variables_after_use", + "index.test.ts: valid_upgrade", + "config.test.ts: should_build_default_configuration", + "index.test.ts: it_handles_an_invalid_Redis_stream_ID", + "index.test.ts: valid_JWT,_with_lastId", + "index.test.ts: valid_JWT,_no_channel", + "config.test.ts: should_handle_invalid_environment_variable_values", + "index.test.ts: valid_JWT,_no_lastId", + "index.test.ts: channel_not_present", + "config.test.ts: buildConfig_builds_configuration_and_applies_env_var_overrides", + "index.test.ts: closed_sockets", + "index.test.ts: invalid_channel" + ] +} \ No newline at end of file