Skip to content

Commit fd907cb

Browse files
bcorsoDagger Team
authored andcommitted
Allow sharding for Dagger compiler tests.
Recently, some of our tests have started timing out on GitHub Actions (https://github.com/google/dagger/actions/runs/6355090490/job/17262572158?pr=4082): ``` //javatests/dagger/internal/codegen:ComponentProcessorTest TIMEOUT in 315.2s ``` This CL adds the ability to shard some of our large and medium sized tests. RELNOTES=N/A PiperOrigin-RevId: 569752153
1 parent 558cc51 commit fd907cb

File tree

2 files changed

+118
-43
lines changed

2 files changed

+118
-43
lines changed

javatests/dagger/internal/codegen/BUILD

Lines changed: 106 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -51,74 +51,137 @@ java_library(
5151
srcs = [
5252
"CompilerMode.java",
5353
"Compilers.java",
54+
"ComponentCreatorTestHelper.java",
55+
"DaggerModuleMethodSubject.java",
56+
"GeneratingProcessingStep.java",
5457
"JavaFileBuilder.java",
58+
"TestUtils.java",
5559
],
5660
deps = [
61+
"//java/dagger:core",
5762
"//java/dagger/internal/codegen:package_info",
5863
"//java/dagger/internal/codegen:processor",
64+
"//java/dagger/internal/codegen/base",
65+
"//java/dagger/internal/codegen/binding",
66+
"//java/dagger/internal/codegen/xprocessing",
5967
"//java/dagger/internal/codegen/xprocessing:xprocessing-testing",
68+
"//java/dagger/producers",
6069
"//java/dagger/testing/compile",
6170
"//third_party/java/compile_testing",
6271
"//third_party/java/guava/base",
6372
"//third_party/java/guava/collect",
73+
"//third_party/java/javapoet",
74+
"//third_party/java/truth",
6475
"@com_google_auto_value_auto_value//jar",
6576
],
6677
)
6778

79+
# These are tests with over 25 test cases.
80+
LARGE_TESTS = [
81+
"ComponentCreatorTest.java",
82+
"ComponentProcessorTest.java",
83+
"InjectConstructorFactoryGeneratorTest.java",
84+
"MembersInjectionTest.java",
85+
"MissingBindingValidationTest.java",
86+
"ModuleFactoryGeneratorTest.java",
87+
"ProducerModuleFactoryGeneratorTest.java",
88+
"SubcomponentCreatorValidationTest.java",
89+
]
90+
91+
# These are tests with over 10 test cases
92+
MEDIUM_TESTS = [
93+
"BindsMethodValidationTest.java",
94+
"DaggerSuperficialValidationTest.java",
95+
"DelegateRequestRepresentationTest.java",
96+
"DuplicateBindingsValidationTest.java",
97+
"IgnoreProvisionKeyWildcardsTest.java",
98+
"MapMultibindingValidationTest.java",
99+
"MultibindsValidationTest.java",
100+
"ProductionComponentProcessorTest.java",
101+
"ProductionGraphValidationTest.java",
102+
"SubcomponentValidationTest.java",
103+
]
104+
105+
DEPS = [
106+
":compilers",
107+
":java_lib_no_dagger_compiler",
108+
":kt_lib_no_dagger_compiler",
109+
"//third_party/java/guava/base",
110+
"//third_party/java/guava/collect",
111+
"//third_party/java/guava/util/concurrent",
112+
"//third_party/java/auto:value",
113+
"@com_google_auto_value_auto_value//jar",
114+
"//third_party/java/auto:common",
115+
"//third_party/java/compile_testing",
116+
"//third_party/java/javapoet",
117+
"//third_party/java/jsr250_annotations", # Include @Generated in generated files.
118+
"//third_party/java/jsr330_inject",
119+
"//third_party/java/junit",
120+
"//third_party/java/mockito",
121+
"//third_party/java/truth",
122+
"//java/dagger:core",
123+
"//java/dagger/internal/codegen:package_info",
124+
"//java/dagger/internal/codegen:processor",
125+
"//java/dagger/internal/codegen/base",
126+
"//java/dagger/internal/codegen/binding",
127+
"//java/dagger/internal/codegen/bindinggraphvalidation",
128+
"//java/dagger/internal/codegen/compileroption",
129+
"//java/dagger/internal/codegen/extension",
130+
"//java/dagger/internal/codegen/javac",
131+
"//java/dagger/internal/codegen/javapoet",
132+
"//java/dagger/internal/codegen/kotlin",
133+
"//java/dagger/internal/codegen/langmodel",
134+
"//java/dagger/internal/codegen/model",
135+
"//java/dagger/internal/codegen/validation",
136+
"//java/dagger/internal/codegen/writing",
137+
"//java/dagger/internal/codegen/xprocessing",
138+
"//java/dagger/internal/codegen/xprocessing:xprocessing-testing",
139+
"//java/dagger/model/testing",
140+
"//java/dagger/producers",
141+
"//java/dagger/spi",
142+
"//java/dagger/spi/model/testing",
143+
"//java/dagger/testing/compile",
144+
"//java/dagger/testing/golden",
145+
]
146+
147+
GenJavaTests(
148+
name = "large_compiler_tests",
149+
srcs = LARGE_TESTS,
150+
functional = False,
151+
javacopts = DOCLINT_HTML_AND_SYNTAX,
152+
plugins = ["//java/dagger/internal/codegen/bootstrap"],
153+
shard_count = 7,
154+
deps = DEPS,
155+
)
156+
157+
GenJavaTests(
158+
name = "medium_compiler_tests",
159+
srcs = MEDIUM_TESTS,
160+
functional = False,
161+
javacopts = DOCLINT_HTML_AND_SYNTAX,
162+
plugins = ["//java/dagger/internal/codegen/bootstrap"],
163+
shard_count = 3,
164+
deps = DEPS,
165+
)
166+
68167
GenJavaTests(
69168
name = "compiler_tests",
70169
srcs = glob(
71170
["*.java"],
72171
exclude = [
73-
"ComponentProcessorTestClasses.java",
74172
"CompilerMode.java",
75173
"Compilers.java",
174+
"ComponentCreatorTestHelper.java",
175+
"ComponentProcessorTestClasses.java",
176+
"DaggerModuleMethodSubject.java",
177+
"GeneratingProcessingStep.java",
76178
"InvalidInjectConstructor.java",
77179
"JavaFileBuilder.java",
78-
],
180+
"TestUtils.java",
181+
] + LARGE_TESTS + MEDIUM_TESTS,
79182
),
80183
functional = False,
81184
javacopts = DOCLINT_HTML_AND_SYNTAX,
82185
plugins = ["//java/dagger/internal/codegen/bootstrap"],
83-
deps = [
84-
":compilers",
85-
":java_lib_no_dagger_compiler",
86-
":kt_lib_no_dagger_compiler",
87-
"//java/dagger:core",
88-
"//java/dagger/internal/codegen:package_info",
89-
"//java/dagger/internal/codegen:processor",
90-
"//java/dagger/internal/codegen/base",
91-
"//java/dagger/internal/codegen/binding",
92-
"//java/dagger/internal/codegen/bindinggraphvalidation",
93-
"//java/dagger/internal/codegen/compileroption",
94-
"//java/dagger/internal/codegen/extension",
95-
"//java/dagger/internal/codegen/javac",
96-
"//java/dagger/internal/codegen/javapoet",
97-
"//java/dagger/internal/codegen/kotlin",
98-
"//java/dagger/internal/codegen/langmodel",
99-
"//java/dagger/internal/codegen/model",
100-
"//java/dagger/internal/codegen/validation",
101-
"//java/dagger/internal/codegen/writing",
102-
"//java/dagger/internal/codegen/xprocessing",
103-
"//java/dagger/internal/codegen/xprocessing:xprocessing-testing",
104-
"//java/dagger/model/testing",
105-
"//java/dagger/producers",
106-
"//java/dagger/spi",
107-
"//java/dagger/spi/model/testing",
108-
"//java/dagger/testing/compile",
109-
"//java/dagger/testing/golden",
110-
"//third_party/java/auto:common",
111-
"//third_party/java/auto:value",
112-
"//third_party/java/compile_testing",
113-
"//third_party/java/guava/base",
114-
"//third_party/java/guava/collect",
115-
"//third_party/java/guava/util/concurrent",
116-
"//third_party/java/javapoet",
117-
"//third_party/java/jsr250_annotations", # Include @Generated in generated files.
118-
"//third_party/java/jsr330_inject",
119-
"//third_party/java/junit",
120-
"//third_party/java/mockito",
121-
"//third_party/java/truth",
122-
"@com_google_auto_value_auto_value//jar",
123-
],
186+
deps = DEPS,
124187
)

test_defs.bzl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def GenKtLibrary(
5050
deps = deps,
5151
gen_library_deps = gen_library_deps,
5252
test_only_deps = None,
53+
shard_count = None,
5354
plugins = plugins,
5455
javacopts = javacopts,
5556
functional = functional,
@@ -64,6 +65,7 @@ def GenKtTests(
6465
test_only_deps = None,
6566
plugins = None,
6667
javacopts = None,
68+
shard_count = None,
6769
functional = True,
6870
require_jdk7_syntax = True):
6971
_GenTestsWithVariants(
@@ -76,6 +78,7 @@ def GenKtTests(
7678
test_only_deps = test_only_deps,
7779
plugins = plugins,
7880
javacopts = javacopts,
81+
shard_count = shard_count,
7982
functional = functional,
8083
require_jdk7_syntax = require_jdk7_syntax,
8184
)
@@ -101,6 +104,7 @@ def GenJavaLibrary(
101104
test_only_deps = None,
102105
plugins = plugins,
103106
javacopts = javacopts,
107+
shard_count = None,
104108
functional = functional,
105109
require_jdk7_syntax = require_jdk7_syntax,
106110
)
@@ -113,6 +117,7 @@ def GenJavaTests(
113117
test_only_deps = None,
114118
plugins = None,
115119
javacopts = None,
120+
shard_count = None,
116121
functional = True,
117122
require_jdk7_syntax = True):
118123
if any([src for src in srcs if src.endswith(".kt")]):
@@ -127,6 +132,7 @@ def GenJavaTests(
127132
test_only_deps = test_only_deps,
128133
plugins = plugins,
129134
javacopts = javacopts,
135+
shard_count = shard_count,
130136
functional = functional,
131137
require_jdk7_syntax = require_jdk7_syntax,
132138
)
@@ -138,6 +144,7 @@ def GenRobolectricTests(
138144
test_only_deps = None,
139145
plugins = None,
140146
javacopts = None,
147+
shard_count = None,
141148
functional = True,
142149
require_jdk7_syntax = True,
143150
manifest_values = None):
@@ -152,6 +159,7 @@ def GenRobolectricTests(
152159
test_only_deps = test_only_deps,
153160
plugins = plugins,
154161
javacopts = javacopts,
162+
shard_count = shard_count,
155163
functional = functional,
156164
require_jdk7_syntax = require_jdk7_syntax,
157165
test_kwargs = {"manifest_values": manifest_values},
@@ -167,6 +175,7 @@ def _GenTestsWithVariants(
167175
test_only_deps,
168176
plugins,
169177
javacopts,
178+
shard_count,
170179
functional,
171180
require_jdk7_syntax,
172181
test_kwargs = None):
@@ -242,6 +251,7 @@ def _GenTestsWithVariants(
242251
deps = test_deps + variant_deps,
243252
plugins = plugins,
244253
javacopts = javacopts + variant_javacopts,
254+
shard_count = shard_count,
245255
jvm_flags = jvm_flags,
246256
functional = functional,
247257
test_kwargs = test_kwargs,
@@ -291,6 +301,7 @@ def _GenTestWithVariant(
291301
deps,
292302
plugins,
293303
javacopts,
304+
shard_count,
294305
jvm_flags,
295306
functional,
296307
test_kwargs):
@@ -319,6 +330,7 @@ def _GenTestWithVariant(
319330
jvm_flags = jvm_flags,
320331
plugins = plugins,
321332
tags = tags,
333+
shard_count = shard_count,
322334
test_class = test_class,
323335
deps = deps,
324336
**test_kwargs_with_javacopts

0 commit comments

Comments
 (0)