redisbench-admin 0.11.38__py3-none-any.whl → 0.11.40__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,139 @@ from redisbench_admin.utils.ssh import SSHSession
15
15
  from redisbench_admin.utils.utils import redis_server_config_module_part
16
16
 
17
17
 
18
+ def ensure_redis_server_available(server_public_ip, username, private_key, port=22):
19
+ """Check if redis-server is available, install if not"""
20
+ logging.info("Checking if redis-server is available on remote server...")
21
+
22
+ # Check if redis-server exists
23
+ check_result = execute_remote_commands(
24
+ server_public_ip, username, private_key, ["which redis-server"], port
25
+ )
26
+
27
+ # Check the result
28
+ if len(check_result) > 0:
29
+ [recv_exit_status, stdout, stderr] = check_result[0]
30
+ if recv_exit_status != 0:
31
+ logging.info("redis-server not found, installing Redis...")
32
+
33
+ # Install Redis using the provided commands
34
+ install_commands = [
35
+ "sudo apt-get install lsb-release curl gpg -y",
36
+ "curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg",
37
+ "sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg",
38
+ 'echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list',
39
+ "sudo apt-get update",
40
+ "sudo apt-get install redis -y",
41
+ "sudo systemctl disable redis-server",
42
+ ]
43
+
44
+ install_result = execute_remote_commands(
45
+ server_public_ip, username, private_key, install_commands, port
46
+ )
47
+
48
+ # Check if installation was successful
49
+ for pos, res_pos in enumerate(install_result):
50
+ [recv_exit_status, stdout, stderr] = res_pos
51
+ if recv_exit_status != 0:
52
+ logging.warning(
53
+ "Redis installation command {} returned exit code {}. stdout: {}. stderr: {}".format(
54
+ pos, recv_exit_status, stdout, stderr
55
+ )
56
+ )
57
+
58
+ logging.info("Redis installation completed and auto-start disabled")
59
+ else:
60
+ logging.info("redis-server is already available")
61
+ else:
62
+ logging.error("Failed to check redis-server availability")
63
+
64
+
65
+ def ensure_zip_available(server_public_ip, username, private_key, port=22):
66
+ """Check if zip is available, install if not"""
67
+ logging.info("Checking if zip is available on remote server...")
68
+
69
+ # Check if zip exists
70
+ check_result = execute_remote_commands(
71
+ server_public_ip, username, private_key, ["which zip"], port
72
+ )
73
+
74
+ # Check the result
75
+ if len(check_result) > 0:
76
+ [recv_exit_status, stdout, stderr] = check_result[0]
77
+ if recv_exit_status != 0:
78
+ logging.info("zip not found, installing...")
79
+
80
+ # Install zip
81
+ install_commands = ["sudo apt-get install zip -y"]
82
+
83
+ install_result = execute_remote_commands(
84
+ server_public_ip, username, private_key, install_commands, port
85
+ )
86
+
87
+ # Check if installation was successful
88
+ for pos, res_pos in enumerate(install_result):
89
+ [recv_exit_status, stdout, stderr] = res_pos
90
+ if recv_exit_status != 0:
91
+ logging.warning(
92
+ "Zip installation command {} returned exit code {}. stdout: {}. stderr: {}".format(
93
+ pos, recv_exit_status, stdout, stderr
94
+ )
95
+ )
96
+
97
+ logging.info("Zip installation completed")
98
+ else:
99
+ logging.info("zip is already available")
100
+ else:
101
+ logging.error("Failed to check zip availability")
102
+
103
+
104
+ def ensure_memtier_benchmark_available(
105
+ client_public_ip, username, private_key, port=22
106
+ ):
107
+ """Check if memtier_benchmark is available, install if not"""
108
+ logging.info("Checking if memtier_benchmark is available on remote client...")
109
+
110
+ # Check if memtier_benchmark exists
111
+ check_result = execute_remote_commands(
112
+ client_public_ip, username, private_key, ["which memtier_benchmark"], port
113
+ )
114
+
115
+ # Check the result
116
+ if len(check_result) > 0:
117
+ [recv_exit_status, stdout, stderr] = check_result[0]
118
+ if recv_exit_status != 0:
119
+ logging.info("memtier_benchmark not found, installing...")
120
+
121
+ # Install memtier_benchmark using the provided commands
122
+ install_commands = [
123
+ "sudo apt install lsb-release curl gpg -y",
124
+ "curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg",
125
+ 'echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list',
126
+ "sudo apt-get update",
127
+ "sudo apt-get install memtier-benchmark -y",
128
+ ]
129
+
130
+ install_result = execute_remote_commands(
131
+ client_public_ip, username, private_key, install_commands, port
132
+ )
133
+
134
+ # Check if installation was successful
135
+ for pos, res_pos in enumerate(install_result):
136
+ [recv_exit_status, stdout, stderr] = res_pos
137
+ if recv_exit_status != 0:
138
+ logging.warning(
139
+ "memtier_benchmark installation command {} returned exit code {}. stdout: {}. stderr: {}".format(
140
+ pos, recv_exit_status, stdout, stderr
141
+ )
142
+ )
143
+
144
+ logging.info("memtier_benchmark installation completed")
145
+ else:
146
+ logging.info("memtier_benchmark is already available")
147
+ else:
148
+ logging.error("Failed to check memtier_benchmark availability")
149
+
150
+
18
151
  def spin_up_standalone_remote_redis(
19
152
  temporary_dir,
20
153
  server_public_ip,
@@ -27,6 +160,9 @@ def spin_up_standalone_remote_redis(
27
160
  modules_configuration_parameters_map={},
28
161
  redis_7=True,
29
162
  ):
163
+ # Ensure redis-server is available before trying to start it
164
+ ensure_redis_server_available(server_public_ip, username, private_key, port)
165
+
30
166
  full_logfile, initial_redis_cmd = generate_remote_standalone_redis_cmd(
31
167
  logfile,
32
168
  redis_configuration_parameters,
@@ -1189,3 +1189,31 @@ def check_ec2_env():
1189
1189
  logging.error(error_message)
1190
1190
 
1191
1191
  return status, error_message
1192
+
1193
+
1194
+ def perform_connectivity_test(redis_conns, test_description=""):
1195
+ """Perform PING test on all Redis connections"""
1196
+ logging.info(f"🔍 Performing connectivity test: {test_description}")
1197
+
1198
+ success_count = 0
1199
+ total_count = len(redis_conns)
1200
+
1201
+ for i, conn in enumerate(redis_conns):
1202
+ try:
1203
+ result = conn.ping()
1204
+ if result:
1205
+ logging.info(f"✅ Connection {i}: PING successful")
1206
+ success_count += 1
1207
+ else:
1208
+ logging.error(f"❌ Connection {i}: PING returned False")
1209
+ except Exception as e:
1210
+ logging.error(f"❌ Connection {i}: PING failed - {e}")
1211
+
1212
+ if success_count == total_count:
1213
+ logging.info(f"🎉 All {total_count} connectivity tests passed!")
1214
+ return True
1215
+ else:
1216
+ logging.error(
1217
+ f"💥 {total_count - success_count}/{total_count} connectivity tests failed!"
1218
+ )
1219
+ return False
@@ -128,33 +128,51 @@ def upload_artifacts_to_s3(
128
128
  if region_name is None:
129
129
  region_name = EC2_REGION
130
130
  logging.info("-- uploading results to s3 -- ")
131
- if aws_access_key_id is not None and aws_secret_access_key is not None:
132
- logging.info("-- Using REQUEST PROVIDED AWS credentials -- ")
133
- session = boto3.Session(
134
- aws_access_key_id, aws_secret_access_key, aws_session_token, region_name
135
- )
136
- s3 = session.resource("s3")
137
- else:
138
- logging.info("-- Using default AWS credentials -- ")
139
- s3 = boto3.resource("s3")
140
- bucket = s3.Bucket(s3_bucket_name)
141
- progress = tqdm(unit="files", total=len(artifacts))
142
131
 
143
- for full_artifact_path in artifacts:
144
- artifact = os.path.basename(full_artifact_path)
145
- object_key = "{bucket_path}{filename}".format(
146
- bucket_path=s3_bucket_path, filename=artifact
147
- )
132
+ try:
133
+ if aws_access_key_id is not None and aws_secret_access_key is not None:
134
+ logging.info("-- Using REQUEST PROVIDED AWS credentials -- ")
135
+ session = boto3.Session(
136
+ aws_access_key_id, aws_secret_access_key, aws_session_token, region_name
137
+ )
138
+ s3 = session.resource("s3")
139
+ else:
140
+ logging.info("-- Using default AWS credentials -- ")
141
+ s3 = boto3.resource("s3")
142
+ bucket = s3.Bucket(s3_bucket_name)
143
+ progress = tqdm(unit="files", total=len(artifacts))
144
+
145
+ for full_artifact_path in artifacts:
146
+ try:
147
+ artifact = os.path.basename(full_artifact_path)
148
+ object_key = "{bucket_path}{filename}".format(
149
+ bucket_path=s3_bucket_path, filename=artifact
150
+ )
148
151
 
149
- bucket.upload_file(full_artifact_path, object_key)
150
- object_acl = s3.ObjectAcl(s3_bucket_name, object_key)
151
- object_acl.put(ACL="public-read")
152
- progress.update()
153
- url = "https://s3.{0}.amazonaws.com/{1}/{2}{3}".format(
154
- region_name, s3_bucket_name, s3_bucket_path, quote_plus(artifact)
152
+ bucket.upload_file(full_artifact_path, object_key)
153
+ object_acl = s3.ObjectAcl(s3_bucket_name, object_key)
154
+ object_acl.put(ACL="public-read")
155
+ progress.update()
156
+ url = "https://s3.{0}.amazonaws.com/{1}/{2}{3}".format(
157
+ region_name, s3_bucket_name, s3_bucket_path, quote_plus(artifact)
158
+ )
159
+ artifacts_map[artifact] = url
160
+ logging.info("Successfully uploaded {} to S3".format(artifact))
161
+ except Exception as e:
162
+ logging.warning(
163
+ "Failed to upload artifact {} to S3: {}. Skipping this file.".format(
164
+ full_artifact_path, e
165
+ )
166
+ )
167
+ progress.update()
168
+ progress.close()
169
+ except Exception as e:
170
+ logging.error(
171
+ "Failed to initialize S3 connection: {}. No files will be uploaded.".format(
172
+ e
173
+ )
155
174
  )
156
- artifacts_map[artifact] = url
157
- progress.close()
175
+
158
176
  return artifacts_map
159
177
 
160
178
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redisbench-admin
3
- Version: 0.11.38
3
+ Version: 0.11.40
4
4
  Summary: Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... ).
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
@@ -154,7 +154,13 @@ $ tox
154
154
 
155
155
  To run a specific test:
156
156
  ```sh
157
- $ tox -- tests/test_redistimeseries.py
157
+ $ tox -- tests/test_defaults_purpose_built_env.py
158
+ ```
159
+
160
+ To run a specific test and persist the docker container used for timeseries:
161
+
162
+ ```
163
+ tox --docker-dont-stop=rts_datasink -- -vv --log-cli-level=INFO tests/test_defaults_purpose_built_env.py
158
164
  ```
159
165
 
160
166
  To run a specific test with verbose logging:
@@ -3,13 +3,13 @@ redisbench_admin/cli.py,sha256=LAS5qnqScXKhxHYfXWB0mvAYaUYrSurIwadhexEa9g4,7740
3
3
  redisbench_admin/commands/__init__.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGKm1-_YzeY,95
4
4
  redisbench_admin/commands/commands.json.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGKm1-_YzeY,95
5
5
  redisbench_admin/compare/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
6
- redisbench_admin/compare/args.py,sha256=CYMOIogW7WFcs7gEwBfi88vSSSAdVq8sr-tAJ9ngfGk,6256
7
- redisbench_admin/compare/compare.py,sha256=tNFBXbb3YCmz7qR_wAkQR49oee9EYQFCPvb8bN2onYA,39797
6
+ redisbench_admin/compare/args.py,sha256=qyOgo0CBE3NdDRTa5dqgNV_0eZJ0jkGBliGTasHuWls,6256
7
+ redisbench_admin/compare/compare.py,sha256=ZE6j5T8SIiyW6mpUCkVWRvo5xT4Tkf-SnOnYSSQ9zt4,103382
8
8
  redisbench_admin/deploy/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
9
9
  redisbench_admin/deploy/args.py,sha256=neLUcQqI__HkJItkQg2C293hl5g3yHG40t171r7-E5Y,1732
10
10
  redisbench_admin/deploy/deploy.py,sha256=MtfJbsL97DLrbBYut6zRCzyEMebX4xWoZE-m4-JDRB8,3885
11
11
  redisbench_admin/environments/__init__.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdUHP20,95
12
- redisbench_admin/environments/oss_cluster.py,sha256=lUOG6oN8VXAnDXFK7Xns-ag-hSOSxxxL8jZ4Mh03hQY,6681
12
+ redisbench_admin/environments/oss_cluster.py,sha256=yYOvDRcEJxG9dkzd-lvaKTrt71MNeMdAV0G6TjHxsX8,8142
13
13
  redisbench_admin/environments/oss_standalone.py,sha256=Sl38rUpwJ3wNOl9zn38iK8q2iJi2pRFmaJAZJbuT_SQ,2474
14
14
  redisbench_admin/export/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
15
15
  redisbench_admin/export/args.py,sha256=v_WjJCNz_LeIFMNwSN6XwRmvSx1K2ys8XS1gK50EM_4,3508
@@ -175,7 +175,7 @@ redisbench_admin/run/ann/pkg/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
175
175
  redisbench_admin/run/ann/pkg/test/test-jaccard.py,sha256=oIhaQCQKrQokwv3fvgLSwPlRwkY0MNppG9Fc08oS3ZI,462
176
176
  redisbench_admin/run/ann/pkg/test/test-metrics.py,sha256=vJdS8Kuk8bAnpB65Uqb-9rUUI35XrHwaO3cNwKX5gxc,3057
177
177
  redisbench_admin/run/args.py,sha256=tevHZrezJ4RreHp6K-MGHko3e1Gi_IdsS2Q0jD2ZSoU,8173
178
- redisbench_admin/run/cluster.py,sha256=QuptSW-IhdyFIoQ3hzY613jtQWxBrVIlgc8OarcEK20,6072
178
+ redisbench_admin/run/cluster.py,sha256=_Y6a8Dbu1cJ7OxhgymKQSZcCmV8cZ3UpGEWL6b6O84Y,6363
179
179
  redisbench_admin/run/common.py,sha256=5TAxmHbUti7S3nzPzn7f-L4ls6gpStU2C4yvkiii7m4,28410
180
180
  redisbench_admin/run/ftsb/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
181
181
  redisbench_admin/run/ftsb/ftsb.py,sha256=NP-K_hCEagmX5ayN0pQVtOdQxDTwgxKrnzz9_MLT9qQ,2492
@@ -183,7 +183,7 @@ redisbench_admin/run/git.py,sha256=6UYGcTN0MPzf4QDVoJnFkou0yZasLF6jLG7f0zoySq8,3
183
183
  redisbench_admin/run/grafana.py,sha256=iMDgMyJKinpZMTD43rZ1IcRGkadjFjCxaB48mYWkvG4,9421
184
184
  redisbench_admin/run/memtier_benchmark/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
185
185
  redisbench_admin/run/memtier_benchmark/memtier_benchmark.py,sha256=wTd2olovvFBZ98mOSr6DM5BJsdaiuPteEZzBqeSgbkE,4246
186
- redisbench_admin/run/metrics.py,sha256=uOOwOC9vTC97y2hxSKwt_RJqxpkLJmSR3oOv_WWnS9o,7630
186
+ redisbench_admin/run/metrics.py,sha256=8EQdcZbCiFB_kIR1WtUQNOPV8y74bZ8Dj51Cv0aR4nk,7556
187
187
  redisbench_admin/run/modules.py,sha256=9To85oDw2tmUNmTDxOgvKls_46oZRcd2cCt6xNjIWiA,1691
188
188
  redisbench_admin/run/redis_benchmark/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
189
189
  redisbench_admin/run/redis_benchmark/redis_benchmark.py,sha256=e-Az2uTlt3z2W4uzlUsdxeT8GITpxpGb-Mjb6JxrSWc,6848
@@ -205,38 +205,38 @@ redisbench_admin/run_async/log.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdU
205
205
  redisbench_admin/run_async/render_files.py,sha256=NMagmx-2hsMET_XN8tkmQz55g-azqW7SjAqaq4GL8F0,2676
206
206
  redisbench_admin/run_async/run_async.py,sha256=g2ZOQqj9vXZYaRyNpJZtgfYyY9tMuRmEv3Hh3qWOUs8,14525
207
207
  redisbench_admin/run_local/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
208
- redisbench_admin/run_local/args.py,sha256=9Qr-IVQJ3TMqFkn9Jp597KjU2AGq3u0X5Eb82CWD7wk,1504
208
+ redisbench_admin/run_local/args.py,sha256=LPpqtx1cH1dkkeHjYlaFnAp_TijxnzPZFO2CmYD9ikU,1906
209
209
  redisbench_admin/run_local/local_client.py,sha256=gwawMDOBrf7m--uyxu8kMZC5LBiLjbUBSKvzVOdOAas,124
210
210
  redisbench_admin/run_local/local_db.py,sha256=9vINqKOs-wDMFEuEHT0I8KO9YnEo_h4NWNk5da3LwSY,7518
211
211
  redisbench_admin/run_local/local_helpers.py,sha256=JyqLW2-Sbm35BXjxxfOB1yK7ADdLfcVrq08NLNdIwac,7026
212
- redisbench_admin/run_local/run_local.py,sha256=U3C8UKH-DevcLE-TFtC2EHdpAV2xL5dZmGWU6cfbras,31184
212
+ redisbench_admin/run_local/run_local.py,sha256=QHnGfVAaVuct7t0WrWyQpbirC3MWX7fQF5-kXU_pJBs,34834
213
213
  redisbench_admin/run_remote/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
214
- redisbench_admin/run_remote/args.py,sha256=vhV87avBwXL8c2QLqrAkIyWD53MYhN06F-3wRv3l5xE,3829
214
+ redisbench_admin/run_remote/args.py,sha256=VnZ20gqpk-NMzNxaaUHgedgl3B6fZm3Fewj6cPZ1iCg,4231
215
215
  redisbench_admin/run_remote/consts.py,sha256=bCMkwyeBD-EmOpoHKni7LjWy5WuaxGJhGhqpi4AL0RQ,386
216
216
  redisbench_admin/run_remote/log.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdUHP20,95
217
217
  redisbench_admin/run_remote/notifications.py,sha256=-W9fLaftEFNfplBl2clHk37jbYxliDbHftQ62khN31k,2157
218
218
  redisbench_admin/run_remote/remote_client.py,sha256=rRmDro1weto01wzqYpId8NMPoizEzSyudXBCjYrBVMs,14128
219
- redisbench_admin/run_remote/remote_db.py,sha256=GTBBo2G0Iu_9Zlw8Ws7WK8JJgNLJaGtSy9sXvfePeTs,13121
219
+ redisbench_admin/run_remote/remote_db.py,sha256=EEDeiOZk-godr5EINscEkOJLGWUN3gFfH6RaBzAKbak,14566
220
220
  redisbench_admin/run_remote/remote_env.py,sha256=Ux_0QT1unNRlKl3cakzjG5Px1uuxOOfBoF_pnalx_T8,4936
221
221
  redisbench_admin/run_remote/remote_failures.py,sha256=IOo6DyxarcwwMPCeN4gWB2JrhuC9iBLwq0nCROqr5ak,1567
222
- redisbench_admin/run_remote/remote_helpers.py,sha256=ngNjPJP0EwANJFhOFmujF0eSE5Ga3O0WcVuDda9cS9E,9917
223
- redisbench_admin/run_remote/run_remote.py,sha256=A7wPc_K992JtkO4_l26UfYyfvzokD060WQvKbp8t_c0,69332
224
- redisbench_admin/run_remote/standalone.py,sha256=tbnKFs6wxmkRkDuxP3A420PPdb8YSmPymDlnoL2GeOQ,6745
222
+ redisbench_admin/run_remote/remote_helpers.py,sha256=skWeGyDJBmyx_UwUekT3N3_nOJvF2-Hvu-E7vKlO9gg,10598
223
+ redisbench_admin/run_remote/run_remote.py,sha256=_K7Bx9CWarf6UOUjt9CDKGJBqu-qgLjGYzPs80jOwnU,73789
224
+ redisbench_admin/run_remote/standalone.py,sha256=BT_3ojr6w84FZGwTkFxDLnSGMth24FyaoXedKLhf5h4,12629
225
225
  redisbench_admin/run_remote/terraform.py,sha256=vV3eWXNwj7vsnFNqUgCir5ueZS4VYopEyzWiTtoSq0Q,4018
226
226
  redisbench_admin/utils/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
227
227
  redisbench_admin/utils/benchmark_config.py,sha256=bC2C6rnj89wkkSlOXyyfe0N15unn_M1t1zfskfVkb98,21387
228
228
  redisbench_admin/utils/local.py,sha256=zUvyVI9LZMT3qyxs1pO3mXL6Bt_1z9EZUGppaRcWNRA,3890
229
229
  redisbench_admin/utils/redisearch.py,sha256=lchUEzpt0zB1rHwlDlw9LLifAnxFWcLP-PePw7TjL-0,1602
230
230
  redisbench_admin/utils/redisgraph_benchmark_go.py,sha256=os7EJt6kBxsFJLKkSoANbjMT7-cEq4-Ns-49alk2Tf8,2048
231
- redisbench_admin/utils/remote.py,sha256=xQuTbfEMNpHW38njaiuw2j1P4BPYsv-uCzfIVsKot0Q,40694
231
+ redisbench_admin/utils/remote.py,sha256=qlO49qdJh96rOEXnFMgFcpiwYjmrG0K060bEc3nyHD0,41643
232
232
  redisbench_admin/utils/results.py,sha256=uKk3uNJ--bSXlUj_HGQ2OaV6MVqmXJVM8xTzFV6EOw4,3267
233
233
  redisbench_admin/utils/ssh.py,sha256=QW4AwlocMHJt05QMdN_4f8WeDmxiEwR80ny8VBThq6k,6533
234
- redisbench_admin/utils/utils.py,sha256=YxuSPS6dtBw7T8e09678rUNNiCSkuFtVXNc05-qytbI,14370
234
+ redisbench_admin/utils/utils.py,sha256=XVSvo1_DdcYwk2jOxL3VPVPbnDnhGYt8ieYfANo6rTo,15085
235
235
  redisbench_admin/watchdog/__init__.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdUHP20,95
236
236
  redisbench_admin/watchdog/args.py,sha256=nKsG1G6ATOZlAMHMtT9u3kXxduKCbejSZ5x8oB_ynZ8,1312
237
237
  redisbench_admin/watchdog/watchdog.py,sha256=0wWYge3x_OMxWrzazNhJif2NK4tKsI963HVZqjczRag,6189
238
- redisbench_admin-0.11.38.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
- redisbench_admin-0.11.38.dist-info/METADATA,sha256=LHJ92Q7F48ZA7p8bujz4yqK4C4eGVnoR0s0eEB1E74M,5389
240
- redisbench_admin-0.11.38.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
241
- redisbench_admin-0.11.38.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
242
- redisbench_admin-0.11.38.dist-info/RECORD,,
238
+ redisbench_admin-0.11.40.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
+ redisbench_admin-0.11.40.dist-info/METADATA,sha256=olR0Y3plqHRTgl01WGkXOkyV5Iz_veIrpEG6vYaQksg,5596
240
+ redisbench_admin-0.11.40.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
241
+ redisbench_admin-0.11.40.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
242
+ redisbench_admin-0.11.40.dist-info/RECORD,,