6
6
import com .typesafe .config .Config ;
7
7
import com .typesafe .config .ConfigFactory ;
8
8
import com .typesafe .config .ConfigParseOptions ;
9
+ import java .util .Collections ;
9
10
import org .gradle .profiler .mutations .ApplyAbiChangeToSourceFileMutator ;
10
11
import org .gradle .profiler .mutations .ApplyChangeToAndroidLayoutFileMutator ;
11
12
import org .gradle .profiler .mutations .ApplyChangeToAndroidManifestFileMutator ;
@@ -220,72 +221,19 @@ static List<ScenarioDefinition> loadScenarios(File scenarioFile, InvocationSetti
220
221
int buildCount = getBuildCount (settings , scenario );
221
222
File scenarioBaseDir = new File (settings .getOutputDir (), GradleScenarioDefinition .safeFileName (scenarioName ));
222
223
223
- if (scenario .hasPath (BAZEL ) && settings .isBazel ()) {
224
- Config executionInstructions = getConfig (scenarioFile , settings , scenarioName , scenario , BAZEL , BAZEL_KEYS );
225
-
226
- List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
227
- File bazelHome = getToolHome (executionInstructions );
228
- File outputDir = new File (scenarioBaseDir , "bazel" );
229
- int warmUpCount = getWarmUpCount (settings , scenario );
230
- definitions .add (new BazelScenarioDefinition (scenarioName , title , targets , mutators , warmUpCount , buildCount , outputDir , bazelHome ));
231
- } else if (scenario .hasPath (BUCK ) && settings .isBuck ()) {
232
- Config executionInstructions = getConfig (scenarioFile , settings , scenarioName , scenario , BUCK , BUCK_KEYS );
233
- List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
234
- String type = ConfigUtil .string (executionInstructions , TYPE , null );
235
- File buckHome = getToolHome (executionInstructions );
236
- File outputDir = new File (scenarioBaseDir , "buck" );
237
- int warmUpCount = getWarmUpCount (settings , scenario );
238
- definitions .add (new BuckScenarioDefinition (scenarioName , title , targets , type , mutators , warmUpCount , buildCount , outputDir , buckHome ));
239
- } else if (scenario .hasPath (MAVEN ) && settings .isMaven ()) {
240
- Config executionInstructions = getConfig (scenarioFile , settings , scenarioName , scenario , MAVEN , MAVEN_KEYS );
241
- List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
242
- File mavenHome = getToolHome (executionInstructions );
243
- File outputDir = new File (scenarioBaseDir , "maven" );
244
- int warmUpCount = getWarmUpCount (settings , scenario );
245
- definitions .add (new MavenScenarioDefinition (scenarioName , title , targets , mutators , warmUpCount , buildCount , outputDir , mavenHome ));
246
- } else if (!settings .isBazel () && !settings .isBuck () && !settings .isMaven ()) {
247
- List <GradleBuildConfiguration > versions = ConfigUtil .strings (scenario , VERSIONS , settings .getVersions ()).stream ().map (inspector ::readConfiguration ).collect (
248
- Collectors .toList ());
249
- if (versions .isEmpty ()) {
250
- versions .add (inspector .readConfiguration ());
251
- }
252
-
253
- List <String > gradleArgs = ConfigUtil .strings (scenario , GRADLE_ARGS );
254
- BuildAction buildAction = getBuildAction (scenario , scenarioFile , settings );
255
- GradleBuildInvoker invoker = invoker (scenario , (GradleBuildInvoker ) settings .getInvoker (), buildAction );
256
- int warmUpCount = getWarmUpCount (settings , invoker , scenario );
257
- List <String > measuredBuildOperations = getMeasuredBuildOperations (settings , scenario );
258
- BuildAction cleanupAction = getCleanupAction (scenario );
259
- Map <String , String > systemProperties = ConfigUtil .map (scenario , SYSTEM_PROPERTIES , settings .getSystemProperties ());
260
- List <String > jvmArgs = ConfigUtil .strings (scenario , JVM_ARGS );
261
- for (GradleBuildConfiguration version : versions ) {
262
- File outputDir = versions .size () == 1 ? scenarioBaseDir : new File (scenarioBaseDir , version .getGradleVersion ().getVersion ());
263
- definitions .add (new GradleScenarioDefinition (
264
- scenarioName ,
265
- title ,
266
- invoker ,
267
- version ,
268
- buildAction ,
269
- cleanupAction ,
270
- gradleArgs ,
271
- systemProperties ,
272
- mutators ,
273
- warmUpCount ,
274
- buildCount ,
275
- outputDir ,
276
- jvmArgs ,
277
- measuredBuildOperations
278
- ));
279
- }
280
- }
224
+ definitions .addAll (
225
+ getScenarioDefinitions (
226
+ scenarioFile , settings , scenarioName , scenario , title , mutators , buildCount ,
227
+ scenarioBaseDir , inspector )
228
+ );
281
229
}
282
230
283
231
definitions .forEach (ScenarioDefinition ::validate );
284
232
285
233
return definitions ;
286
234
}
287
235
288
- private static Config getConfig (File scenarioFile , InvocationSettings settings , String scenarioName , Config scenario , String toolName , List <String > toolKeys ) {
236
+ private static Config getExecutionInstructions (File scenarioFile , InvocationSettings settings , String scenarioName , Config scenario , String toolName , List <String > toolKeys ) {
289
237
if (settings .isProfile ()) {
290
238
throw new IllegalArgumentException ("Can only profile scenario '" + scenarioName + "' when building using Gradle." );
291
239
}
@@ -298,6 +246,128 @@ private static Config getConfig(File scenarioFile, InvocationSettings settings,
298
246
return executionInstructions ;
299
247
}
300
248
249
+ private static List <ScenarioDefinition > getScenarioDefinitions (File scenarioFile ,
250
+ InvocationSettings settings , String scenarioName , Config scenario , String title ,
251
+ List <BuildMutator > mutators , int buildCount , File scenarioBaseDir ,
252
+ GradleBuildConfigurationReader inspector ) {
253
+ List <? extends ScenarioDefinition > scenarioDefinitions ;
254
+ if (scenario .hasPath (BAZEL ) && settings .isBazel ()) {
255
+ scenarioDefinitions = getBazelScenarioDefinitions (
256
+ scenarioFile , settings , scenarioName , scenario , title , mutators , buildCount ,
257
+ scenarioBaseDir );
258
+ } else if (scenario .hasPath (BUCK ) && settings .isBuck ()) {
259
+ scenarioDefinitions = getBuckScenarioDefinitions (
260
+ scenarioFile , settings , scenarioName , scenario , title , mutators , buildCount ,
261
+ scenarioBaseDir );
262
+ } else if (scenario .hasPath (MAVEN ) && settings .isMaven ()) {
263
+ scenarioDefinitions = getMavenScenarioDefinitions (
264
+ scenarioFile , settings , scenarioName , scenario , title , mutators , buildCount ,
265
+ scenarioBaseDir );
266
+ } else if (!settings .isBazel () && !settings .isBuck () && !settings .isMaven ()) {
267
+ scenarioDefinitions = getGradleScenarioDefinitions (
268
+ scenarioFile , settings , scenarioName , scenario , title , mutators , buildCount ,
269
+ scenarioBaseDir , inspector
270
+ );
271
+ } else {
272
+ scenarioDefinitions = Collections .emptyList ();
273
+ }
274
+ return Collections .unmodifiableList (scenarioDefinitions );
275
+ }
276
+
277
+ private static List <GradleScenarioDefinition > getGradleScenarioDefinitions (
278
+ File scenarioFile ,
279
+ InvocationSettings settings , String scenarioName , Config scenario , String title ,
280
+ List <BuildMutator > mutators , int buildCount , File scenarioBaseDir ,
281
+ GradleBuildConfigurationReader inspector
282
+ ) {
283
+ List <GradleScenarioDefinition > scenarioDefinitions = new ArrayList <>();
284
+ List <GradleBuildConfiguration > versions = ConfigUtil
285
+ .strings (scenario , VERSIONS , settings .getVersions ()).stream ()
286
+ .map (inspector ::readConfiguration ).collect (
287
+ Collectors .toList ());
288
+ if (versions .isEmpty ()) {
289
+ versions .add (inspector .readConfiguration ());
290
+ }
291
+
292
+ List <String > gradleArgs = ConfigUtil .strings (scenario , GRADLE_ARGS );
293
+ BuildAction buildAction = getBuildAction (scenario , scenarioFile , settings );
294
+ GradleBuildInvoker invoker = invoker (scenario ,
295
+ (GradleBuildInvoker ) settings .getInvoker (), buildAction );
296
+ int warmUpCount = getWarmUpCount (settings , invoker , scenario );
297
+ List <String > measuredBuildOperations = getMeasuredBuildOperations (settings ,
298
+ scenario );
299
+ BuildAction cleanupAction = getCleanupAction (scenario );
300
+ Map <String , String > systemProperties = ConfigUtil
301
+ .map (scenario , SYSTEM_PROPERTIES , settings .getSystemProperties ());
302
+ List <String > jvmArgs = ConfigUtil .strings (scenario , JVM_ARGS );
303
+ for (GradleBuildConfiguration version : versions ) {
304
+ File outputDir = versions .size () == 1 ? scenarioBaseDir
305
+ : new File (scenarioBaseDir , version .getGradleVersion ().getVersion ());
306
+ scenarioDefinitions .add (new GradleScenarioDefinition (
307
+ scenarioName ,
308
+ title ,
309
+ invoker ,
310
+ version ,
311
+ buildAction ,
312
+ cleanupAction ,
313
+ gradleArgs ,
314
+ systemProperties ,
315
+ mutators ,
316
+ warmUpCount ,
317
+ buildCount ,
318
+ outputDir ,
319
+ jvmArgs ,
320
+ measuredBuildOperations
321
+ ));
322
+ }
323
+ return scenarioDefinitions ;
324
+ }
325
+
326
+ private static List <MavenScenarioDefinition > getMavenScenarioDefinitions (File scenarioFile ,
327
+ InvocationSettings settings , String scenarioName , Config scenario , String title ,
328
+ List <BuildMutator > mutators , int buildCount , File scenarioBaseDir ) {
329
+
330
+ Config executionInstructions = getExecutionInstructions (scenarioFile , settings , scenarioName ,
331
+ scenario , MAVEN , MAVEN_KEYS );
332
+ List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
333
+ File mavenHome = getToolHome (executionInstructions );
334
+ File outputDir = new File (scenarioBaseDir , "maven" );
335
+ int warmUpCount = getWarmUpCount (settings , scenario );
336
+ return Arrays .asList (new MavenScenarioDefinition (scenarioName ,
337
+ title , targets , mutators , warmUpCount ,
338
+ buildCount , outputDir , mavenHome ));
339
+ }
340
+
341
+ private static List <BuckScenarioDefinition > getBuckScenarioDefinitions (File scenarioFile ,
342
+ InvocationSettings settings , String scenarioName , Config scenario , String title ,
343
+ List <BuildMutator > mutators , int buildCount , File scenarioBaseDir ) {
344
+ Config executionInstructions = getExecutionInstructions (scenarioFile , settings , scenarioName ,
345
+ scenario , BUCK , BUCK_KEYS );
346
+ List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
347
+ String type = ConfigUtil .string (executionInstructions , TYPE , null );
348
+ File buckHome = getToolHome (executionInstructions );
349
+ File outputDir = new File (scenarioBaseDir , "buck" );
350
+ int warmUpCount = getWarmUpCount (settings , scenario );
351
+ return Arrays
352
+ .asList (new BuckScenarioDefinition (scenarioName , title , targets , type , mutators ,
353
+ warmUpCount , buildCount , outputDir , buckHome ));
354
+ }
355
+
356
+ private static List <BazelScenarioDefinition > getBazelScenarioDefinitions (File scenarioFile ,
357
+ InvocationSettings settings , String scenarioName , Config scenario , String title ,
358
+ List <BuildMutator > mutators , int buildCount , File scenarioBaseDir ) {
359
+ Config executionInstructions = getExecutionInstructions (scenarioFile , settings , scenarioName , scenario ,
360
+ BAZEL , BAZEL_KEYS );
361
+
362
+ List <String > targets = ConfigUtil .strings (executionInstructions , TARGETS );
363
+ File bazelHome = getToolHome (executionInstructions );
364
+ File outputDir = new File (scenarioBaseDir , "bazel" );
365
+ int warmUpCount = getWarmUpCount (settings , scenario );
366
+ return Arrays .asList (new BazelScenarioDefinition (
367
+ scenarioName , title , targets , mutators , warmUpCount , buildCount , outputDir ,
368
+ bazelHome ));
369
+ }
370
+
301
371
private static ImmutableList <String > getMeasuredBuildOperations (InvocationSettings settings , Config scenario ) {
302
372
return ImmutableSet .<String >builder ()
303
373
.addAll (settings .getMeasuredBuildOperations ())
0 commit comments