redis-benchmarks-specification 0.1.282__py3-none-any.whl → 0.1.284__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.
Potentially problematic release.
This version of redis-benchmarks-specification might be problematic. Click here for more details.
- redis_benchmarks_specification/__runner__/remote_profiling.py +151 -0
- redis_benchmarks_specification/__runner__/runner.py +54 -0
- {redis_benchmarks_specification-0.1.282.dist-info → redis_benchmarks_specification-0.1.284.dist-info}/METADATA +1 -1
- {redis_benchmarks_specification-0.1.282.dist-info → redis_benchmarks_specification-0.1.284.dist-info}/RECORD +7 -7
- {redis_benchmarks_specification-0.1.282.dist-info → redis_benchmarks_specification-0.1.284.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.282.dist-info → redis_benchmarks_specification-0.1.284.dist-info}/WHEEL +0 -0
- {redis_benchmarks_specification-0.1.282.dist-info → redis_benchmarks_specification-0.1.284.dist-info}/entry_points.txt +0 -0
|
@@ -81,6 +81,157 @@ def extract_redis_metadata(redis_conn) -> Dict[str, Any]:
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
|
|
84
|
+
def extract_server_info_for_args(redis_conn) -> Dict[str, str]:
|
|
85
|
+
"""
|
|
86
|
+
Extract server information from Redis INFO SERVER to auto-detect
|
|
87
|
+
github_org, github_repo, and github_version when not explicitly provided.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
redis_conn: Redis connection object
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
Dictionary containing detected server information:
|
|
94
|
+
- github_org: Detected organization (e.g., 'redis', 'valkey-io')
|
|
95
|
+
- github_repo: Detected repository (e.g., 'redis', 'valkey')
|
|
96
|
+
- github_version: Detected version
|
|
97
|
+
- server_name: Server name from INFO
|
|
98
|
+
"""
|
|
99
|
+
try:
|
|
100
|
+
server_info = redis_conn.info("server")
|
|
101
|
+
|
|
102
|
+
# Extract server name and version info
|
|
103
|
+
server_name = server_info.get("server_name", "").lower()
|
|
104
|
+
redis_version = server_info.get("redis_version", "unknown")
|
|
105
|
+
|
|
106
|
+
# Default values
|
|
107
|
+
github_org = "redis"
|
|
108
|
+
github_repo = "redis"
|
|
109
|
+
github_version = redis_version
|
|
110
|
+
|
|
111
|
+
# Check for Valkey
|
|
112
|
+
if "valkey" in server_name:
|
|
113
|
+
github_org = "valkey-io"
|
|
114
|
+
github_repo = "valkey"
|
|
115
|
+
# Use valkey_version if available, fallback to redis_version
|
|
116
|
+
valkey_version = server_info.get("valkey_version")
|
|
117
|
+
if valkey_version:
|
|
118
|
+
github_version = valkey_version
|
|
119
|
+
|
|
120
|
+
logging.info(
|
|
121
|
+
f"Auto-detected server info: org={github_org}, repo={github_repo}, "
|
|
122
|
+
f"version={github_version}, server_name={server_name}"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
return {
|
|
126
|
+
"github_org": github_org,
|
|
127
|
+
"github_repo": github_repo,
|
|
128
|
+
"github_version": github_version,
|
|
129
|
+
"server_name": server_name,
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
except Exception as e:
|
|
133
|
+
logging.error(f"Failed to extract server info: {e}")
|
|
134
|
+
return {
|
|
135
|
+
"github_org": "redis",
|
|
136
|
+
"github_repo": "redis",
|
|
137
|
+
"github_version": "unknown",
|
|
138
|
+
"server_name": "unknown",
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def extract_server_metadata_for_timeseries(redis_conn) -> Dict[str, str]:
|
|
143
|
+
"""
|
|
144
|
+
Extract comprehensive server metadata from Redis INFO SERVER for use as
|
|
145
|
+
timeseries metadata tags.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
redis_conn: Redis connection object
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
Dictionary containing server metadata for timeseries tags:
|
|
152
|
+
- os: Operating system information
|
|
153
|
+
- arch_bits: Architecture bits (32/64)
|
|
154
|
+
- gcc_version: GCC compiler version
|
|
155
|
+
- server_mode: Server mode (standalone/cluster/sentinel)
|
|
156
|
+
- multiplexing_api: Multiplexing API used (epoll/kqueue/etc)
|
|
157
|
+
- atomicvar_api: Atomic variable API
|
|
158
|
+
- redis_build_id: Build ID
|
|
159
|
+
- redis_git_dirty: Git dirty flag
|
|
160
|
+
- process_supervised: Process supervision status
|
|
161
|
+
- availability_zone: Availability zone (if available)
|
|
162
|
+
- And other interesting metadata fields
|
|
163
|
+
"""
|
|
164
|
+
try:
|
|
165
|
+
server_info = redis_conn.info("server")
|
|
166
|
+
|
|
167
|
+
# Extract interesting metadata fields for timeseries tags
|
|
168
|
+
metadata = {}
|
|
169
|
+
|
|
170
|
+
# Core system information
|
|
171
|
+
if "os" in server_info:
|
|
172
|
+
metadata["os"] = str(server_info["os"])
|
|
173
|
+
if "arch_bits" in server_info:
|
|
174
|
+
metadata["arch_bits"] = str(server_info["arch_bits"])
|
|
175
|
+
if "gcc_version" in server_info:
|
|
176
|
+
metadata["gcc_version"] = str(server_info["gcc_version"])
|
|
177
|
+
|
|
178
|
+
# Server configuration
|
|
179
|
+
if "server_mode" in server_info:
|
|
180
|
+
metadata["server_mode"] = str(server_info["server_mode"])
|
|
181
|
+
elif "redis_mode" in server_info: # Fallback for older versions
|
|
182
|
+
metadata["server_mode"] = str(server_info["redis_mode"])
|
|
183
|
+
|
|
184
|
+
# Performance-related APIs
|
|
185
|
+
if "multiplexing_api" in server_info:
|
|
186
|
+
metadata["multiplexing_api"] = str(server_info["multiplexing_api"])
|
|
187
|
+
if "atomicvar_api" in server_info:
|
|
188
|
+
metadata["atomicvar_api"] = str(server_info["atomicvar_api"])
|
|
189
|
+
if "monotonic_clock" in server_info:
|
|
190
|
+
metadata["monotonic_clock"] = str(server_info["monotonic_clock"])
|
|
191
|
+
|
|
192
|
+
# Build information
|
|
193
|
+
if "redis_build_id" in server_info:
|
|
194
|
+
metadata["redis_build_id"] = str(server_info["redis_build_id"])
|
|
195
|
+
if "redis_git_dirty" in server_info:
|
|
196
|
+
metadata["redis_git_dirty"] = str(server_info["redis_git_dirty"])
|
|
197
|
+
|
|
198
|
+
# Process information
|
|
199
|
+
if "process_supervised" in server_info:
|
|
200
|
+
metadata["process_supervised"] = str(server_info["process_supervised"])
|
|
201
|
+
|
|
202
|
+
# Cloud/deployment information
|
|
203
|
+
if "availability_zone" in server_info and server_info["availability_zone"]:
|
|
204
|
+
metadata["availability_zone"] = str(server_info["availability_zone"])
|
|
205
|
+
|
|
206
|
+
# IO threads (performance relevant)
|
|
207
|
+
if "io_threads_active" in server_info:
|
|
208
|
+
metadata["io_threads_active"] = str(server_info["io_threads_active"])
|
|
209
|
+
|
|
210
|
+
# Server name and version info
|
|
211
|
+
if "server_name" in server_info and server_info["server_name"]:
|
|
212
|
+
metadata["server_name"] = str(server_info["server_name"])
|
|
213
|
+
if "redis_version" in server_info:
|
|
214
|
+
metadata["redis_version"] = str(server_info["redis_version"])
|
|
215
|
+
if "valkey_version" in server_info:
|
|
216
|
+
metadata["valkey_version"] = str(server_info["valkey_version"])
|
|
217
|
+
if "valkey_release_stage" in server_info:
|
|
218
|
+
metadata["valkey_release_stage"] = str(server_info["valkey_release_stage"])
|
|
219
|
+
|
|
220
|
+
# Configuration file info
|
|
221
|
+
if "config_file" in server_info and server_info["config_file"]:
|
|
222
|
+
metadata["config_file"] = str(server_info["config_file"])
|
|
223
|
+
else:
|
|
224
|
+
metadata["config_file"] = "none"
|
|
225
|
+
|
|
226
|
+
logging.info(f"Extracted {len(metadata)} server metadata fields for timeseries: {list(metadata.keys())}")
|
|
227
|
+
|
|
228
|
+
return metadata
|
|
229
|
+
|
|
230
|
+
except Exception as e:
|
|
231
|
+
logging.error(f"Failed to extract server metadata: {e}")
|
|
232
|
+
return {}
|
|
233
|
+
|
|
234
|
+
|
|
84
235
|
def calculate_profile_duration(benchmark_duration_seconds: int) -> int:
|
|
85
236
|
"""
|
|
86
237
|
Calculate profiling duration based on benchmark duration.
|
|
@@ -1125,6 +1125,7 @@ def process_self_contained_coordinator_stream(
|
|
|
1125
1125
|
current_cpu_pos = args.cpuset_start_pos
|
|
1126
1126
|
temporary_dir_client = tempfile.mkdtemp(dir=home)
|
|
1127
1127
|
|
|
1128
|
+
# These will be updated after auto-detection
|
|
1128
1129
|
tf_github_org = args.github_org
|
|
1129
1130
|
tf_github_repo = args.github_repo
|
|
1130
1131
|
tf_triggering_env = args.platform_name
|
|
@@ -1157,6 +1158,56 @@ def process_self_contained_coordinator_stream(
|
|
|
1157
1158
|
)
|
|
1158
1159
|
setup_name = "oss-standalone"
|
|
1159
1160
|
r.ping()
|
|
1161
|
+
|
|
1162
|
+
# Auto-detect server information if not explicitly provided
|
|
1163
|
+
from redis_benchmarks_specification.__runner__.remote_profiling import (
|
|
1164
|
+
extract_server_info_for_args,
|
|
1165
|
+
extract_server_metadata_for_timeseries
|
|
1166
|
+
)
|
|
1167
|
+
|
|
1168
|
+
detected_info = extract_server_info_for_args(r)
|
|
1169
|
+
server_metadata = extract_server_metadata_for_timeseries(r)
|
|
1170
|
+
|
|
1171
|
+
# Use detected values if arguments weren't explicitly provided
|
|
1172
|
+
github_org = args.github_org
|
|
1173
|
+
github_repo = args.github_repo
|
|
1174
|
+
|
|
1175
|
+
# Auto-detect github_org if it's the default value
|
|
1176
|
+
if args.github_org == "redis" and detected_info["github_org"] != "redis":
|
|
1177
|
+
github_org = detected_info["github_org"]
|
|
1178
|
+
logging.info(f"Auto-detected github_org: {github_org}")
|
|
1179
|
+
|
|
1180
|
+
# Auto-detect github_repo if it's the default value
|
|
1181
|
+
if args.github_repo == "redis" and detected_info["github_repo"] != "redis":
|
|
1182
|
+
github_repo = detected_info["github_repo"]
|
|
1183
|
+
logging.info(f"Auto-detected github_repo: {github_repo}")
|
|
1184
|
+
|
|
1185
|
+
# Auto-detect version if it's the default value
|
|
1186
|
+
if args.github_version == "NA" and detected_info["github_version"] != "unknown":
|
|
1187
|
+
git_version = detected_info["github_version"]
|
|
1188
|
+
logging.info(f"Auto-detected github_version: {git_version}")
|
|
1189
|
+
|
|
1190
|
+
# Auto-detect git hash from server info if available
|
|
1191
|
+
if git_hash == "NA":
|
|
1192
|
+
try:
|
|
1193
|
+
server_info = r.info("server")
|
|
1194
|
+
redis_git_sha1 = server_info.get("redis_git_sha1", "")
|
|
1195
|
+
redis_build_id = server_info.get("redis_build_id", "")
|
|
1196
|
+
|
|
1197
|
+
# Use git_sha1 if available and not empty/zero
|
|
1198
|
+
if redis_git_sha1 and redis_git_sha1 not in ("", "0", "00000000"):
|
|
1199
|
+
git_hash = redis_git_sha1
|
|
1200
|
+
logging.info(f"Auto-detected git_hash from redis_git_sha1: {git_hash}")
|
|
1201
|
+
# Fallback to build_id if git_sha1 is not available
|
|
1202
|
+
elif redis_build_id and redis_build_id not in ("", "0"):
|
|
1203
|
+
git_hash = redis_build_id
|
|
1204
|
+
logging.info(f"Auto-detected git_hash from redis_build_id: {git_hash}")
|
|
1205
|
+
except Exception as e:
|
|
1206
|
+
logging.warning(f"Failed to auto-detect git hash: {e}")
|
|
1207
|
+
|
|
1208
|
+
# Update tf_github_org and tf_github_repo with detected values
|
|
1209
|
+
tf_github_org = github_org
|
|
1210
|
+
tf_github_repo = github_repo
|
|
1160
1211
|
redis_conns = [r]
|
|
1161
1212
|
if oss_cluster_api_enabled:
|
|
1162
1213
|
redis_conns = []
|
|
@@ -1271,6 +1322,8 @@ def process_self_contained_coordinator_stream(
|
|
|
1271
1322
|
benchmark_tool_workdir = client_mnt_point
|
|
1272
1323
|
|
|
1273
1324
|
metadata = {}
|
|
1325
|
+
# Add server metadata from Redis INFO SERVER
|
|
1326
|
+
metadata.update(server_metadata)
|
|
1274
1327
|
test_tls_cacert = None
|
|
1275
1328
|
test_tls_cert = None
|
|
1276
1329
|
test_tls_key = None
|
|
@@ -1979,6 +2032,7 @@ def process_self_contained_coordinator_stream(
|
|
|
1979
2032
|
tf_triggering_env,
|
|
1980
2033
|
topology_spec_name,
|
|
1981
2034
|
default_metrics,
|
|
2035
|
+
git_hash,
|
|
1982
2036
|
)
|
|
1983
2037
|
test_result = True
|
|
1984
2038
|
total_test_suite_runs = total_test_suite_runs + 1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redis-benchmarks-specification
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.284
|
|
4
4
|
Summary: The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute.
|
|
5
5
|
Author: filipecosta90
|
|
6
6
|
Author-email: filipecosta.90@gmail.com
|
|
@@ -24,8 +24,8 @@ redis_benchmarks_specification/__compare__/compare.py,sha256=8mtvlwQRYR4c4oOji2q
|
|
|
24
24
|
redis_benchmarks_specification/__init__.py,sha256=YQIEx2sLPPA0JR9OuCuMNMNtm-f_gqDKgzvNJnkGNKY,491
|
|
25
25
|
redis_benchmarks_specification/__runner__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
|
|
26
26
|
redis_benchmarks_specification/__runner__/args.py,sha256=4NaHTfT3FB0wGrYslWb_DKHGf9Za963TjXKk648cjqw,9679
|
|
27
|
-
redis_benchmarks_specification/__runner__/remote_profiling.py,sha256=
|
|
28
|
-
redis_benchmarks_specification/__runner__/runner.py,sha256=
|
|
27
|
+
redis_benchmarks_specification/__runner__/remote_profiling.py,sha256=DNl4Wx4wHHcbmKrXFrS51gLVVBY-hftUB8awb_p9kY4,17887
|
|
28
|
+
redis_benchmarks_specification/__runner__/runner.py,sha256=tX59OElteutpg5-phvoK4aLFS-oPVa9GXb8IYWrQQyk,105398
|
|
29
29
|
redis_benchmarks_specification/__self_contained_coordinator__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
|
|
30
30
|
redis_benchmarks_specification/__self_contained_coordinator__/args.py,sha256=uxBjdQ78klvsVi6lOfGYQVaWIxc8OI-DwYKY16SgvCY,5952
|
|
31
31
|
redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py,sha256=OVHqJzDgeSSRfUSiKp1ZTAVv14PvSbk-5yJsAAoUfpw,936
|
|
@@ -273,8 +273,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publi
|
|
|
273
273
|
redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml,sha256=rJuWWXubUeRKQ2GSfHlbPMLeOyM9Eu_MzvN2vgKcAhA,672
|
|
274
274
|
redis_benchmarks_specification/test-suites/template.txt,sha256=d_edIE7Sxa5X7I2yG-Io0bPdbDIHR0oWFoCA3XUt_EU,435
|
|
275
275
|
redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=uhaSP6YUVmPvZU-qMtPPGdvNEUgUBqOfveUbeJ9WsbI,972
|
|
276
|
-
redis_benchmarks_specification-0.1.
|
|
277
|
-
redis_benchmarks_specification-0.1.
|
|
278
|
-
redis_benchmarks_specification-0.1.
|
|
279
|
-
redis_benchmarks_specification-0.1.
|
|
280
|
-
redis_benchmarks_specification-0.1.
|
|
276
|
+
redis_benchmarks_specification-0.1.284.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
277
|
+
redis_benchmarks_specification-0.1.284.dist-info/METADATA,sha256=Z0QcsA6m4m3Ox2PjyVN7LmN9LvvqJVpqJ9jhQ7-rcec,22726
|
|
278
|
+
redis_benchmarks_specification-0.1.284.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
279
|
+
redis_benchmarks_specification-0.1.284.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
|
|
280
|
+
redis_benchmarks_specification-0.1.284.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|