Skip to content

Commit 56b0e6f

Browse files
authored
Rebalance CI test shard weights (#3563)
1 parent aa40b4a commit 56b0e6f

1 file changed

Lines changed: 104 additions & 12 deletions

File tree

scripts/select_ci_test_shard.py

Lines changed: 104 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,112 @@
1414
RECIPE_VERSION = 1
1515
TESTS_ROOT = Path("tests")
1616
WEIGHT_OVERRIDES = {
17-
"tests/main/test_main_general.py": 300_000,
18-
"tests/test_main_kr.py": 250_000,
19-
"tests/main/jsonschema/test_main_jsonschema.py": 200_000,
20-
"tests/main/openapi/test_main_openapi.py": 200_000,
21-
"tests/main/xmlschema/test_main_xmlschema.py": 180_000,
22-
"tests/parser/test_jsonschema.py": 180_000,
23-
"tests/parser/test_openapi.py": 180_000,
17+
# Rounded milliseconds from a full local pytest --durations run on 2026-07-03.
18+
"tests/main/asyncapi/test_main_asyncapi.py": 420,
19+
"tests/main/avro/test_main_avro.py": 2_270,
20+
"tests/main/graphql/test_annotated.py": 80,
21+
"tests/main/graphql/test_main_graphql.py": 1_180,
22+
"tests/main/jsonschema/test_main_jsonschema.py": 13_210,
23+
"tests/main/openapi/test_main_openapi.py": 7_530,
24+
"tests/main/protobuf/test_main_protobuf.py": 520,
25+
"tests/main/test_cli_fast_paths.py": 1_710,
26+
"tests/main/test_dynamic_models.py": 550,
27+
"tests/main/test_error_messages.py": 40,
28+
"tests/main/test_exec_validation.py": 320,
29+
"tests/main/test_generation_determinism.py": 860,
30+
"tests/main/test_jsonschema_suite_conformance.py": 1,
31+
"tests/main/test_main_csv.py": 50,
32+
"tests/main/test_main_general.py": 3_990,
33+
"tests/main/test_main_json.py": 120,
34+
"tests/main/test_main_watch.py": 2_220,
35+
"tests/main/test_main_yaml.py": 40,
36+
"tests/main/test_parsed_source_cache_parity.py": 50,
37+
"tests/main/test_performance.py": 1,
38+
"tests/main/test_public_api_signature_baseline.py": 170,
39+
"tests/main/test_types.py": 1,
40+
"tests/main/xmlschema/test_main_xmlschema.py": 810,
41+
"tests/model/dataclass/test_param.py": 1,
42+
"tests/model/pydantic_v2/test_base_model.py": 1,
43+
"tests/model/pydantic_v2/test_config.py": 1,
44+
"tests/model/pydantic_v2/test_dataclass.py": 1,
45+
"tests/model/pydantic_v2/test_root_model.py": 1,
46+
"tests/model/pydantic_v2/test_root_model_type_alias.py": 1,
47+
"tests/model/pydantic_v2/test_types.py": 1,
48+
"tests/model/pydantic_v2/test_version.py": 1,
49+
"tests/model/test_base.py": 10,
50+
"tests/model/test_dataclass.py": 1,
51+
"tests/parser/test_base.py": 990,
52+
"tests/parser/test_default_put_dict.py": 1,
53+
"tests/parser/test_generation.py": 1,
54+
"tests/parser/test_generation_store_usage.py": 200,
55+
"tests/parser/test_graph.py": 1,
56+
"tests/parser/test_graphql.py": 190,
57+
"tests/parser/test_imports.py": 230,
58+
"tests/parser/test_jsonschema.py": 200,
59+
"tests/parser/test_openapi.py": 1_960,
60+
"tests/parser/test_scc.py": 100,
61+
"tests/parser/test_schema_version.py": 210,
62+
"tests/parser/test_xmlschema.py": 50,
63+
"tests/skills/datamodel-code-generator/test_skill_flag_drift.py": 50,
64+
"tests/skills/datamodel-code-generator/test_skill_recipes.py": 3_700,
65+
"tests/test_assert_helper_usage.py": 190,
66+
"tests/test_build_architecture_docs_script.py": 380,
67+
"tests/test_build_conformance_docs_script.py": 50,
68+
"tests/test_build_deprecation_docs_script.py": 100,
69+
"tests/test_build_docs_examples_script.py": 40,
70+
"tests/test_build_experimental_docs_script.py": 100,
71+
"tests/test_build_llms_txt_script.py": 50,
72+
"tests/test_build_playground_assets_script.py": 1,
73+
"tests/test_build_preset_docs_script.py": 490,
74+
"tests/test_build_release_benchmark_docs_script.py": 1_340,
75+
"tests/test_build_schema_docs_script.py": 220,
76+
"tests/test_conftest_helpers.py": 1,
77+
"tests/test_deprecations.py": 1,
78+
"tests/test_enums.py": 1,
79+
"tests/test_experimental.py": 1,
80+
"tests/test_format.py": 6_170,
81+
"tests/test_generate_changelog_script.py": 230,
82+
"tests/test_http.py": 1_090,
83+
"tests/test_imports.py": 1,
84+
"tests/test_infer_input_type.py": 110,
85+
"tests/test_input_model.py": 1_630,
86+
"tests/test_main_kr.py": 3_920,
87+
"tests/test_package_metadata.py": 380,
88+
"tests/test_prompt.py": 1,
89+
"tests/test_reference.py": 1,
90+
"tests/test_resolver.py": 1,
91+
"tests/test_select_ci_test_shard_script.py": 250,
92+
"tests/test_types.py": 10,
93+
"tests/test_update_command_help_on_markdown_script.py": 1,
94+
"tests/test_util.py": 40,
95+
"tests/test_validate_release_draft_analysis_script.py": 1,
96+
"tests/test_validators.py": 1,
97+
"tests/test_yaml_backend.py": 1,
2498
}
2599
SPLIT_NODE_WEIGHT_OVERRIDES = {
26-
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_accepts_schema_derived_payloads": 500_000,
27-
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_dumps_schema_valid_payloads": 500_000,
28-
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_rejects_schema_invalid_payloads": 260_000,
29-
f"{PAYLOAD_VALIDATION_FILE}::test_generated_payload_backend_accepts_representative_schema_payloads": 80_000,
30-
f"{PAYLOAD_VALIDATION_FILE}::test_generated_payload_backend_rejects_representative_schema_invalid_payloads": 80_000,
100+
f"{PAYLOAD_VALIDATION_FILE}::test_generated_payload_backend_accepts_representative_schema_payloads": 3_330,
101+
f"{PAYLOAD_VALIDATION_FILE}::test_generated_payload_backend_rejects_representative_schema_invalid_payloads": 850,
102+
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_accepts_schema_derived_payloads": 109_400,
103+
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_dumps_schema_valid_payloads": 106_910,
104+
f"{PAYLOAD_VALIDATION_FILE}::test_generated_pydantic_v2_model_rejects_schema_invalid_payloads": 58_170,
105+
f"{PAYLOAD_VALIDATION_FILE}::test_msgspec_schema_runtime_exclusions_cover_known_semantic_gaps": 1,
106+
f"{PAYLOAD_VALIDATION_FILE}::test_msgspec_schema_runtime_exclusions_detect_untyped_fractional_multiple_of": 1,
107+
f"{PAYLOAD_VALIDATION_FILE}::test_msgspec_schema_runtime_exclusions_ignore_literal_payloads": 1,
108+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_backend_all_case_mode_widens_runtime_validating_backends": 10,
109+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_backend_case_mode_env_is_configurable": 1,
110+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_backend_case_mode_env_rejects_invalid_values": 1,
111+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_backend_full_matrix_exclusions_are_classified": 1,
112+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_backend_representative_matrix_is_classified": 1,
113+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_max_examples_env_is_configurable": 1,
114+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_max_examples_env_rejects_invalid_values": 1,
115+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_rejection_oracle_covers_supported_policy_constraints": 20,
116+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_rejection_oracle_policy_is_classified": 10,
117+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_round_trip_exclusions_are_classified": 1,
118+
f"{PAYLOAD_VALIDATION_FILE}::test_payload_validation_cases_cover_discovered_schema_files": 690,
119+
f"{PAYLOAD_VALIDATION_FILE}::test_pydantic_round_trip_exclusions_cover_uri_unique_items_normalization": 1,
120+
f"{PAYLOAD_VALIDATION_FILE}::test_pydantic_v2_dataclass_legacy_exclusions_cover_fractional_multiple_of": 1,
121+
f"{PAYLOAD_VALIDATION_FILE}::test_pydantic_v2_legacy_runtime_exclusions_are_classified": 1,
122+
f"{PAYLOAD_VALIDATION_FILE}::test_pydantic_v2_legacy_runtime_exclusions_are_version_gated": 1,
31123
}
32124

33125

0 commit comments

Comments
 (0)