redisbench-admin 0.11.50__tar.gz → 0.11.51__tar.gz
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.
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/PKG-INFO +1 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/pyproject.toml +1 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/cli.py +13 -6
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/compare/args.py +0 -20
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/compare/compare.py +23 -165
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/export.py +0 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/daemon.py +2 -2
- redisbench_admin-0.11.51/redisbench_admin/run/modules.py +50 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/benchmark.py +0 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/run_local.py +0 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/args.py +1 -1
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_db.py +0 -114
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/run_remote.py +1 -50
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/standalone.py +11 -139
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/benchmark_config.py +2 -74
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/remote.py +2 -40
- redisbench_admin-0.11.50/redisbench_admin/run/modules.py +0 -137
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/LICENSE +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/README.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/commands/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/commands/commands.json.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/compare/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/deploy/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/deploy/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/deploy/deploy.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/environments/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/environments/oss_cluster.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/environments/oss_standalone.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/common/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/common/common.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/google_benchmark/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/google_benchmark/google_benchmark_json_format.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/memtier_benchmark/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/memtier_benchmark/memtier_benchmark_json_format.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/pyperf/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/pyperf/pyperf_json_format.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/redis_benchmark/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/redis_benchmark/metrics_definition.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/export/redis_benchmark/redis_benchmark_csv_format.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/extract/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/extract/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/extract/extract.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/grafana_api/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/grafana_api/app.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/grafana_api/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/grafana_api/grafana_api.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/flamegraph.pl +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/perf.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/perf_daemon_caller.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/pprof.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/profilers.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/profilers_local.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/profilers_schema.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/stackcollapse-perf.pl +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/profilers/vtune.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/aibench_run_inference_redisai_vision/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/aibench_run_inference_redisai_vision/aibench_run_inference_redisai_vision.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/ann.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/.dockerignore +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/.git +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/.github/workflows/benchmarks.yml +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/.gitignore +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/LICENSE +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/README.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/algos.yaml +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/algosP.yaml +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/annoy.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/balltree.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/base.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/bruteforce.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/ckdtree.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/datasketch.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/definitions.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/diskann.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dolphinnpy.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dummy_algo.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elasticsearch.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elastiknn.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_gpu.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_hnsw.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/flann.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/hnswlib.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kdtree.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kgraph.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/lshf.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/milvus.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/mrpt.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/n2.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nearpy.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nmslib.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/onng_ngt.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/opensearchknn.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/panng_ngt.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pinecone.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/puffinn.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pynndescent.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/qg_ngt.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/redisearch.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/rpforest.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/scann.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/sptag.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/subprocess.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vald.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vecsim-hnsw.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vespa.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/constants.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/data.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/datasets.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/distance.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/main.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/metrics.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/plot_variants.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/utils.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/results.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/ann_benchmarks/runner.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/create_dataset.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/create_hybrid_dataset.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/create_text_to_image_ds.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/create_website.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.annoy +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.datasketch +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.diskann +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.diskann_pq +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.dolphinn +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.elasticsearch +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.elastiknn +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.faiss +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.flann +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.hnswlib +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.kgraph +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.mih +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.milvus +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.mrpt +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.n2 +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.nearpy +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.ngt +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.nmslib +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.opensearchknn +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.puffinn +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.pynndescent +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.redisearch +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.rpforest +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.scann +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.scipy +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.sklearn +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.sptag +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.vald +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install/Dockerfile.vespa +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/install.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/logging.conf +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/multirun.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/plot.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/bf-runner +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/bf-runner.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/ext-add-query-metric.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/ext-batch-queries.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/ext-prepared-queries.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/ext-query-parameters.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/protocol/specification.md +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/requirements.txt +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/requirements_py38.txt +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/fashion-mnist-784-euclidean.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/gist-960-euclidean.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/glove-100-angular.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/glove-25-angular.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/lastfm-64-dot.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/mnist-784-euclidean.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/nytimes-256-angular.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/results/sift-128-euclidean.png +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/run.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/run_algorithm.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/templates/chartjs.template +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/templates/detail_page.html +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/templates/general.html +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/templates/latex.template +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/templates/summary.html +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/test/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/test/test-jaccard.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ann/pkg/test/test-metrics.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/cluster.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/common.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ftsb/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ftsb/ftsb.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/git.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/grafana.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/memtier_benchmark/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/memtier_benchmark/memtier_benchmark.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/metrics.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/redis_benchmark/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/redis_benchmark/redis_benchmark.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/redisgraph_benchmark_go/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/redisgraph_benchmark_go/redisgraph_benchmark_go.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/redistimeseries.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/run.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/s3.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ssh.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/tsbs_run_queries_redistimeseries/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/tsbs_run_queries_redistimeseries/tsbs_run_queries_redistimeseries.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ycsb/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run/ycsb/ycsb.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/async_env.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/async_terraform.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/log.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/render_files.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_async/run_async.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/local_client.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/local_db.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_local/local_helpers.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/consts.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/log.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/notifications.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_client.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_env.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_failures.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_helpers.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/terraform.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/local.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/redisearch.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/redisgraph_benchmark_go.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/results.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/ssh.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/utils/utils.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/watchdog/__init__.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/watchdog/args.py +0 -0
- {redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/watchdog/watchdog.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redisbench-admin
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.51
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "redisbench-admin"
|
|
3
|
-
version = "0.11.
|
|
3
|
+
version = "0.11.51"
|
|
4
4
|
description = "Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... )."
|
|
5
5
|
authors = ["filipecosta90 <filipecosta.90@gmail.com>","Redis Performance Group <performance@redis.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -36,15 +36,22 @@ LOG_FORMAT = "%(asctime)s %(levelname)-4s %(message)s"
|
|
|
36
36
|
LOG_DATEFMT = "%Y-%m-%d %H:%M:%S"
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
def
|
|
39
|
+
def populate_with_project_data():
|
|
40
40
|
project_name = "redisbench-admin"
|
|
41
41
|
project_version = __version__
|
|
42
42
|
project_description = None
|
|
43
43
|
try:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
pyproject_toml = toml.load("pyproject.toml")
|
|
45
|
+
if 'project' in pyproject_toml:
|
|
46
|
+
project_data = pyproject_toml["project"]
|
|
47
|
+
project_name = project_data["name"]
|
|
48
|
+
project_version = project_data["version"]
|
|
49
|
+
project_description = project_data.get("description")
|
|
50
|
+
else:
|
|
51
|
+
poetry_data = pyproject_toml["tool"]["poetry"]
|
|
52
|
+
project_name = poetry_data["name"]
|
|
53
|
+
project_version = poetry_data["version"]
|
|
54
|
+
project_description = poetry_data["description"]
|
|
48
55
|
except FileNotFoundError:
|
|
49
56
|
pass
|
|
50
57
|
|
|
@@ -59,7 +66,7 @@ def main():
|
|
|
59
66
|
)
|
|
60
67
|
sys.exit(1)
|
|
61
68
|
requested_tool = sys.argv[1]
|
|
62
|
-
project_name, project_description, project_version =
|
|
69
|
+
project_name, project_description, project_version = populate_with_project_data()
|
|
63
70
|
parser = argparse.ArgumentParser(
|
|
64
71
|
description=project_description,
|
|
65
72
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
@@ -114,26 +114,6 @@ def create_compare_arguments(parser):
|
|
|
114
114
|
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
115
115
|
default=START_TIME_NOW_UTC,
|
|
116
116
|
)
|
|
117
|
-
parser.add_argument(
|
|
118
|
-
"--from-date-baseline",
|
|
119
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
120
|
-
default=None,
|
|
121
|
-
)
|
|
122
|
-
parser.add_argument(
|
|
123
|
-
"--to-date-baseline",
|
|
124
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
125
|
-
default=None,
|
|
126
|
-
)
|
|
127
|
-
parser.add_argument(
|
|
128
|
-
"--from-date-comparison",
|
|
129
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
130
|
-
default=None,
|
|
131
|
-
)
|
|
132
|
-
parser.add_argument(
|
|
133
|
-
"--to-date-comparison",
|
|
134
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
135
|
-
default=None,
|
|
136
|
-
)
|
|
137
117
|
parser.add_argument(
|
|
138
118
|
"--metric_mode",
|
|
139
119
|
type=str,
|
|
@@ -314,10 +314,6 @@ def compare_command_logic(args, project_name, project_version):
|
|
|
314
314
|
first_n_baseline,
|
|
315
315
|
first_n_comparison,
|
|
316
316
|
grafana_link_base,
|
|
317
|
-
args.from_date_baseline,
|
|
318
|
-
args.to_date_baseline,
|
|
319
|
-
args.from_date_comparison,
|
|
320
|
-
args.to_date_comparison,
|
|
321
317
|
)
|
|
322
318
|
comment_body = ""
|
|
323
319
|
if total_comparison_points > 0:
|
|
@@ -597,99 +593,24 @@ def compute_regression_table(
|
|
|
597
593
|
first_n_baseline=-1,
|
|
598
594
|
first_n_comparison=-1,
|
|
599
595
|
grafana_link_base=None,
|
|
600
|
-
from_date_baseline=None,
|
|
601
|
-
to_date_baseline=None,
|
|
602
|
-
from_date_comparison=None,
|
|
603
|
-
to_date_comparison=None,
|
|
604
596
|
):
|
|
605
597
|
START_TIME_NOW_UTC, _, _ = get_start_time_vars()
|
|
606
598
|
START_TIME_LAST_MONTH_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=31)
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
if
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
)
|
|
621
|
-
|
|
622
|
-
to_date_baseline if to_date_baseline is not None else START_TIME_NOW_UTC
|
|
623
|
-
)
|
|
624
|
-
from_date_comparison = (
|
|
625
|
-
from_date_comparison
|
|
626
|
-
if from_date_comparison is not None
|
|
627
|
-
else START_TIME_LAST_MONTH_UTC
|
|
628
|
-
)
|
|
629
|
-
to_date_comparison = (
|
|
630
|
-
to_date_comparison if to_date_comparison is not None else START_TIME_NOW_UTC
|
|
631
|
-
)
|
|
632
|
-
|
|
633
|
-
from_ts_ms_baseline = int(from_date_baseline.timestamp() * 1000)
|
|
634
|
-
to_ts_ms_baseline = int(to_date_baseline.timestamp() * 1000)
|
|
635
|
-
from_ts_ms_comparison = int(from_date_comparison.timestamp() * 1000)
|
|
636
|
-
to_ts_ms_comparison = int(to_date_comparison.timestamp() * 1000)
|
|
637
|
-
|
|
638
|
-
from_human_str_baseline = humanize.naturaltime(
|
|
639
|
-
dt.datetime.utcfromtimestamp(from_ts_ms_baseline / 1000)
|
|
640
|
-
)
|
|
641
|
-
to_human_str_baseline = humanize.naturaltime(
|
|
642
|
-
dt.datetime.utcfromtimestamp(to_ts_ms_baseline / 1000)
|
|
643
|
-
)
|
|
644
|
-
from_human_str_comparison = humanize.naturaltime(
|
|
645
|
-
dt.datetime.utcfromtimestamp(from_ts_ms_comparison / 1000)
|
|
646
|
-
)
|
|
647
|
-
to_human_str_comparison = humanize.naturaltime(
|
|
648
|
-
dt.datetime.utcfromtimestamp(to_ts_ms_comparison / 1000)
|
|
649
|
-
)
|
|
650
|
-
|
|
651
|
-
logging.info(
|
|
652
|
-
"Using separate time ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
653
|
-
from_human_str_baseline,
|
|
654
|
-
to_human_str_baseline,
|
|
655
|
-
from_human_str_comparison,
|
|
656
|
-
to_human_str_comparison,
|
|
657
|
-
)
|
|
658
|
-
)
|
|
659
|
-
|
|
660
|
-
# Use baseline range for legacy compatibility (will be overridden in data queries)
|
|
661
|
-
from_ts_ms = from_ts_ms_baseline
|
|
662
|
-
to_ts_ms = to_ts_ms_baseline
|
|
663
|
-
|
|
664
|
-
# Set legacy variables for table headers (show separate ranges info)
|
|
665
|
-
from_human_str = f"Baseline: {from_human_str_baseline} to {to_human_str_baseline}, Comparison: {from_human_str_comparison} to {to_human_str_comparison}"
|
|
666
|
-
to_human_str = to_human_str_baseline
|
|
667
|
-
else:
|
|
668
|
-
# Use legacy single date range for both baseline and comparison
|
|
669
|
-
if from_date is None:
|
|
670
|
-
from_date = START_TIME_LAST_MONTH_UTC
|
|
671
|
-
if to_date is None:
|
|
672
|
-
to_date = START_TIME_NOW_UTC
|
|
673
|
-
if from_ts_ms is None:
|
|
674
|
-
from_ts_ms = int(from_date.timestamp() * 1000)
|
|
675
|
-
if to_ts_ms is None:
|
|
676
|
-
to_ts_ms = int(to_date.timestamp() * 1000)
|
|
677
|
-
|
|
678
|
-
# Use same range for both baseline and comparison
|
|
679
|
-
from_ts_ms_baseline = from_ts_ms
|
|
680
|
-
to_ts_ms_baseline = to_ts_ms
|
|
681
|
-
from_ts_ms_comparison = from_ts_ms
|
|
682
|
-
to_ts_ms_comparison = to_ts_ms
|
|
683
|
-
|
|
684
|
-
from_human_str = humanize.naturaltime(
|
|
685
|
-
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
686
|
-
)
|
|
687
|
-
to_human_str = humanize.naturaltime(
|
|
688
|
-
dt.datetime.utcfromtimestamp(to_ts_ms / 1000)
|
|
689
|
-
)
|
|
690
|
-
logging.info(
|
|
691
|
-
"Using a time-delta from {} to {}".format(from_human_str, to_human_str)
|
|
692
|
-
)
|
|
599
|
+
if from_date is None:
|
|
600
|
+
from_date = START_TIME_LAST_MONTH_UTC
|
|
601
|
+
if to_date is None:
|
|
602
|
+
to_date = START_TIME_NOW_UTC
|
|
603
|
+
if from_ts_ms is None:
|
|
604
|
+
from_ts_ms = int(from_date.timestamp() * 1000)
|
|
605
|
+
if to_ts_ms is None:
|
|
606
|
+
to_ts_ms = int(to_date.timestamp() * 1000)
|
|
607
|
+
from_human_str = humanize.naturaltime(
|
|
608
|
+
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
609
|
+
)
|
|
610
|
+
to_human_str = humanize.naturaltime(dt.datetime.utcfromtimestamp(to_ts_ms / 1000))
|
|
611
|
+
logging.info(
|
|
612
|
+
"Using a time-delta from {} to {}".format(from_human_str, to_human_str)
|
|
613
|
+
)
|
|
693
614
|
baseline_str, by_str_baseline, comparison_str, by_str_comparison = get_by_strings(
|
|
694
615
|
baseline_branch,
|
|
695
616
|
comparison_branch,
|
|
@@ -773,10 +694,6 @@ def compute_regression_table(
|
|
|
773
694
|
comparison_tag,
|
|
774
695
|
from_date,
|
|
775
696
|
to_date,
|
|
776
|
-
from_ts_ms_baseline,
|
|
777
|
-
to_ts_ms_baseline,
|
|
778
|
-
from_ts_ms_comparison,
|
|
779
|
-
to_ts_ms_comparison,
|
|
780
697
|
)
|
|
781
698
|
logging.info(
|
|
782
699
|
"Printing differential analysis between {} and {}".format(
|
|
@@ -1027,56 +944,7 @@ def from_rts_to_regression_table(
|
|
|
1027
944
|
comparison_tag=None,
|
|
1028
945
|
from_date=None,
|
|
1029
946
|
to_date=None,
|
|
1030
|
-
from_ts_ms_baseline=None,
|
|
1031
|
-
to_ts_ms_baseline=None,
|
|
1032
|
-
from_ts_ms_comparison=None,
|
|
1033
|
-
to_ts_ms_comparison=None,
|
|
1034
947
|
):
|
|
1035
|
-
# Use separate timestamp ranges if provided, otherwise use legacy single range
|
|
1036
|
-
if (
|
|
1037
|
-
from_ts_ms_baseline is not None
|
|
1038
|
-
and to_ts_ms_baseline is not None
|
|
1039
|
-
and from_ts_ms_comparison is not None
|
|
1040
|
-
and to_ts_ms_comparison is not None
|
|
1041
|
-
):
|
|
1042
|
-
# Use separate ranges for baseline and comparison
|
|
1043
|
-
baseline_from_ts = from_ts_ms_baseline
|
|
1044
|
-
baseline_to_ts = to_ts_ms_baseline
|
|
1045
|
-
comparison_from_ts = from_ts_ms_comparison
|
|
1046
|
-
comparison_to_ts = to_ts_ms_comparison
|
|
1047
|
-
baseline_from_human = humanize.naturaltime(
|
|
1048
|
-
dt.datetime.utcfromtimestamp(baseline_from_ts / 1000)
|
|
1049
|
-
)
|
|
1050
|
-
baseline_to_human = humanize.naturaltime(
|
|
1051
|
-
dt.datetime.utcfromtimestamp(baseline_to_ts / 1000)
|
|
1052
|
-
)
|
|
1053
|
-
comparison_from_human = humanize.naturaltime(
|
|
1054
|
-
dt.datetime.utcfromtimestamp(comparison_from_ts / 1000)
|
|
1055
|
-
)
|
|
1056
|
-
comparison_to_human = humanize.naturaltime(
|
|
1057
|
-
dt.datetime.utcfromtimestamp(comparison_to_ts / 1000)
|
|
1058
|
-
)
|
|
1059
|
-
logging.info(
|
|
1060
|
-
"Using separate timestamp ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
1061
|
-
baseline_from_human, baseline_to_human, comparison_from_human, comparison_to_human
|
|
1062
|
-
)
|
|
1063
|
-
)
|
|
1064
|
-
else:
|
|
1065
|
-
# Use legacy single range for both
|
|
1066
|
-
baseline_from_ts = from_ts_ms
|
|
1067
|
-
baseline_to_ts = to_ts_ms
|
|
1068
|
-
comparison_from_ts = from_ts_ms
|
|
1069
|
-
comparison_to_ts = to_ts_ms
|
|
1070
|
-
from_human = humanize.naturaltime(
|
|
1071
|
-
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
1072
|
-
)
|
|
1073
|
-
to_human = humanize.naturaltime(dt.datetime.utcfromtimestamp(to_ts_ms / 1000))
|
|
1074
|
-
logging.info(
|
|
1075
|
-
"Using single timestamp range for both baseline and comparison: {} to {}".format(
|
|
1076
|
-
from_human, to_human
|
|
1077
|
-
)
|
|
1078
|
-
)
|
|
1079
|
-
|
|
1080
948
|
print_all = print_regressions_only is False and print_improvements_only is False
|
|
1081
949
|
table = []
|
|
1082
950
|
detected_regressions = []
|
|
@@ -1177,7 +1045,7 @@ def from_rts_to_regression_table(
|
|
|
1177
1045
|
try:
|
|
1178
1046
|
for ts_name_baseline in baseline_timeseries:
|
|
1179
1047
|
datapoints_inner = rts.ts().revrange(
|
|
1180
|
-
ts_name_baseline,
|
|
1048
|
+
ts_name_baseline, from_ts_ms, to_ts_ms
|
|
1181
1049
|
)
|
|
1182
1050
|
baseline_datapoints.extend(datapoints_inner)
|
|
1183
1051
|
(
|
|
@@ -1196,7 +1064,7 @@ def from_rts_to_regression_table(
|
|
|
1196
1064
|
)
|
|
1197
1065
|
for ts_name_comparison in comparison_timeseries:
|
|
1198
1066
|
datapoints_inner = rts.ts().revrange(
|
|
1199
|
-
ts_name_comparison,
|
|
1067
|
+
ts_name_comparison, from_ts_ms, to_ts_ms
|
|
1200
1068
|
)
|
|
1201
1069
|
comparison_datapoints.extend(datapoints_inner)
|
|
1202
1070
|
|
|
@@ -1665,11 +1533,9 @@ def check_client_side_latency(
|
|
|
1665
1533
|
comparison_ts = comparison_client_ts[0]
|
|
1666
1534
|
|
|
1667
1535
|
# Get client-side latency data
|
|
1668
|
-
baseline_client_data = rts.ts().revrange(
|
|
1669
|
-
baseline_ts, baseline_from_ts, baseline_to_ts
|
|
1670
|
-
)
|
|
1536
|
+
baseline_client_data = rts.ts().revrange(baseline_ts, from_ts_ms, to_ts_ms)
|
|
1671
1537
|
comparison_client_data = rts.ts().revrange(
|
|
1672
|
-
comparison_ts,
|
|
1538
|
+
comparison_ts, from_ts_ms, to_ts_ms
|
|
1673
1539
|
)
|
|
1674
1540
|
|
|
1675
1541
|
if len(baseline_client_data) == 0 or len(comparison_client_data) == 0:
|
|
@@ -2012,15 +1878,11 @@ def perform_variance_and_p99_analysis(
|
|
|
2012
1878
|
comparison_p99_data = []
|
|
2013
1879
|
|
|
2014
1880
|
for ts_name in baseline_ts_list:
|
|
2015
|
-
datapoints = rts.ts().revrange(
|
|
2016
|
-
ts_name, baseline_from_ts, baseline_to_ts
|
|
2017
|
-
)
|
|
1881
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2018
1882
|
baseline_p99_data.extend(datapoints)
|
|
2019
1883
|
|
|
2020
1884
|
for ts_name in comparison_ts_list:
|
|
2021
|
-
datapoints = rts.ts().revrange(
|
|
2022
|
-
ts_name, comparison_from_ts, comparison_to_ts
|
|
2023
|
-
)
|
|
1885
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2024
1886
|
comparison_p99_data.extend(datapoints)
|
|
2025
1887
|
|
|
2026
1888
|
if len(baseline_p99_data) < 3 or len(comparison_p99_data) < 3:
|
|
@@ -2368,15 +2230,11 @@ def check_latency_for_unstable_throughput(
|
|
|
2368
2230
|
comparison_latency_data = []
|
|
2369
2231
|
|
|
2370
2232
|
for ts_name in baseline_ts_list:
|
|
2371
|
-
datapoints = rts.ts().revrange(
|
|
2372
|
-
ts_name, baseline_from_ts, baseline_to_ts
|
|
2373
|
-
)
|
|
2233
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2374
2234
|
baseline_latency_data.extend(datapoints)
|
|
2375
2235
|
|
|
2376
2236
|
for ts_name in comparison_ts_list:
|
|
2377
|
-
datapoints = rts.ts().revrange(
|
|
2378
|
-
ts_name, comparison_from_ts, comparison_to_ts
|
|
2379
|
-
)
|
|
2237
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2380
2238
|
comparison_latency_data.extend(datapoints)
|
|
2381
2239
|
|
|
2382
2240
|
if len(baseline_latency_data) == 0 or len(comparison_latency_data) == 0:
|
|
@@ -76,7 +76,6 @@ def export_command_logic(args, project_name, project_version):
|
|
|
76
76
|
exporter_timemetric_path,
|
|
77
77
|
_,
|
|
78
78
|
_,
|
|
79
|
-
_,
|
|
80
79
|
) = get_defaults(exporter_spec_file)
|
|
81
80
|
arch = args.architecture
|
|
82
81
|
logging.info("Using the following architecture on the timeseries: {}".format(arch))
|
|
@@ -16,7 +16,7 @@ import botocore
|
|
|
16
16
|
import daemonize
|
|
17
17
|
from flask import Flask, request
|
|
18
18
|
|
|
19
|
-
from redisbench_admin.cli import
|
|
19
|
+
from redisbench_admin.cli import populate_with_project_data
|
|
20
20
|
from redisbench_admin.profilers.perf import Perf
|
|
21
21
|
from redisbench_admin.profilers.perf_daemon_caller import PERF_DAEMON_LOGNAME
|
|
22
22
|
from redisbench_admin.profilers.profilers_local import local_profilers_platform_checks
|
|
@@ -282,7 +282,7 @@ class PerfDaemon:
|
|
|
282
282
|
|
|
283
283
|
|
|
284
284
|
def main():
|
|
285
|
-
_, project_description, project_version =
|
|
285
|
+
_, project_description, project_version = populate_with_project_data()
|
|
286
286
|
project_name = "perf-daemon"
|
|
287
287
|
parser = argparse.ArgumentParser(
|
|
288
288
|
description=project_description,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# BSD 3-Clause License
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2021., Redis Labs Modules
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
import logging
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def redis_modules_check(local_module_files):
|
|
11
|
+
status = True
|
|
12
|
+
error_message = ""
|
|
13
|
+
if local_module_files is not None:
|
|
14
|
+
logging.info(
|
|
15
|
+
"Using the following module artifacts: {}".format(local_module_files)
|
|
16
|
+
)
|
|
17
|
+
for local_module_file in local_module_files:
|
|
18
|
+
if type(local_module_file) is str:
|
|
19
|
+
logging.info(
|
|
20
|
+
"Checking if module artifact {} exists...".format(local_module_file)
|
|
21
|
+
)
|
|
22
|
+
error_message, status = exists_check(
|
|
23
|
+
error_message, local_module_file, status
|
|
24
|
+
)
|
|
25
|
+
if type(local_module_file) is list:
|
|
26
|
+
for inner_local_module_file in local_module_file:
|
|
27
|
+
logging.info(
|
|
28
|
+
"Checking if module artifact {} exists...".format(
|
|
29
|
+
inner_local_module_file
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
error_message, status = exists_check(
|
|
33
|
+
error_message, inner_local_module_file, status
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
return status, error_message
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def exists_check(error_message, local_module_file, status):
|
|
40
|
+
if os.path.exists(local_module_file) is False:
|
|
41
|
+
error_message = "Specified module artifact does not exist: {}".format(
|
|
42
|
+
local_module_file
|
|
43
|
+
)
|
|
44
|
+
logging.error(error_message)
|
|
45
|
+
status = False
|
|
46
|
+
else:
|
|
47
|
+
logging.info(
|
|
48
|
+
"Confirmed that module artifact: '{}' exists!".format(local_module_file)
|
|
49
|
+
)
|
|
50
|
+
return error_message, status
|
|
@@ -148,7 +148,7 @@ def create_run_remote_arguments(parser):
|
|
|
148
148
|
"--spin-test",
|
|
149
149
|
default=False,
|
|
150
150
|
action="store_true",
|
|
151
|
-
help="Setup standalone Redis server, run INFO SERVER, print output as markdown and exit
|
|
151
|
+
help="Setup standalone Redis server, run INFO SERVER, print output as markdown and exit",
|
|
152
152
|
)
|
|
153
153
|
|
|
154
154
|
return parser
|
{redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/remote_db.py
RENAMED
|
@@ -105,8 +105,6 @@ def remote_db_spin(
|
|
|
105
105
|
continue_on_module_check_error=False,
|
|
106
106
|
keyspace_check_timeout=60,
|
|
107
107
|
architecture="x86_64",
|
|
108
|
-
custom_redis_server_path=None,
|
|
109
|
-
custom_redis_conf_path=None,
|
|
110
108
|
):
|
|
111
109
|
(
|
|
112
110
|
_,
|
|
@@ -116,116 +114,6 @@ def remote_db_spin(
|
|
|
116
114
|
modules_configuration_parameters_map,
|
|
117
115
|
) = extract_redis_dbconfig_parameters(benchmark_config, "dbconfig")
|
|
118
116
|
|
|
119
|
-
# Execute install_steps from dbconfig and clientconfig if present
|
|
120
|
-
from redisbench_admin.run_remote.standalone import execute_install_steps
|
|
121
|
-
|
|
122
|
-
if benchmark_config is not None:
|
|
123
|
-
execute_install_steps(
|
|
124
|
-
benchmark_config, server_public_ip, username, private_key, db_ssh_port
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
# Copy custom Redis files to remote host if provided
|
|
128
|
-
remote_redis_server_path = None
|
|
129
|
-
remote_redis_conf_path = None
|
|
130
|
-
|
|
131
|
-
if custom_redis_server_path or custom_redis_conf_path:
|
|
132
|
-
from redisbench_admin.utils.remote import copy_file_to_remote_setup
|
|
133
|
-
import os
|
|
134
|
-
|
|
135
|
-
if custom_redis_conf_path:
|
|
136
|
-
# Convert relative paths to absolute paths
|
|
137
|
-
custom_redis_conf_path = os.path.abspath(
|
|
138
|
-
os.path.expanduser(custom_redis_conf_path)
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
if not os.path.exists(custom_redis_conf_path):
|
|
142
|
-
logging.error(
|
|
143
|
-
f"❌ Custom redis.conf file not found: {custom_redis_conf_path}"
|
|
144
|
-
)
|
|
145
|
-
return_code = 1
|
|
146
|
-
return (None, None, None, [], [], return_code, None, None)
|
|
147
|
-
|
|
148
|
-
remote_redis_conf_path = "/tmp/redis.conf"
|
|
149
|
-
logging.info(
|
|
150
|
-
f"📁 Copying custom redis.conf from {custom_redis_conf_path} to {remote_redis_conf_path}"
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
copy_result = copy_file_to_remote_setup(
|
|
154
|
-
server_public_ip,
|
|
155
|
-
username,
|
|
156
|
-
private_key,
|
|
157
|
-
custom_redis_conf_path,
|
|
158
|
-
remote_redis_conf_path,
|
|
159
|
-
None,
|
|
160
|
-
db_ssh_port,
|
|
161
|
-
False, # don't continue on error
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
if not copy_result:
|
|
165
|
-
logging.error("❌ Failed to copy redis.conf to remote host")
|
|
166
|
-
return_code = 1
|
|
167
|
-
return (None, None, None, [], [], return_code, None, None)
|
|
168
|
-
else:
|
|
169
|
-
logging.info(
|
|
170
|
-
f"✅ Successfully copied redis.conf to {remote_redis_conf_path}"
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
if custom_redis_server_path:
|
|
174
|
-
# Convert relative paths to absolute paths
|
|
175
|
-
custom_redis_server_path = os.path.abspath(
|
|
176
|
-
os.path.expanduser(custom_redis_server_path)
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
if not os.path.exists(custom_redis_server_path):
|
|
180
|
-
logging.error(
|
|
181
|
-
f"❌ Custom redis-server binary not found: {custom_redis_server_path}"
|
|
182
|
-
)
|
|
183
|
-
return_code = 1
|
|
184
|
-
return (None, None, None, [], [], return_code, None, None)
|
|
185
|
-
|
|
186
|
-
remote_redis_server_path = "/tmp/redis-server"
|
|
187
|
-
logging.info(
|
|
188
|
-
f"📁 Copying custom redis-server binary from {custom_redis_server_path} to {remote_redis_server_path}"
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
copy_result = copy_file_to_remote_setup(
|
|
192
|
-
server_public_ip,
|
|
193
|
-
username,
|
|
194
|
-
private_key,
|
|
195
|
-
custom_redis_server_path,
|
|
196
|
-
remote_redis_server_path,
|
|
197
|
-
None,
|
|
198
|
-
db_ssh_port,
|
|
199
|
-
False, # don't continue on error
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
if not copy_result:
|
|
203
|
-
logging.error("❌ Failed to copy redis-server binary to remote host")
|
|
204
|
-
return_code = 1
|
|
205
|
-
return (None, None, None, [], [], return_code, None, None)
|
|
206
|
-
|
|
207
|
-
# Make the binary executable
|
|
208
|
-
chmod_commands = [f"chmod +x {remote_redis_server_path}"]
|
|
209
|
-
chmod_results = execute_remote_commands(
|
|
210
|
-
server_public_ip, username, private_key, chmod_commands, db_ssh_port
|
|
211
|
-
)
|
|
212
|
-
|
|
213
|
-
recv_exit_status, stdout, stderr = chmod_results[0]
|
|
214
|
-
if recv_exit_status != 0:
|
|
215
|
-
logging.warning(
|
|
216
|
-
f"⚠️ Failed to make redis-server binary executable: {stderr}"
|
|
217
|
-
)
|
|
218
|
-
else:
|
|
219
|
-
logging.info(
|
|
220
|
-
f"✅ Successfully copied and made executable: {remote_redis_server_path}"
|
|
221
|
-
)
|
|
222
|
-
|
|
223
|
-
# Update the custom paths to use the remote paths
|
|
224
|
-
if remote_redis_server_path:
|
|
225
|
-
custom_redis_server_path = remote_redis_server_path
|
|
226
|
-
if remote_redis_conf_path:
|
|
227
|
-
custom_redis_conf_path = remote_redis_conf_path
|
|
228
|
-
|
|
229
117
|
full_logfiles = []
|
|
230
118
|
cluster_enabled = False
|
|
231
119
|
if setup_type == "oss-cluster":
|
|
@@ -319,8 +207,6 @@ def remote_db_spin(
|
|
|
319
207
|
db_ssh_port,
|
|
320
208
|
modules_configuration_parameters_map,
|
|
321
209
|
redis_7,
|
|
322
|
-
custom_redis_server_path,
|
|
323
|
-
custom_redis_conf_path,
|
|
324
210
|
)
|
|
325
211
|
full_logfiles.append(full_logfile)
|
|
326
212
|
local_redis_conn, ssh_tunnel = ssh_tunnel_redisconn(
|
{redisbench_admin-0.11.50 → redisbench_admin-0.11.51}/redisbench_admin/run_remote/run_remote.py
RENAMED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
import logging
|
|
7
|
-
import os
|
|
8
7
|
import random
|
|
9
8
|
import string
|
|
10
9
|
import sys
|
|
@@ -35,7 +34,7 @@ from redisbench_admin.run.common import (
|
|
|
35
34
|
)
|
|
36
35
|
from redisbench_admin.run.git import git_vars_crosscheck
|
|
37
36
|
from redisbench_admin.run.grafana import generate_artifacts_table_grafana_redis
|
|
38
|
-
from redisbench_admin.run.modules import redis_modules_check
|
|
37
|
+
from redisbench_admin.run.modules import redis_modules_check
|
|
39
38
|
from redisbench_admin.run.redistimeseries import (
|
|
40
39
|
timeseries_test_sucess_flow,
|
|
41
40
|
timeseries_test_failure_flow,
|
|
@@ -229,25 +228,6 @@ def run_remote_command_logic(args, project_name, project_version):
|
|
|
229
228
|
)
|
|
230
229
|
)
|
|
231
230
|
|
|
232
|
-
# Validate Redis server binary and config file paths early
|
|
233
|
-
redis_files_check_status, redis_error_message = redis_files_check(
|
|
234
|
-
args.redis_server_binary, args.redis_conf
|
|
235
|
-
)
|
|
236
|
-
if redis_files_check_status is False:
|
|
237
|
-
if webhook_notifications_active:
|
|
238
|
-
failure_reason = redis_error_message
|
|
239
|
-
generate_failure_notification(
|
|
240
|
-
webhook_client_slack,
|
|
241
|
-
ci_job_name,
|
|
242
|
-
ci_job_link,
|
|
243
|
-
failure_reason,
|
|
244
|
-
tf_github_org,
|
|
245
|
-
tf_github_repo,
|
|
246
|
-
tf_github_branch,
|
|
247
|
-
None,
|
|
248
|
-
)
|
|
249
|
-
exit(1)
|
|
250
|
-
|
|
251
231
|
common_properties_log(
|
|
252
232
|
tf_bin_path,
|
|
253
233
|
tf_github_actor,
|
|
@@ -290,31 +270,6 @@ def run_remote_command_logic(args, project_name, project_version):
|
|
|
290
270
|
logging.error("❌ --spin-test requires server_public_ip in --inventory")
|
|
291
271
|
exit(1)
|
|
292
272
|
|
|
293
|
-
# Load benchmark config from defaults.yml
|
|
294
|
-
benchmark_config = None
|
|
295
|
-
|
|
296
|
-
# Try to load defaults.yml
|
|
297
|
-
defaults_file = (
|
|
298
|
-
args.defaults_filename
|
|
299
|
-
if hasattr(args, "defaults_filename")
|
|
300
|
-
else "defaults.yml"
|
|
301
|
-
)
|
|
302
|
-
if os.path.exists(defaults_file):
|
|
303
|
-
try:
|
|
304
|
-
import yaml
|
|
305
|
-
|
|
306
|
-
with open(defaults_file, "r") as config_file:
|
|
307
|
-
defaults_config = yaml.safe_load(config_file)
|
|
308
|
-
if defaults_config:
|
|
309
|
-
benchmark_config = defaults_config
|
|
310
|
-
logging.info(f"📋 Loaded configuration from {defaults_file}")
|
|
311
|
-
except Exception as e:
|
|
312
|
-
logging.warning(f"⚠️ Failed to load defaults config: {e}")
|
|
313
|
-
else:
|
|
314
|
-
logging.info(
|
|
315
|
-
f"📋 No {defaults_file} found - proceeding without install_steps"
|
|
316
|
-
)
|
|
317
|
-
|
|
318
273
|
# Run spin test
|
|
319
274
|
success = spin_test_standalone_redis(
|
|
320
275
|
server_public_ip=server_public_ip,
|
|
@@ -327,7 +282,6 @@ def run_remote_command_logic(args, project_name, project_version):
|
|
|
327
282
|
modules_configuration_parameters_map=None,
|
|
328
283
|
custom_redis_conf_path=args.redis_conf,
|
|
329
284
|
custom_redis_server_path=args.redis_server_binary,
|
|
330
|
-
benchmark_config=benchmark_config,
|
|
331
285
|
)
|
|
332
286
|
|
|
333
287
|
exit(0 if success else 1)
|
|
@@ -339,7 +293,6 @@ def run_remote_command_logic(args, project_name, project_version):
|
|
|
339
293
|
exporter_timemetric_path,
|
|
340
294
|
default_specs,
|
|
341
295
|
clusterconfig,
|
|
342
|
-
_,
|
|
343
296
|
) = prepare_benchmark_definitions(args)
|
|
344
297
|
|
|
345
298
|
return_code = 0
|
|
@@ -685,8 +638,6 @@ def run_remote_command_logic(args, project_name, project_version):
|
|
|
685
638
|
continue_on_module_check_error,
|
|
686
639
|
60,
|
|
687
640
|
architecture,
|
|
688
|
-
args.redis_server_binary,
|
|
689
|
-
args.redis_conf,
|
|
690
641
|
)
|
|
691
642
|
if benchmark_type == "read-only":
|
|
692
643
|
ro_benchmark_set(
|