Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tooling to create a track from existing data #970

Merged
merged 57 commits into from
Apr 27, 2020

Conversation

danielmitterdorfer
Copy link
Member

@danielmitterdorfer danielmitterdorfer commented Apr 21, 2020

With this commit we introduce a new subcommand create-track that allows
users to create a basic Rally track based on data that are already available in
an existing Elasticsearch cluster. Rally will attempt to connect to the target
cluster, extract data and mappings for the specified indices and create a
track that allows to ingest the extract data.

Co-authored-by: Dennis Lawler [email protected]

Closes #444

Dennis Lawler added 30 commits January 17, 2020 08:49
Pylint warns against "self imports" unless the importing code is
part of a module as defined by the presence of __init__.py.
Refactored Tracker to support multiple indexes on a single Track, as in http_logs.
Also including fix for logging issue introduced in the move from private repo to
Rally.
 - Change elasticsearch import to occur later instead of at init
 - Use proper logger instead of root logger
 - Use Rally's console progress reporter instead of naked print
 - Align argument parsing with Rally
 - trackname -> track-name
 - single-quotes to double-quotes
 - use non-root logger
 - use Rally's ensure_dir
 - add missing newline
 - use Jinja's joiner
 - point users to paath of trackfile.
 - Use 7.6.0 instead of random_dist.  Not planning on supporting
pre-typeless-ES right now.
 - Use random trackname
 - cleanup IT track on completion
�[1m============================= test session starts ==============================�[0m
platform darwin -- Python 3.5.8, pytest-5.2.0, py-1.8.1, pluggy-0.13.1 -- /Users/dlawler/Code/rally/.venv/bin/python3
cachedir: .pytest_cache
benchmark: 3.2.2 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /Users/dlawler/Code/rally, inifile: setup.cfg
plugins: benchmark-3.2.2
�[1mcollecting ... �[0mcollected 696 items

tests/client_test.py::EsClientFactoryTests::test_create_http_connection �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_create_https_connection_only_verify_self_signed_server_certificate �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_create_https_connection_unverified_certificate �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_create_https_connection_unverified_certificate_present_client_certificates �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_create_https_connection_verify_self_signed_server_and_client_certificate �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_create_https_connection_verify_server �[32mPASSED�[0m�[36m [  0%]�[0m
tests/client_test.py::EsClientFactoryTests::test_raises_error_when_only_one_of_client_cert_and_client_key_defined �[32mPASSED�[0m�[36m [  1%]�[0m
tests/client_test.py::RestLayerTests::test_dont_retry_eternally_on_transport_errors �[32mPASSED�[0m�[36m [  1%]�[0m
tests/client_test.py::RestLayerTests::test_retries_on_transport_errors �[32mPASSED�[0m�[36m [  1%]�[0m
tests/client_test.py::RestLayerTests::test_ssl_error �[32mPASSED�[0m�[36m              [  1%]�[0m
tests/client_test.py::RestLayerTests::test_successfully_waits_for_rest_layer �[32mPASSED�[0m�[36m [  1%]�[0m
tests/config_test.py::ConfigTests::test_add_all_in_section �[32mPASSED�[0m�[36m        [  1%]�[0m
tests/config_test.py::ConfigTests::test_load_all_opts_in_section �[32mPASSED�[0m�[36m  [  1%]�[0m
tests/config_test.py::ConfigTests::test_load_existing_config �[32mPASSED�[0m�[36m      [  2%]�[0m
tests/config_test.py::ConfigTests::test_load_non_existing_config �[32mPASSED�[0m�[36m  [  2%]�[0m
tests/config_test.py::AutoLoadConfigTests::test_can_create_non_existing_config �[32mPASSED�[0m�[36m [  2%]�[0m
tests/config_test.py::AutoLoadConfigTests::test_can_load_and_amend_existing_config �[32mPASSED�[0m�[36m [  2%]�[0m
tests/config_test.py::AutoLoadConfigTests::test_can_migrate_outdated_config �[32mPASSED�[0m�[36m [  2%]�[0m
tests/config_test.py::ConfigFactoryTests::test_create_advanced_config �[32mPASSED�[0m�[36m [  2%]�[0m
tests/config_test.py::ConfigFactoryTests::test_create_simple_config �[32mPASSED�[0m�[36m [  2%]�[0m
tests/config_test.py::ConfigMigrationTests::test_does_not_migrate_outdated_config �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_12_to_13_with_gradle_and_jdk8_ask_user_and_skip �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_12_to_13_with_gradle_and_jdk8_ask_user_enter_valid �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_12_to_13_with_gradle_and_jdk8_autodetect_jdk9 �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_12_to_13_with_gradle_and_jdk9 �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_12_to_13_without_gradle �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_13_to_14_with_gradle_and_jdk10 �[32mPASSED�[0m�[36m [  3%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_13_to_14_with_gradle_and_jdk8_ask_user_and_skip �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_13_to_14_with_gradle_and_jdk8_ask_user_enter_valid �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_13_to_14_with_gradle_and_jdk8_autodetect_jdk10 �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_13_to_14_without_gradle �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_14_to_15_with_gradle �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_14_to_15_with_source_plugin_definition �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_14_to_15_without_gradle �[32mPASSED�[0m�[36m [  4%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_15_to_16 �[32mPASSED�[0m�[36m [  5%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_16_to_17 �[32mPASSED�[0m�[36m [  5%]�[0m
tests/config_test.py::ConfigMigrationTests::test_migrate_from_earliest_supported_to_latest �[32mPASSED�[0m�[36m [  5%]�[0m
tests/metrics_test.py::ExtractUserTagsTests::test_extracts_proper_user_tags �[32mPASSED�[0m�[36m [  5%]�[0m
tests/metrics_test.py::ExtractUserTagsTests::test_missing_comma_raises_error �[32mPASSED�[0m�[36m [  5%]�[0m
tests/metrics_test.py::ExtractUserTagsTests::test_missing_value_raises_error �[32mPASSED�[0m�[36m [  5%]�[0m
tests/metrics_test.py::ExtractUserTagsTests::test_no_tags_returns_empty_dict �[32mPASSED�[0m�[36m [  5%]�[0m
tests/metrics_test.py::EsClientTests::test_config_opts_parsing �[32mPASSED�[0m�[36m    [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_fails_after_too_many_errors �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_raises_rally_error_on_unknown_problems �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_raises_sytem_setup_error_on_authentication_problems �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_raises_sytem_setup_error_on_authorization_problems �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_raises_sytem_setup_error_on_connection_problems �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsClientTests::test_retries_on_various_transport_errors �[32mPASSED�[0m�[36m [  6%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_additional_unknown_key �[32mPASSED�[0m�[36m [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_explicit_one �[32mPASSED�[0m�[36m [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_explicit_zero �[32mPASSED�[0m�[36m [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_implicit_one �[32mPASSED�[0m�[36m [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_implicit_zero �[32mPASSED�[0m�[36m [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_error_rate_mixed �[32mPASSED�[0m�[36m  [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_mean �[32mPASSED�[0m�[36m              [  7%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_median �[32mPASSED�[0m�[36m            [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_per_node_value �[32mPASSED�[0m�[36m    [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_get_value �[32mPASSED�[0m�[36m             [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_put_doc_no_meta_data �[32mPASSED�[0m�[36m  [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_put_doc_with_metadata �[32mPASSED�[0m�[36m [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_put_value_with_explicit_timestamps �[32mPASSED�[0m�[36m [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_put_value_with_meta_info �[32mPASSED�[0m�[36m [  8%]�[0m
tests/metrics_test.py::EsMetricsTests::test_put_value_without_meta_info �[32mPASSED�[0m�[36m [  9%]�[0m
tests/metrics_test.py::EsRaceStoreTests::test_does_not_find_missing_race_by_race_id �[32mPASSED�[0m�[36m [  9%]�[0m
tests/metrics_test.py::EsRaceStoreTests::test_find_existing_race_by_race_id �[32mPASSED�[0m�[36m [  9%]�[0m
tests/metrics_test.py::EsRaceStoreTests::test_store_race �[32mPASSED�[0m�[36m          [  9%]�[0m
tests/metrics_test.py::EsResultsStoreTests::test_store_results �[32mPASSED�[0m�[36m    [  9%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_externalize_and_bulk_add �[32mPASSED�[0m�[36m [  9%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_error_rate_by_sample_type �[32mPASSED�[0m�[36m [  9%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_error_rate_mixed �[32mPASSED�[0m�[36m [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_error_rate_zero_without_samples �[32mPASSED�[0m�[36m [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_mean �[32mPASSED�[0m�[36m   [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_median �[32mPASSED�[0m�[36m [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_percentile �[32mPASSED�[0m�[36m [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_get_value �[32mPASSED�[0m�[36m  [ 10%]�[0m
tests/metrics_test.py::InMemoryMetricsStoreTests::test_meta_data_per_document �[32mPASSED�[0m�[36m [ 10%]�[0m
tests/metrics_test.py::FileRaceStoreTests::test_race_not_found �[32mPASSED�[0m�[36m    [ 11%]�[0m
tests/metrics_test.py::FileRaceStoreTests::test_store_race �[32mPASSED�[0m�[36m        [ 11%]�[0m
tests/metrics_test.py::StatsCalculatorTests::test_calculate_global_stats �[32mPASSED�[0m�[36m [ 11%]�[0m
tests/metrics_test.py::StatsCalculatorTests::test_calculate_system_stats �[32mPASSED�[0m�[36m [ 11%]�[0m
tests/metrics_test.py::GlobalStatsTests::test_as_flat_list �[32mPASSED�[0m�[36m        [ 11%]�[0m
tests/metrics_test.py::SystemStatsTests::test_as_flat_list �[32mPASSED�[0m�[36m        [ 11%]�[0m
tests/racecontrol_test.py::RaceControlTests::test_fails_without_benchmark_only_pipeline_in_docker �[32mPASSED�[0m�[36m [ 11%]�[0m
tests/racecontrol_test.py::RaceControlTests::test_finds_available_pipelines �[32mPASSED�[0m�[36m [ 12%]�[0m
tests/racecontrol_test.py::RaceControlTests::test_passes_benchmark_only_pipeline_in_docker �[32mPASSED�[0m�[36m [ 12%]�[0m
tests/racecontrol_test.py::RaceControlTests::test_prevents_running_an_unknown_pipeline �[32mPASSED�[0m�[36m [ 12%]�[0m
tests/racecontrol_test.py::RaceControlTests::test_runs_a_known_pipeline �[32mPASSED�[0m�[36m [ 12%]�[0m
tests/reporter_test.py::FormatterTests::test_formats_as_csv �[32mPASSED�[0m�[36m       [ 12%]�[0m
tests/reporter_test.py::FormatterTests::test_formats_as_markdown �[32mPASSED�[0m�[36m  [ 12%]�[0m
tests/telemetry_test.py::TelemetryTests::test_merges_options_set_by_different_devices �[32mPASSED�[0m�[36m [ 12%]�[0m
tests/telemetry_test.py::StartupTimeTests::test_store_calculated_metrics �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_java_11_or_above_custom_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_java_11_or_above_default_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_java_9_or_10_custom_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_java_9_or_10_default_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_pre_java_9_custom_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::JfrTests::test_sets_options_for_pre_java_9_default_recording_template �[32mPASSED�[0m�[36m [ 13%]�[0m
tests/telemetry_test.py::GcTests::test_sets_options_for_java_9_or_above �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::GcTests::test_sets_options_for_pre_java_9 �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::HeapdumpTests::test_generates_heap_dump �[32mPASSED�[0m�[36m  [ 14%]�[0m
tests/telemetry_test.py::CcrStatsTests::test_negative_sample_interval_forbidden �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::CcrStatsTests::test_wrong_cluster_name_in_ccr_stats_indices_forbidden �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::CcrStatsRecorderTests::test_raises_exception_on_transport_error �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::CcrStatsRecorderTests::test_stores_default_ccr_stats �[32mPASSED�[0m�[36m [ 14%]�[0m
tests/telemetry_test.py::CcrStatsRecorderTests::test_stores_default_ccr_stats_many_shards �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::CcrStatsRecorderTests::test_stores_filtered_ccr_stats �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::RecoveryStatsTests::test_no_metrics_if_no_pending_recoveries �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::RecoveryStatsTests::test_stores_multi_index_multi_shard_stats �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::RecoveryStatsTests::test_stores_single_shard_stats �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::NodeStatsTests::test_prints_warning_using_node_stats �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_exception_when_include_indices_metrics_not_valid �[32mPASSED�[0m�[36m [ 15%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_flatten_indices_fields �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_negative_sample_interval_forbidden �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_stores_all_nodes_stats �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_stores_default_nodes_stats �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::NodeStatsRecorderTests::test_stores_selected_indices_metrics_from_nodes_stats �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::ClusterEnvironmentInfoTests::test_resilient_if_error_response �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::ClusterEnvironmentInfoTests::test_stores_cluster_level_metrics_on_attach �[32mPASSED�[0m�[36m [ 16%]�[0m
tests/telemetry_test.py::NodeEnvironmentInfoTests::test_stores_node_level_metrics �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::ExternalEnvironmentInfoTests::test_fallback_when_host_not_available �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::ExternalEnvironmentInfoTests::test_resilient_if_error_response �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::ExternalEnvironmentInfoTests::test_stores_all_node_metrics_on_attach �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::DiskIoTests::test_diskio_disk_io_counters �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::DiskIoTests::test_diskio_process_io_counters �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::DiskIoTests::test_diskio_writes_metrics_if_available �[32mPASSED�[0m�[36m [ 17%]�[0m
tests/telemetry_test.py::JvmStatsSummaryTests::test_stores_only_diff_of_gc_times �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::IndexStatsTests::test_stores_available_index_stats �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::MlBucketProcessingTimeTests::test_empty_result_does_not_store_metrics �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::MlBucketProcessingTimeTests::test_error_on_retrieval_does_not_store_metrics �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::MlBucketProcessingTimeTests::test_result_is_stored �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::IndexSizeTests::test_stores_index_size_for_data_paths �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/telemetry_test.py::IndexSizeTests::test_stores_nothing_if_no_data_path �[32mPASSED�[0m�[36m [ 18%]�[0m
tests/time_test.py::TimeTests::test_millis_conversion_roughly_in_expected_range �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/time_test.py::TimeTests::test_split_time_increases �[32mPASSED�[0m�[36m          [ 19%]�[0m
tests/time_test.py::TimeTests::test_total_time_roughly_in_expected_range �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/driver/driver_test.py::DriverTests::test_assign_drivers_round_robin �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/driver/driver_test.py::DriverTests::test_client_reaches_join_point_others_still_executing �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/driver/driver_test.py::DriverTests::test_client_reaches_join_point_which_completes_parent �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/driver/driver_test.py::DriverTests::test_start_benchmark_and_prepare_track �[32mPASSED�[0m�[36m [ 19%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_a_task_completes_the_parallel_structure �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_allocates_mixed_tasks �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_allocates_more_tasks_than_clients �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_allocates_one_task �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_allocates_two_parallel_tasks �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_allocates_two_serial_tasks �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::AllocatorTests::test_considers_number_of_clients_per_subtask �[32mPASSED�[0m�[36m [ 20%]�[0m
tests/driver/driver_test.py::MetricsAggregationTests::test_different_sample_types �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::MetricsAggregationTests::test_single_metrics_aggregation �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_finite_schedule_with_progress_indication �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_infinite_schedule_without_progress_indication �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_defaults_to_iteration_based �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_for_time_based �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_for_warmup_time_based �[32mPASSED�[0m�[36m [ 21%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_param_source_determines_iterations_including_warmup �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_param_source_determines_iterations_no_warmup �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_schedule_with_progress_determined_by_runner �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_search_task_one_client �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::SchedulerTests::test_search_task_two_clients �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_cancel_execute_schedule �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_schedule_aborts_on_error �[32mPASSED�[0m�[36m [ 22%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_schedule_in_throughput_mode �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_schedule_throughput_throttled �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_schedule_with_progress_determined_by_runner �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_dict �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_no_return_value �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_tuple �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_with_connection_error �[32mPASSED�[0m�[36m [ 23%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_with_http_400 �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/driver_test.py::ExecutorTests::test_execute_single_with_key_error �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/driver_test.py::ProfilerTests::test_profiler_is_a_transparent_wrapper �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/runner_test.py::RegisterRunnerTests::test_multi_cluster_runner_class_should_be_wrapped �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/runner_test.py::RegisterRunnerTests::test_multi_cluster_runner_class_with_context_manager_should_be_wrapped_with_context_manager_enabled �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/runner_test.py::RegisterRunnerTests::test_runner_function_should_be_wrapped �[32mPASSED�[0m�[36m [ 24%]�[0m
tests/driver/runner_test.py::RegisterRunnerTests::test_single_cluster_runner_class_should_be_wrapped �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::RegisterRunnerTests::test_single_cluster_runner_class_with_context_manager_should_be_wrapped_with_context_manager_enabled �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_error �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_error_no_shards �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_missing_params �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_success_with_metadata �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_success_without_metadata_and_without_doc_type �[32mPASSED�[0m�[36m [ 25%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_bulk_index_success_without_metadata_with_doc_type �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_mixed_bulk_with_detailed_stats �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::BulkIndexRunnerTests::test_mixed_bulk_with_simple_stats �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::ForceMergeRunnerTests::test_force_merge_override_request_timeout �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::ForceMergeRunnerTests::test_force_merge_with_defaults �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::ForceMergeRunnerTests::test_force_merge_with_params �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::ForceMergeRunnerTests::test_optimize_with_defaults �[32mPASSED�[0m�[36m [ 26%]�[0m
tests/driver/runner_test.py::ForceMergeRunnerTests::test_optimize_with_params �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_query_hits_total_as_number �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_query_match_all �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_query_match_all_doc_type_fallback �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_query_match_only_request_body_defined �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_query_match_using_request_params �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_cannot_clear_scroll �[32mPASSED�[0m�[36m [ 27%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_early_termination �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_no_request_cache �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_only_one_page �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_only_one_page_only_request_body_defined �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_request_all_pages �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::QueryRunnerTests::test_scroll_query_with_explicit_number_of_pages �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::PutPipelineRunnerTests::test_create_pipeline �[32mPASSED�[0m�[36m [ 28%]�[0m
tests/driver/runner_test.py::PutPipelineRunnerTests::test_param_body_mandatory �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::PutPipelineRunnerTests::test_param_id_mandatory �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::ClusterHealthRunnerTests::test_accepts_better_cluster_status �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::ClusterHealthRunnerTests::test_rejects_relocating_shards �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::ClusterHealthRunnerTests::test_rejects_unknown_cluster_status �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::ClusterHealthRunnerTests::test_waits_for_expected_cluster_status �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::CreateIndexRunnerTests::test_creates_multiple_indices �[32mPASSED�[0m�[36m [ 29%]�[0m
tests/driver/runner_test.py::CreateIndexRunnerTests::test_param_indices_mandatory �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::DeleteIndexRunnerTests::test_deletes_all_indices �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::DeleteIndexRunnerTests::test_deletes_existing_indices �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::CreateIndexTemplateRunnerTests::test_create_index_templates �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::CreateIndexTemplateRunnerTests::test_param_templates_mandatory �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::DeleteIndexTemplateRunnerTests::test_deletes_all_index_templates �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::DeleteIndexTemplateRunnerTests::test_deletes_only_existing_index_templates �[32mPASSED�[0m�[36m [ 30%]�[0m
tests/driver/runner_test.py::DeleteIndexTemplateRunnerTests::test_param_templates_mandatory �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::CreateMlDatafeedTests::test_create_ml_datafeed �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::CreateMlDatafeedTests::test_create_ml_datafeed_fallback �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::DeleteMlDatafeedTests::test_delete_ml_datafeed �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::DeleteMlDatafeedTests::test_delete_ml_datafeed_fallback �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::StartMlDatafeedTests::test_start_ml_datafeed_with_body �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::StartMlDatafeedTests::test_start_ml_datafeed_with_body_fallback �[32mPASSED�[0m�[36m [ 31%]�[0m
tests/driver/runner_test.py::StartMlDatafeedTests::test_start_ml_datafeed_with_params �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::CreateMlJobTests::test_create_ml_job �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::CreateMlJobTests::test_create_ml_job_fallback �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::DeleteMlJobTests::test_delete_ml_job �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::DeleteMlJobTests::test_delete_ml_job_fallback �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::OpenMlJobTests::test_open_ml_job �[32mPASSED�[0m�[36m     [ 32%]�[0m
tests/driver/runner_test.py::OpenMlJobTests::test_open_ml_job_fallback �[32mPASSED�[0m�[36m [ 32%]�[0m
tests/driver/runner_test.py::RawRequestRunnerTests::test_issue_create_index �[32mPASSED�[0m�[36m [ 33%]�[0m
tests/driver/runner_test.py::RawRequestRunnerTests::test_issue_delete_index �[32mPASSED�[0m�[36m [ 33%]�[0m
tests/driver/runner_test.py::RawRequestRunnerTests::test_issue_msearch �[32mPASSED�[0m�[36m [ 33%]�[0m
tests/driver/runner_test.py::RawRequestRunnerTests::test_issue_request_with_defaults �[32mPASSED�[0m�[36m [ 33%]�[0m
tests/driver/runner_test.py::SleepTests::test_missing_parameter �[32mPASSED�[0m�[36m   [ 33%]�[0m
tests/driver/runner_test.py::SleepTests::test_sleep �[32mPASSED�[0m�[36m               [ 33%]�[0m
tests/driver/runner_test.py::DeleteSnapshotRepositoryTests::test_delete_snapshot_repository �[32mPASSED�[0m�[36m [ 33%]�[0m
tests/driver/runner_test.py::CreateSnapshotRepositoryTests::test_create_snapshot_repository �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::RestoreSnapshotTests::test_restore_snapshot �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::RestoreSnapshotTests::test_restore_snapshot_with_body �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::IndicesRecoveryTests::test_indices_recovery_already_finished �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::IndicesRecoveryTests::test_waits_for_ongoing_indices_recovery �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::ShrinkIndexTests::test_shrink_index_derives_shrink_node �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::ShrinkIndexTests::test_shrink_index_with_shrink_node �[32mPASSED�[0m�[36m [ 34%]�[0m
tests/driver/runner_test.py::PutSettingsTests::test_put_settings �[32mPASSED�[0m�[36m  [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_assumes_success_if_runner_returns_non_dict �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_does_not_retry_on_application_error_if_not_wanted �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_does_not_retry_on_timeout_if_not_wanted �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_is_does_not_retry_on_success �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_is_transparent_on_application_error_when_no_retries �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_is_transparent_on_exception_when_no_retries �[32mPASSED�[0m�[36m [ 35%]�[0m
tests/driver/runner_test.py::RetryTests::test_is_transparent_on_success_when_no_retries �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/runner_test.py::RetryTests::test_retries_mixed_timeout_and_application_errors �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/runner_test.py::RetryTests::test_retries_on_application_error_if_wanted �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/runner_test.py::RetryTests::test_retries_on_timeout_if_wanted_and_raises_if_no_recovery �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/runner_test.py::RetryTests::test_retries_on_timeout_if_wanted_and_returns_first_call �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/runner_test.py::RetryTests::test_retries_until_success �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/scheduler_test.py::WaitTimeTests::test_calculate_wait_time_based_on_target_interval �[32mPASSED�[0m�[36m [ 36%]�[0m
tests/driver/scheduler_test.py::WaitTimeTests::test_calculate_wait_time_based_on_throughput �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::WaitTimeTests::test_calculate_wait_time_zero �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::WaitTimeTests::test_either_target_throughput_or_target_interval �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::DeterministicSchedulerTests::test_schedule_matches_expected_target_throughput �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::DeterministicSchedulerTests::test_schedule_unlimited �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::PoissonSchedulerTests::test_schedule_matches_expected_target_throughput �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/driver/scheduler_test.py::PoissonSchedulerTests::test_schedule_unlimited �[32mPASSED�[0m�[36m [ 37%]�[0m
tests/mechanic/java_resolver_test.py::JavaResolverTests::test_resolves_java_home_for_bundled_jdk �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/java_resolver_test.py::JavaResolverTests::test_resolves_java_home_for_default_runtime_jdk �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/java_resolver_test.py::JavaResolverTests::test_resolves_java_home_for_specific_runtime_jdk �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/launcher_test.py::ProcessLauncherTests::test_bundled_jdk_not_in_path �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/launcher_test.py::ProcessLauncherTests::test_daemon_start_stop �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/launcher_test.py::ProcessLauncherTests::test_daemon_stop_with_already_terminated_process �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/launcher_test.py::ProcessLauncherTests::test_env_options_order �[32mPASSED�[0m�[36m [ 38%]�[0m
tests/mechanic/launcher_test.py::DockerLauncherTests::test_container_not_started �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/launcher_test.py::DockerLauncherTests::test_starts_container_successfully �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/launcher_test.py::DockerLauncherTests::test_stops_container_successfully �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/mechanic_test.py::HostHandlingTests::test_converts_valid_hosts �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/mechanic_test.py::HostHandlingTests::test_extract_all_node_ips �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/mechanic_test.py::HostHandlingTests::test_groups_nodes_by_host �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/mechanic_test.py::HostHandlingTests::test_rejects_hosts_with_unexpected_properties �[32mPASSED�[0m�[36m [ 39%]�[0m
tests/mechanic/mechanic_test.py::MechanicTests::test_start_stop_nodes �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::BareProvisionerTests::test_prepare_distribution_ge_63_with_plugins �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::BareProvisionerTests::test_prepare_distribution_lt_63_with_plugins �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::BareProvisionerTests::test_prepare_without_plugins �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::ElasticsearchInstallerTests::test_invokes_hook_no_java_home �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::ElasticsearchInstallerTests::test_invokes_hook_with_java_home �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::ElasticsearchInstallerTests::test_prepare_default_data_paths �[32mPASSED�[0m�[36m [ 40%]�[0m
tests/mechanic/provisioner_test.py::ElasticsearchInstallerTests::test_prepare_user_provided_data_path �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_install_plugin_successfully �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_install_plugin_with_bundled_jdk �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_install_plugin_with_io_error �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_install_plugin_with_unknown_error �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_install_unknown_plugin �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_invokes_hook_no_java_home �[32mPASSED�[0m�[36m [ 41%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_invokes_hook_with_java_home �[32mPASSED�[0m�[36m [ 42%]�[0m
tests/mechanic/provisioner_test.py::PluginInstallerTests::test_pass_plugin_properties �[32mPASSED�[0m�[36m [ 42%]�[0m
tests/mechanic/provisioner_test.py::DockerProvisionerTests::test_provisioning_with_defaults �[32mPASSED�[0m�[36m [ 42%]�[0m
tests/mechanic/provisioner_test.py::DockerProvisionerTests::test_provisioning_with_variables �[32mPASSED�[0m�[36m [ 42%]�[0m
tests/mechanic/provisioner_test.py::CleanupTests::test_cleanup �[32mPASSED�[0m�[36m    [ 42%]�[0m
tests/mechanic/provisioner_test.py::CleanupTests::test_preserves �[32mPASSED�[0m�[36m  [ 42%]�[0m
tests/mechanic/supplier_test.py::RevisionExtractorTests::test_invalid_revisions �[32mPASSED�[0m�[36m [ 42%]�[0m
tests/mechanic/supplier_test.py::RevisionExtractorTests::test_multiple_revisions �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::RevisionExtractorTests::test_single_revision �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_checkout_current �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_checkout_revision �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_checkout_revision_for_local_only_repo �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_checkout_ts �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_intial_checkout_latest �[32mPASSED�[0m�[36m [ 43%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_is_commit_hash �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::SourceRepositoryTests::test_is_not_commit_hash �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::BuilderTests::test_build_on_jdk_10 �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::BuilderTests::test_build_on_jdk_8 �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::TemplateRendererTests::test_uses_derived_values �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::TemplateRendererTests::test_uses_provided_values �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::ElasticsearchSourceSupplierTests::test_add_elasticsearch_binary �[32mPASSED�[0m�[36m [ 44%]�[0m
tests/mechanic/supplier_test.py::ElasticsearchSourceSupplierTests::test_build �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ElasticsearchSourceSupplierTests::test_no_build �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ElasticsearchSourceSupplierTests::test_raises_error_on_missing_car_variable �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_add_binary_built_along_elasticsearch �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_along_es_plugin_keeps_build_dir �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_invalid_config_duplicate_source �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_invalid_config_no_source �[32mPASSED�[0m�[36m [ 45%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_resolve_plugin_binary_built_standalone �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::ExternalPluginSourceSupplierTests::test_standalone_plugin_overrides_build_dir �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::CorePluginSourceSupplierTests::test_resolve_plugin_binary �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::PluginDistributionSupplierTests::test_resolve_plugin_url �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_create_suppliers_for_es_and_plugin_source_build �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_create_suppliers_for_es_distribution_plugin_source_build �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_create_suppliers_for_es_distribution_plugin_source_skip �[32mPASSED�[0m�[36m [ 46%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_create_suppliers_for_es_missing_distribution_plugin_source_skip �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_create_suppliers_for_es_only_config �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_and_plugin_source_build �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_distribution �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_distribution_and_plugin_source_build �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_distribution_and_plugin_source_skip �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_source_build �[32mPASSED�[0m�[36m [ 47%]�[0m
tests/mechanic/supplier_test.py::CreateSupplierTests::test_derive_supply_requirements_es_source_skip �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_invalid_cache_value �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_missing_cache �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_missing_plugin_config �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_missing_url �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_plugin_config_with_default_url �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_plugin_config_with_user_url �[32mPASSED�[0m�[36m [ 48%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_release_repo_config_with_default_url �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/supplier_test.py::DistributionRepositoryTests::test_release_repo_config_with_user_url �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_lists_car_names �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_load_car_with_install_hook �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_load_car_with_mixin_multiple_config_bases �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_load_car_with_mixin_single_config_base �[32mPASSED�[0m�[36m [ 49%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_load_car_with_multiple_bases_referring_same_install_hook �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_load_known_car �[32mPASSED�[0m�[36m  [ 50%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_raises_error_if_more_than_one_different_install_hook �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_raises_error_on_empty_config_base �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_raises_error_on_missing_config_base �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::CarLoaderTests::test_raises_error_on_unknown_car �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_cannot_load_community_plugin_with_missing_config �[32mPASSED�[0m�[36m [ 50%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_cannot_load_plugin_with_missing_config �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_lists_plugins �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_loads_community_plugin_without_configuration �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_loads_configured_plugin �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::PluginLoaderTests::test_loads_core_plugin �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::BootstrapHookHandlerTests::test_cannot_register_for_unknown_phase �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/mechanic/team_test.py::BootstrapHookHandlerTests::test_loads_module �[32mPASSED�[0m�[36m [ 51%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_directory �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_directory_without_track �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_file �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_file_but_not_json �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_named_pipe �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::SimpleTrackRepositoryTests::test_track_from_non_existing_path �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::GitRepositoryTests::test_track_from_existing_repo �[32mPASSED�[0m�[36m [ 52%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_decompresses_if_archive_available �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_does_nothing_if_document_file_available �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_download_document_archive_if_no_file_available �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_download_document_file_if_no_file_available �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_prepare_bundled_document_set_decompresses_compressed_docs �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_prepare_bundled_document_set_does_nothing_if_no_document_files �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_prepare_bundled_document_set_error_compressed_docs_wrong_size �[32mPASSED�[0m�[36m [ 53%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_prepare_bundled_document_set_if_document_file_available �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_prepare_bundled_document_set_uncompressed_docs_wrong_size �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_download_error_if_no_url_provided_and_file_missing �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_download_error_if_no_url_provided_and_wrong_file_size �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_download_error_if_offline �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_download_error_no_test_mode_file �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_download_error_on_connection_problems �[32mPASSED�[0m�[36m [ 54%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_error_if_compressed_does_not_contain_expected_document_file �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_raise_error_on_wrong_uncompressed_file_size �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TrackPreparationTests::test_used_corpora �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TemplateSource::test_entrypoint_of_replace_includes �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TemplateSource::test_read_glob_files �[32mPASSED�[0m�[36m  [ 55%]�[0m
tests/track/loader_test.py::TemplateRenderTests::test_render_simple_template �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TemplateRenderTests::test_render_template_with_external_variables �[32mPASSED�[0m�[36m [ 55%]�[0m
tests/track/loader_test.py::TemplateRenderTests::test_render_template_with_globbing �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::TemplateRenderTests::test_render_template_with_variables �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::CompleteTrackParamsTests::test_check_complete_track_params_contains_all_track_params �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::CompleteTrackParamsTests::test_check_complete_track_params_does_not_fail_with_no_track_params �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::CompleteTrackParamsTests::test_unused_user_defined_track_params �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::CompleteTrackParamsTests::test_unused_user_defined_track_params_doesnt_fail_with_detaults �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::TrackPostProcessingTests::test_post_processes_track_spec �[32mPASSED�[0m�[36m [ 56%]�[0m
tests/track/loader_test.py::TrackPathTests::test_sets_absolute_path �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_create_filters_from_empty_filtered_tasks �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_create_filters_from_mixed_filtered_tasks �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_filters_exclude_tasks �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_filters_tasks �[32mPASSED�[0m�[36m  [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_rejects_invalid_syntax �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackFilterTests::test_rejects_unknown_filter_type �[32mPASSED�[0m�[36m [ 57%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_at_least_one_default_challenge �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_auto_generates_challenge_from_schedule �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_can_read_track_info �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_description_is_optional �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_document_count_mandatory_if_file_present �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_exactly_one_default_challenge �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_inline_operations �[32mPASSED�[0m�[36m [ 58%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_load_invalid_index_body �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_not_more_than_one_default_challenge_possible �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parallel_tasks_with_completed_by_set �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parallel_tasks_with_completed_by_set_multiple_tasks_match �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parallel_tasks_with_completed_by_set_no_task_matches �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parallel_tasks_with_default_clients_does_not_propagate �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parallel_tasks_with_default_values �[32mPASSED�[0m�[36m [ 59%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_challenge_and_challenges_are_defined �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_duplicate_explicit_task_names �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_duplicate_implicit_task_names �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_missing_challenge_or_challenges �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_unique_task_names �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_valid_track_specification �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_valid_track_specification_with_index_template �[32mPASSED�[0m�[36m [ 60%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_valid_without_types �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_with_mixed_warmup_iterations_and_measurement �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_parse_with_mixed_warmup_time_period_and_iterations �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_selects_sole_challenge_implicitly_as_default �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_supports_target_interval �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_supports_target_throughput �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/loader_test.py::TrackSpecificationReaderTests::test_unique_challenge_names �[32mPASSED�[0m�[36m [ 61%]�[0m
tests/track/params_test.py::SliceTests::test_slice_with_slice_larger_than_source �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::SliceTests::test_slice_with_source_larger_than_slice �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ConflictingIdsBuilderTests::test_no_id_conflicts �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ConflictingIdsBuilderTests::test_random_conflicts �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ConflictingIdsBuilderTests::test_sequential_conflicts �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_generate_action_meta_data_typeless �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_generate_action_meta_data_with_id_and_zero_conflict_probability �[32mPASSED�[0m�[36m [ 62%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_generate_action_meta_data_with_id_conflicts �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_generate_action_meta_data_with_id_conflicts_and_recency_bias �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_generate_action_meta_data_without_id_conflicts �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::ActionMetaDataTests::test_source_file_action_meta_data �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_larger_than_number_of_docs �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_smaller_than_number_of_docs �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_smaller_than_number_of_docs_and_multiple_clients �[32mPASSED�[0m�[36m [ 63%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_with_external_id_and_zero_conflict_probability �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_with_id_conflicts �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulk_with_offset �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::IndexDataReaderTests::test_read_bulks_and_assume_metadata_line_in_source_file �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::InvocationGeneratorTests::test_build_conflicting_ids �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::InvocationGeneratorTests::test_calculate_bounds �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::InvocationGeneratorTests::test_calculate_non_multiple_bounds �[32mPASSED�[0m�[36m [ 64%]�[0m
tests/track/params_test.py::InvocationGeneratorTests::test_calculate_number_of_bulks �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::InvocationGeneratorTests::test_iterator_chaining_respects_context_manager �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_valid_param_source �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_conflict_probability_not_numeric �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_conflict_probability_too_high �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_conflict_probability_too_low �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_conflict_probability_zero �[32mPASSED�[0m�[36m [ 65%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_fraction_larger_batch_size �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_fraction_smaller_batch_size �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_ingest_percentage_not_numeric �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_ingest_percentage_too_high �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_ingest_percentage_too_low �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_metadata_in_source_file_but_conflicts �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_negative_bulk_size �[32mPASSED�[0m�[36m [ 66%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_non_numeric_bulk_size �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_unknown_id_conflicts �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_with_unknown_on_conflict_setting �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_create_without_params �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_filters_corpora �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_ingests_all_documents_by_default �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_passes_all_corpora_by_default �[32mPASSED�[0m�[36m [ 67%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_raises_exception_if_no_corpus_matches �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::BulkIndexParamSourceTests::test_restricts_number_of_bulks_if_required �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::BulkDataGeneratorTests::test_generate_bulks_from_multiple_corpora �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::BulkDataGeneratorTests::test_generate_two_bulks �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::BulkDataGeneratorTests::test_internal_params_take_precedence �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::ParamsRegistrationTests::test_can_register_class_as_param_source �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::ParamsRegistrationTests::test_can_register_function_as_param_source �[32mPASSED�[0m�[36m [ 68%]�[0m
tests/track/params_test.py::ParamsRegistrationTests::test_can_register_legacy_class_as_param_source �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::ParamsRegistrationTests::test_can_register_legacy_function_as_param_source �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::SleepParamSourceTests::test_duration_parameter_negative_number �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::SleepParamSourceTests::test_duration_parameter_wrong_type �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::SleepParamSourceTests::test_missing_duration_parameter �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::SleepParamSourceTests::test_param_source_passes_all_parameters �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::CreateIndexParamSourceTests::test_create_index_from_track_with_settings �[32mPASSED�[0m�[36m [ 69%]�[0m
tests/track/params_test.py::CreateIndexParamSourceTests::test_create_index_from_track_without_settings �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::CreateIndexParamSourceTests::test_create_index_inline_with_body �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::CreateIndexParamSourceTests::test_create_index_inline_without_body �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::CreateIndexParamSourceTests::test_filter_index �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::DeleteIndexParamSourceTests::test_delete_index_by_name �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::DeleteIndexParamSourceTests::test_delete_index_from_track �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::DeleteIndexParamSourceTests::test_delete_no_index �[32mPASSED�[0m�[36m [ 70%]�[0m
tests/track/params_test.py::DeleteIndexParamSourceTests::test_filter_index_from_track �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::CreateIndexTemplateParamSourceTests::test_create_index_template_from_track �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::CreateIndexTemplateParamSourceTests::test_create_index_template_inline �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::DeleteIndexTemplateParamSourceTests::test_delete_index_template_by_name �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::DeleteIndexTemplateParamSourceTests::test_delete_index_template_by_name_and_matching_indices �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::DeleteIndexTemplateParamSourceTests::test_delete_index_template_by_name_and_matching_indices_missing_index_pattern �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::DeleteIndexTemplateParamSourceTests::test_delete_index_template_from_track �[32mPASSED�[0m�[36m [ 71%]�[0m
tests/track/params_test.py::SearchParamSourceTests::test_create_without_index �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::SearchParamSourceTests::test_passes_cache �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::SearchParamSourceTests::test_passes_request_parameters �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::SearchParamSourceTests::test_replaces_body_params �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::SearchParamSourceTests::test_user_specified_overrides_defaults �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::ForceMergeParamSourceTests::test_default_force_merge_index �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::ForceMergeParamSourceTests::test_force_merge_all_params �[32mPASSED�[0m�[36m [ 72%]�[0m
tests/track/params_test.py::ForceMergeParamSourceTests::test_force_merge_index_by_name �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/params_test.py::ForceMergeParamSourceTests::test_force_merge_index_from_track �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::TrackTests::test_default_challenge_none_if_no_challenges �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::TrackTests::test_does_not_find_unknown_challenge �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::TrackTests::test_finds_challenge_by_name �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::TrackTests::test_finds_default_challenge �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::TrackTests::test_uses_default_challenge_if_no_name_given �[32mPASSED�[0m�[36m [ 73%]�[0m
tests/track/track_test.py::IndexTests::test_matches_exactly �[32mPASSED�[0m�[36m       [ 74%]�[0m
tests/track/track_test.py::IndexTests::test_matches_if_catch_all_pattern_is_defined �[32mPASSED�[0m�[36m [ 74%]�[0m
tests/track/track_test.py::IndexTests::test_matches_if_no_pattern_is_defined �[32mPASSED�[0m�[36m [ 74%]�[0m
tests/track/track_test.py::IndexTests::test_str �[32mPASSED�[0m�[36m                   [ 74%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_cannot_union_mixed_document_corpora �[32mPASSED�[0m�[36m [ 74%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_do_not_filter �[32mPASSED�[0m�[36m [ 74%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_filter_documents_by_format �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_filter_documents_by_format_and_indices �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_filter_documents_by_indices �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_union_document_corpora_is_symmetric �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/track/track_test.py::DocumentCorpusTests::test_union_document_corpus_is_reflexive �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_global_rally_running_in_docker_is_false �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_global_rally_running_in_docker_is_false_if_unset �[32mPASSED�[0m�[36m [ 75%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_global_rally_running_in_docker_is_true �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_println_force_prints_even_when_quiet �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_println_isquiet_and_randomized_docker_or_istty �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::ConsoleFunctionTests::test_println_randomized_dockertrue_or_istty_and_isnotquiet �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[0] �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[1] �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[2] �[32mPASSED�[0m�[36m [ 76%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[3] �[32mPASSED�[0m�[36m [ 77%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[4] �[32mPASSED�[0m�[36m [ 77%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[5] �[32mPASSED�[0m�[36m [ 77%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_and_any_docker_or_istty[6] �[32mPASSED�[0m�[36m [ 77%]�[0m
tests/utils/console_test.py::TestCmdLineProgressReporter::test_print_when_isquiet_a…
@danielmitterdorfer danielmitterdorfer added enhancement Improves the status quo :Track Management New operations, changes in the track format, track download changes and the like highlight A substantial improvement that is worth mentioning separately in release notes labels Apr 21, 2020
@danielmitterdorfer danielmitterdorfer added this to the 1.5.0 milestone Apr 21, 2020
@danielmitterdorfer danielmitterdorfer self-assigned this Apr 21, 2020
Copy link
Contributor

@dliappis dliappis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for circling back to this one!

I left a request for a change due to the missing subcommand in the adding_tracks doc.

One thing that's not gonna work also is running generate-track via Docker -- which actually could be a useful thing. We can tackle this in a follow up PR.


If you already have a cluster with data in it you can use the ``generate-track`` subcommand of Rally to create a basic Rally track. To create a Rally track with data from the indices ``products`` and ``companies`` that are hosted by a locally running Elasticsearch cluster, issue the following command::

esrally --track=acme --target-hosts=127.0.0.1:9200 --indices="products,companies" --output-path=~/tracks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the generate-track subcommand missing here?

i.e. esrally generate-track ...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also a nit I'd general opt for create-track rather than generate-track.
I guess you wanted to be more explicit and ensure we can have a separate subcommand for the future that creates a skeleton track, but I reckon that'd be init-track. At any rate, a personal preference nit.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with that name and will change all references accordingly.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed in 1745eb4.


Target a single index::

esrally generate-track --track=acme --indices="products" --target-hosts=127.0.0.1:9200 --output-path=~/tracks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also applies to the initial example earlier: The reality is that the majority of real clusters where typically data will need to be sourced from (should) have security enabled. I think all our examples should come with TLS enabled client-options.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I have added an example with --client-options now in the track tutorial I am not so certain about the reference documentation? I'd reason that the examples in the reference should focus on the flag / subcommand that is documented and should be self-contained and minimal. However, we could add a note about TLS here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am ok if a TLS enabled example is shown only in the track tutorial; the idea was that a user can find a complete real-world example with a search.

Let's add a note about TLS here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed in 99b2317.

from esrally.utils import console


DOCS_COMPRESSOR = bz2.BZ2Compressor
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed offline, in a future PR let's honor pbzip2 if present. It'll be a huge productivity boost.

Copy link
Contributor

@dliappis dliappis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! There's a port missing in the first example in adding_tracks.


If you already have a cluster with data in it you can use the ``create-track`` subcommand of Rally to create a basic Rally track. To create a Rally track with data from the indices ``products`` and ``companies`` that are hosted by a locally running Elasticsearch cluster, issue the following command::

esrally create-track --track=acme --target-hosts=127.0.0.1: --indices="products,companies" --output-path=~/tracks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The port is missing here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D'oh! Added again in 4419794.


If TLS and basic authentication is enabled, also specify :ref:`--client-options <clr_client_options>` and change ``basic_auth_user`` and ``basic_auth_password`` accordingly::

esrally create-track --track=acme --target-hosts=127.0.0.1:9200 --client-options="timeout:60,use_ssl:true,verify_certs:false,basic_auth_user:'rally',basic_auth_password:'rally-password'" --indices="products,companies" --output-path=~/tracks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is we skip verify_certs:false here i.e. rely on the default true, and use as an example a URL from an imaginary Elastic Cloud cluster (and use e.g. basic_auth_user:'elastic', basic_auth_password:'a-secret-and-secure-password')

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit reluctant skipping certificate verification because I expect the default case to be a self-hosted cluster with self-signed certificates.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed elsewhere I've enabled certificate verification explicitly in 93aa889.

Copy link
Contributor

@dliappis dliappis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@danielmitterdorfer danielmitterdorfer merged commit ff29cde into elastic:master Apr 27, 2020
@danielmitterdorfer danielmitterdorfer deleted the tracker branch April 27, 2020 11:17
@danielmitterdorfer danielmitterdorfer changed the title Add tooling to generate a track from existing data Add tooling to create a track from existing data Apr 27, 2020
@danielmitterdorfer
Copy link
Member Author

Thanks for the review @dliappis!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improves the status quo highlight A substantial improvement that is worth mentioning separately in release notes :Track Management New operations, changes in the track format, track download changes and the like
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add tooling support to create bulk data file(s) from existing indices
2 participants