extends GutTest const BenchmarkScript := preload("res://simulation/benchmark/RegionalScaleBenchmark.gd") func test_exact_regional_workload_round_trips_and_conserves_membership() -> void: var benchmark := BenchmarkScript.new() var state := benchmark.build_fixture(BenchmarkScript.FIXED_SEED) assert_not_null(state) var audit := benchmark.audit_fixture(state) assert_true(audit["valid"]) assert_eq(state.get_all_locations().size(), 5) assert_eq(state.get_all_settlements().size(), 5) assert_eq(state.get_all_mobile_groups().size(), 20) assert_eq(audit["detailed_caravan_member_count"], 240) assert_eq(audit["named_person_count"], 2000) assert_eq(audit["cohort_resident_count"], 50000) assert_eq(audit["total_headcount"], 52000) for group in state.get_all_mobile_groups(): assert_eq(group.get_detailed_member_ids().size(), 12) assert_eq(state.get_persons_in_group(group.get_group_id()).size(), 12) var serialized := state.to_dictionary() var restored := RegionalWorldState.from_dictionary(serialized) assert_not_null(restored) assert_eq(restored.to_dictionary(), serialized) assert_eq(restored.checksum(), state.checksum()) assert_almost_eq( float(benchmark.audit_fixture(restored)["cargo_total"]), float(audit["cargo_total"]), 0.0001 ) func test_scheduler_budgets_and_three_repeats_preserve_order_and_checksum() -> void: var benchmark := BenchmarkScript.new() var budget_one := benchmark.run(1) var budget_eight := benchmark.run(8) var budget_eight_repeat_a := benchmark.run(8) var budget_eight_repeat_b := benchmark.run(8) var unlimited := benchmark.run(RegionalJobScheduler.UNLIMITED_BUDGET) for result in [ budget_one, budget_eight, budget_eight_repeat_a, budget_eight_repeat_b, unlimited ]: _assert_valid_result(result) for result in [budget_one, unlimited, budget_eight_repeat_a, budget_eight_repeat_b]: assert_eq(result["execution_order"], budget_eight["execution_order"]) assert_eq(result["execution_order_checksum"], budget_eight["execution_order_checksum"]) assert_eq(result["final_checksum"], budget_eight["final_checksum"]) assert_eq(result["fixture_checksum"], budget_eight["fixture_checksum"]) assert_eq(result["regional_state_bytes"], budget_eight["regional_state_bytes"]) assert_eq(budget_one["drain_batches"], budget_one["initial_job_count"]) assert_eq(budget_one["max_batch_size"], 1) assert_eq(budget_eight["drain_batches"], ceili(float(budget_eight["initial_job_count"]) / 8.0)) assert_eq(budget_eight["max_batch_size"], 8) assert_eq(unlimited["drain_batches"], 1) assert_eq(unlimited["max_batch_size"], unlimited["initial_job_count"]) func _assert_valid_result(result: Dictionary) -> void: assert_false(result.is_empty()) if result.is_empty(): return assert_eq(result["schema_version"], 1) assert_eq(StringName(result["workload_id"]), &"regional_records_scheduler_v1") assert_eq(result["benchmark_scope"], "regional_data_and_scheduler_only") assert_false(result["rendered_throughput_measured"]) assert_false(result["full_economy_throughput_measured"]) assert_eq(result["seed"], 424242) assert_eq(result["location_count"], 5) assert_eq(result["settlement_count"], 5) assert_eq(result["caravan_count"], 20) assert_eq(result["detailed_members_per_caravan"], 12) assert_eq(result["detailed_caravan_member_count"], 240) assert_eq(result["named_person_count"], 2000) assert_eq(result["cohort_resident_count"], 50000) assert_eq(result["total_headcount"], 52000) assert_eq(result["max_active_visuals"], 40) assert_true(result["fixture_valid"]) assert_true(result["roundtrip_valid"]) assert_true(result["headcount_conserved"]) assert_true(result["cargo_conserved"]) assert_eq(result["initial_job_count"], 2025) assert_eq(result["executed_job_count"], 2025) assert_eq(result["backlog_initial"], 2025) assert_eq(result["backlog_peak"], 2025) assert_eq(result["backlog_final"], 0) assert_gt(result["regional_state_bytes"], 0) assert_gt(result["scheduler_state_bytes"], 0) for timing_key in [ "fixture_build_usec", "roundtrip_usec", "scheduler_build_usec", "execution_usec", "elapsed_usec", ]: assert_gt(result[timing_key], 0) assert_eq(String(result["fixture_checksum"]).length(), 64) assert_eq(String(result["execution_order_checksum"]).length(), 64) assert_eq(String(result["final_checksum"]).length(), 64)