1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.tradefed.testtype.suite; 17 18 /** 19 * Helper class for operation related to merging {@link ITestSuite} and {@link ModuleDefinition} 20 * after a split. 21 */ 22 public class ModuleMerger { 23 mergeModules(ModuleDefinition module1, ModuleDefinition module2)24 private static void mergeModules(ModuleDefinition module1, ModuleDefinition module2) { 25 if (!module1.getId().equals(module2.getId())) { 26 throw new IllegalArgumentException( 27 String.format( 28 "Modules must have the same id to be mergeable: received %s and " 29 + "%s", 30 module1.getId(), module2.getId())); 31 } 32 module1.addTests(module2.getTests()); 33 } 34 35 /** 36 * Merge the modules from one suite to another. 37 * 38 * @param suite1 the suite that will receive the module from the other. 39 * @param suite2 the suite that will give the module. 40 */ mergeSplittedITestSuite(ITestSuite suite1, ITestSuite suite2)41 public static void mergeSplittedITestSuite(ITestSuite suite1, ITestSuite suite2) { 42 if (suite1.getDirectModule() == null) { 43 throw new IllegalArgumentException("suite was not a splitted suite."); 44 } 45 if (suite2.getDirectModule() == null) { 46 throw new IllegalArgumentException("suite was not a splitted suite."); 47 } 48 mergeModules(suite1.getDirectModule(), suite2.getDirectModule()); 49 } 50 51 /** Returns true if the two suites are part of the same original split. False otherwise. */ arePartOfSameSuite(ITestSuite suite1, ITestSuite suite2)52 public static boolean arePartOfSameSuite(ITestSuite suite1, ITestSuite suite2) { 53 if (suite1.getDirectModule() == null) { 54 return false; 55 } 56 if (suite2.getDirectModule() == null) { 57 return false; 58 } 59 if (!suite1.getDirectModule().getId().equals(suite2.getDirectModule().getId())) { 60 return false; 61 } 62 return true; 63 } 64 } 65