1 /* 2 * Copyright (C) 2018 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.retry; 17 18 /** Describes how the results should be aggregated when multiple attempts are present. */ 19 public enum MergeStrategy { 20 /** Merging should not be applied and will throw an exception. */ 21 NO_MERGE, 22 /** If a single test case pass then we will consider the merged result passed. */ 23 ONE_TESTCASE_PASS_IS_PASS, 24 /** If a single test run pass then we will consider the merged run result passed. */ 25 ONE_TESTRUN_PASS_IS_PASS, 26 /** If a single run or test cases is a pass we will consider the merged results passed. */ 27 ANY_PASS_IS_PASS, 28 /** If a single run or test cases is failed, status will be failed no matter what. */ 29 ANY_FAIL_IS_FAIL; 30 31 /** Create a merge strategy based on the retry strategy. */ getMergeStrategy(RetryStrategy retryStrategy)32 public static MergeStrategy getMergeStrategy(RetryStrategy retryStrategy) { 33 // TODO: Expand to take into account more context: postsubmit vs. presubmit 34 MergeStrategy strategy = MergeStrategy.ONE_TESTCASE_PASS_IS_PASS; 35 switch (retryStrategy) { 36 case ITERATIONS: 37 strategy = MergeStrategy.ANY_FAIL_IS_FAIL; 38 break; 39 case RERUN_UNTIL_FAILURE: 40 strategy = MergeStrategy.ANY_FAIL_IS_FAIL; 41 break; 42 case RETRY_ANY_FAILURE: 43 strategy = MergeStrategy.ANY_PASS_IS_PASS; 44 break; 45 case NO_RETRY: 46 strategy = MergeStrategy.ANY_FAIL_IS_FAIL; 47 break; 48 } 49 return strategy; 50 } 51 } 52