[INFO] fetching crate oximedia-analytics 0.1.2... [INFO] testing oximedia-analytics-0.1.2 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] extracting crate oximedia-analytics 0.1.2 into /workspace/builds/worker-6-tc2/source [INFO] started tweaking crates.io crate oximedia-analytics 0.1.2 [INFO] finished tweaking crates.io crate oximedia-analytics 0.1.2 [INFO] tweaked toml for crates.io crate oximedia-analytics 0.1.2 written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate oximedia-analytics 0.1.2 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oximedia-analytics 0.1.2 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6a1b6e4273854b2e932a6b0ab8d432dd7694bd9dc84f1204b2958c3ddd9551b3 [INFO] running `Command { std: "docker" "start" "-a" "6a1b6e4273854b2e932a6b0ab8d432dd7694bd9dc84f1204b2958c3ddd9551b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6a1b6e4273854b2e932a6b0ab8d432dd7694bd9dc84f1204b2958c3ddd9551b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6a1b6e4273854b2e932a6b0ab8d432dd7694bd9dc84f1204b2958c3ddd9551b3", kill_on_drop: false }` [INFO] [stdout] 6a1b6e4273854b2e932a6b0ab8d432dd7694bd9dc84f1204b2958c3ddd9551b3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ebc7d5dd643b44418584526c55464a887404943a8e7a2b90cde665ab9f01dbbd [INFO] running `Command { std: "docker" "start" "-a" "ebc7d5dd643b44418584526c55464a887404943a8e7a2b90cde665ab9f01dbbd", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling oximedia-analytics v0.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.47s [INFO] running `Command { std: "docker" "inspect" "ebc7d5dd643b44418584526c55464a887404943a8e7a2b90cde665ab9f01dbbd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ebc7d5dd643b44418584526c55464a887404943a8e7a2b90cde665ab9f01dbbd", kill_on_drop: false }` [INFO] [stdout] ebc7d5dd643b44418584526c55464a887404943a8e7a2b90cde665ab9f01dbbd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 5def81d6eee948dfa5830f7fa47efa1160bc09a5ab9ec50377dc4800a8c47e52 [INFO] running `Command { std: "docker" "start" "-a" "5def81d6eee948dfa5830f7fa47efa1160bc09a5ab9ec50377dc4800a8c47e52", kill_on_drop: false }` [INFO] [stderr] Compiling oximedia-analytics v0.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 2.25s [INFO] running `Command { std: "docker" "inspect" "5def81d6eee948dfa5830f7fa47efa1160bc09a5ab9ec50377dc4800a8c47e52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5def81d6eee948dfa5830f7fa47efa1160bc09a5ab9ec50377dc4800a8c47e52", kill_on_drop: false }` [INFO] [stdout] 5def81d6eee948dfa5830f7fa47efa1160bc09a5ab9ec50377dc4800a8c47e52 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] c4217ee155c98331a0347303dde51aa5990be1026c12343b287f943b70398d24 [INFO] running `Command { std: "docker" "start" "-a" "c4217ee155c98331a0347303dde51aa5990be1026c12343b287f943b70398d24", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oximedia_analytics-2a8896bf9ac165e0) [INFO] [stdout] [INFO] [stdout] running 188 tests [INFO] [stdout] test ab_testing::tests::alpha_to_critical_z_values ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_deterministic_same_user ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_no_variants_returns_error ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_single_variant ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_different_users_may_differ ... ok [INFO] [stdout] test ab_testing::tests::average_watch_duration_basic ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_weighted_distribution ... ok [INFO] [stdout] test ab_testing::tests::bayesian_winner_zero_impressions_returns_error ... ok [INFO] [stdout] test ab_testing::tests::bayesian_winner_missing_variant_returns_error ... ok [INFO] [stdout] test ab_testing::tests::click_through_rate_basic ... ok [INFO] [stdout] test ab_testing::tests::assign_variant_zero_weight_returns_error ... ok [INFO] [stdout] test ab_testing::tests::click_through_rate_zero_impressions ... ok [INFO] [stdout] test ab_testing::tests::completion_rate_basic ... ok [INFO] [stdout] test ab_testing::tests::experiment_results_record_methods ... ok [INFO] [stdout] test ab_testing::tests::is_significant_alpha_05 ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_no_impressions_returns_none ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_by_ctr ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_with_alpha_no_impressions ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_with_alpha_same_result_as_default ... ok [INFO] [stdout] test ab_testing::tests::z_test_large_difference_significant ... ok [INFO] [stdout] test attribution::tests::normalised_credit_sums_to_one ... ok [INFO] [stdout] test attribution::tests::position_weighted_second_half_gets_more_credit ... ok [INFO] [stdout] test attribution::tests::uniform_equal_segments_equal_credit ... ok [INFO] [stdout] test bandit::tests::arm_empirical_mean_correct ... ok [INFO] [stdout] test bandit::tests::arm_empirical_mean_zero_pulls ... ok [INFO] [stdout] test attribution::tests::attribution_empty_segments_error ... ok [INFO] [stdout] test bandit::tests::arm_new_has_jeffreys_prior ... ok [INFO] [stdout] test bandit::tests::arm_rankings_sorted_descending ... ok [INFO] [stdout] test attribution::tests::attribution_empty_sessions_error ... ok [INFO] [stdout] test bandit::tests::bandit_new_single_arm ... ok [INFO] [stdout] test ab_testing::tests::is_significant_alpha_01 ... ok [INFO] [stdout] test bandit::tests::arm_record_outcome_updates_stats ... ok [INFO] [stdout] test bandit::tests::bandit_new_empty_arms_returns_error ... ok [INFO] [stdout] test ab_testing::tests::bayesian_winner_conversion_metric ... ok [INFO] [stdout] test ab_testing::tests::bayesian_winner_b_clearly_beats_a ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_by_completion ... ok [INFO] [stdout] test ab_testing::tests::winning_variant_with_alpha_01 ... ok [INFO] [stdout] test ab_testing::tests::z_test_zero_sample_returns_zero ... ok [INFO] [stdout] test attribution::tests::attribution_zero_duration_error ... ok [INFO] [stdout] test bandit::tests::epsilon_greedy_always_exploits_at_zero_epsilon ... ok [INFO] [stdout] test ab_testing::tests::z_test_no_difference ... ok [INFO] [stdout] test bandit::tests::epsilon_greedy_converges_to_best_arm ... ok [INFO] [stdout] test bandit::tests::epsilon_greedy_explores_at_full_epsilon ... ok [INFO] [stdout] test bandit::tests::regret_never_negative ... ok [INFO] [stdout] test bandit::tests::regret_tracker_accumulates_correctly ... ok [INFO] [stdout] test bandit::tests::regret_tracker_no_steps ... ok [INFO] [stdout] test bandit::tests::thompson_sampling_returns_valid_arm_index ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_day1_partial_retention ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_empty_users_returns_zeros ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_empty_events_returns_zeros ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_events_before_cohort_date_ignored ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_gradual_decay ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_length_equals_periods_plus_one ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_multi_period_full_retention ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_non_cohort_events_ignored ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_period0_full_retention ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_zero_retention_after_day0 ... ok [INFO] [stdout] test cohort::tests::cohort_matrix_cells_cover_all_periods ... ok [INFO] [stdout] test cohort::tests::period_offset_event_before_cohort_clamps_to_zero ... ok [INFO] [stdout] test cohort::tests::period_offset_next_day_is_one ... ok [INFO] [stdout] test cohort::cohort_analyzer_tests::retention_curve_user_active_multiple_times_same_day_counted_once ... ok [INFO] [stdout] test cohort::tests::cohort_single_cohort_period0_full_retention ... ok [INFO] [stdout] test cohort::tests::cohort_empty_events_returns_error ... ok [INFO] [stdout] test cohort::tests::truncate_ms_day_mid_day ... ok [INFO] [stdout] test cohort::tests::period_offset_next_week_is_one ... ok [INFO] [stdout] test cohort::tests::truncate_ms_day_epoch_start ... ok [INFO] [stdout] test cohort::tests::period_offset_same_period_is_zero ... ok [INFO] [stdout] test cohort::tests::cohort_first_period_viewer_is_in_earliest_cohort ... ok [INFO] [stdout] test cohort::tests::cohort_average_retention_weighted ... ok [INFO] [stdout] test cohort::tests::truncate_ms_week_stable_within_week ... ok [INFO] [stdout] test engagement::tests::engagement_components_watch_time_capped ... ok [INFO] [stdout] test bandit::tests::thompson_sampling_converges_to_best_arm ... ok [INFO] [stdout] test engagement::tests::engagement_empty_sessions ... ok [INFO] [stdout] test cohort::tests::cohort_viewer_counted_once_per_period ... ok [INFO] [stdout] test engagement::tests::engagement_forward_seek_penalty ... ok [INFO] [stdout] test cohort::tests::truncate_ms_month_same_month ... ok [INFO] [stdout] test engagement::tests::engagement_full_watch_high_score ... ok [INFO] [stdout] test cohort::tests::truncate_ms_week_epoch_is_thursday ... ok [INFO] [stdout] test engagement::tests::engagement_rewatch_detected ... ok [INFO] [stdout] test engagement::tests::engagement_partial_watch_lower_score ... ok [INFO] [stdout] test engagement::tests::engagement_content_id_from_first_session ... ok [INFO] [stdout] test cohort::tests::truncate_ms_month_different_months ... ok [INFO] [stdout] test engagement::tests::engagement_trend_slope_method ... ok [INFO] [stdout] test ab_testing::tests::bayesian_winner_equal_variants_around_50pct ... ok [INFO] [stdout] test engagement::tests::engagement_social_score_placeholder ... ok [INFO] [stdout] test ab_testing::tests::conversion_rate_basic ... ok [INFO] [stdout] test cohort::tests::cohort_two_cohorts ... ok [INFO] [stdout] test engagement::tests::engagement_weights_default_sum_to_one ... ok [INFO] [stdout] test engagement::tests::engagement_zero_duration ... ok [INFO] [stdout] test engagement::tests::ranker_single_item ... ok [INFO] [stdout] test engagement::tests::ranker_empty_input ... ok [INFO] [stdout] test engagement::tests::ranker_sorted_descending ... ok [INFO] [stdout] test engagement::tests::slope_flat ... ok [INFO] [stdout] test engagement::tests::slope_perfectly_decreasing ... ok [INFO] [stdout] test engagement::tests::slope_perfectly_increasing ... ok [INFO] [stdout] test engagement::tests::slope_single_point_returns_zero ... ok [INFO] [stdout] test engagement::tests::slope_two_points ... ok [INFO] [stdout] test funnel::tests::churn_high_risk_strong_decline ... ok [INFO] [stdout] test funnel::tests::churn_insufficient_data_returns_error ... ok [INFO] [stdout] test funnel::tests::churn_low_engagement_always_high_risk ... ok [INFO] [stdout] test funnel::tests::funnel_all_viewers_reach_all_milestones ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_multiple_users_independent ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_overall_completion_rate ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_partial_conversion ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_three_step_funnel ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_time_window_exceeded_resets ... ok [INFO] [stdout] test funnel::tests::funnel_empty_milestones_returns_error ... ok [INFO] [stdout] test funnel::tests::funnel_dropout_midway ... ok [INFO] [stdout] test funnel::tests::funnel_empty_sessions_returns_error ... ok [INFO] [stdout] test funnel::tests::loyalty_churned_viewer ... ok [INFO] [stdout] test funnel::tests::loyalty_empty_sessions ... ok [INFO] [stdout] test funnel::tests::loyalty_mismatched_lengths_error ... ok [INFO] [stdout] test funnel::tests::loyalty_perfect_viewer ... ok [INFO] [stdout] test quantile::tests::percentiles_empty_returns_error ... ok [INFO] [stdout] test quantile::tests::percentiles_basic ... ok [INFO] [stdout] test quantile::tests::tdigest_invalid_quantile ... ok [INFO] [stdout] test quantile::tests::tdigest_empty_returns_error ... ok [INFO] [stdout] test funnel::tests::churn_low_risk_growing_engagement ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_conversion_rates_sum_correctly ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_empty_sessions ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_single_step_single_user ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_no_step0_users_conversion_rate_is_zero ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_empty_steps_returns_empty_report ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_full_conversion_two_steps ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_irrelevant_events_ignored ... ok [INFO] [stdout] test quantile::tests::tdigest_merge_produces_consistent_quantiles ... ok [INFO] [stdout] test quantile::tests::percentiles_out_of_range_error ... ok [INFO] [stdout] test realtime::tests::peak_concurrent_tracked_per_bucket ... ok [INFO] [stdout] test quantile::tests::tdigest_min_max_exact ... ok [INFO] [stdout] test quantile::tests::tdigest_single_value ... ok [INFO] [stdout] test quantile::tests::tdigest_uniform_distribution_p50 ... ok [INFO] [stdout] test realtime::tests::aggregator_new_invalid_params ... ok [INFO] [stdout] test quantile::tests::tdigest_uniform_distribution_p95 ... ok [INFO] [stdout] test realtime::tests::aggregator_new_valid ... ok [INFO] [stdout] test realtime::tests::bitrate_stats_basic ... ok [INFO] [stdout] test realtime::tests::bitrate_stats_empty_window ... ok [INFO] [stdout] test realtime::tests::buffer_events_counted ... ok [INFO] [stdout] test realtime::tests::window_evicts_old_buckets ... ok [INFO] [stdout] test retention::tests::average_view_duration_linear_decay ... ok [INFO] [stdout] test retention::tests::average_view_duration_empty_curve ... ok [INFO] [stdout] test retention::tests::benchmark_constants_values ... ok [INFO] [stdout] test realtime::tests::concurrent_viewers_does_not_go_negative ... ok [INFO] [stdout] test retention::tests::compare_to_benchmark_perfect_match ... ok [INFO] [stdout] test retention::tests::average_view_duration_full_retention ... ok [INFO] [stdout] test retention::tests::compute_retention_basic ... ok [INFO] [stdout] test retention::tests::compute_retention_empty_sessions ... ok [INFO] [stdout] test retention::tests::compute_retention_incremental_empty_sessions ... ok [INFO] [stdout] test retention::tests::compare_to_benchmark_empty_curve ... ok [INFO] [stdout] test retention::tests::compute_retention_single_bucket ... ok [INFO] [stdout] test retention::tests::content_segment_duration_ms_saturates_on_underflow ... ok [INFO] [stdout] test retention::tests::drop_off_points_detects_large_drop ... ok [INFO] [stdout] test retention::tests::drop_off_points_no_drop ... ok [INFO] [stdout] test retention::tests::compute_retention_completed_views ... ok [INFO] [stdout] test retention::tests::incremental_state_add_sessions_incrementally ... ok [INFO] [stdout] test retention::tests::content_segment_duration_ms ... ok [INFO] [stdout] test quantile::tests::tdigest_large_dataset_p99 ... ok [INFO] [stdout] test retention::tests::compare_to_benchmark_below_benchmark ... ok [INFO] [stdout] test realtime::tests::concurrent_viewers_join_leave ... ok [INFO] [stdout] test quantile::tests::tdigest_centroid_count_bounded ... ok [INFO] [stdout] test funnel::tests::funnel_analyzer_step0_first_conversion_rate_always_one ... ok [INFO] [stdout] test retention::tests::incremental_state_matches_batch_compute ... ok [INFO] [stdout] test retention::tests::incremental_state_new_invalid_returns_none ... ok [INFO] [stdout] test retention::tests::re_watch_segments_detected ... ok [INFO] [stdout] test retention::tests::re_watch_segments_none ... ok [INFO] [stdout] test retention::tests::retention_curve_total_starts_matches_sessions ... ok [INFO] [stdout] test retention::tests::segment_retention_empty_sessions ... ok [INFO] [stdout] test retention::tests::segment_retention_partial_viewers ... ok [INFO] [stdout] test session::tests::build_map_no_events_returns_all_false ... ok [INFO] [stdout] test session::tests::analyze_session_no_end_event ... ok [INFO] [stdout] test session::tests::analyze_session_zero_duration ... ok [INFO] [stdout] test session::tests::build_map_play_pause_play_end ... ok [INFO] [stdout] test retention::tests::segment_retention_all_viewers_watch_all_segments ... ok [INFO] [stdout] test session::tests::build_map_play_then_end ... ok [INFO] [stdout] test session::tests::build_map_seek_forward ... ok [INFO] [stdout] test session::tests::analyze_session_basic ... ok [INFO] [stdout] test retention::tests::segment_retention_empty_segments ... ok [INFO] [stdout] test session::tests::heatmap_empty_sessions ... ok [INFO] [stdout] test session::tests::heatmap_bucket_positions_correct ... ok [INFO] [stdout] test session::tests::heatmap_single_session_full_watch ... ok [INFO] [stdout] test session::tests::playback_map_coverage_full ... ok [INFO] [stdout] test session::tests::heatmap_zero_bucket_ms_returns_empty ... ok [INFO] [stdout] test session::tests::playback_map_coverage_half ... ok [INFO] [stdout] test session::tests::playback_map_coverage_zero_duration ... ok [INFO] [stdout] test session::tests::playback_map_empty_range_is_noop ... ok [INFO] [stdout] test session::tests::playback_map_mark_range_basic ... ok [INFO] [stdout] test session::tests::playback_map_mark_range_clamps_to_capacity ... ok [INFO] [stdout] test session::tests::viewer_session_new ... ok [INFO] [stdout] test session::tests::viewer_session_push_event ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 188 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Doc-tests oximedia_analytics [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test src/quantile.rs - quantile::TDigest (line 41) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "c4217ee155c98331a0347303dde51aa5990be1026c12343b287f943b70398d24", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c4217ee155c98331a0347303dde51aa5990be1026c12343b287f943b70398d24", kill_on_drop: false }` [INFO] [stdout] c4217ee155c98331a0347303dde51aa5990be1026c12343b287f943b70398d24