1 /*
2  * Copyright (C) 2019 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 import com.android.tradefed.testtype.IRemoteTest;
19 
20 import java.util.List;
21 
22 /**
23  * Structure holding the statistics for a retry session of one {@link IRemoteTest}. Not all fields
24  * might be populated depending of the {@link com.android.tradefed.retry.RetryStrategy}.
25  */
26 public class RetryStatistics {
27     // The time spent in retry. Always populated if retries or iterations occurred
28     public long mRetryTime = 0L;
29 
30     // Success and failure counts. Populated for RETRY_ANY_FAILURE.
31     public long mRetrySuccess = 0L;
32     public long mRetryFailure = 0L;
33 
34     /** Helper method to aggregate the statistics of several retries. */
aggregateStatistics(List<RetryStatistics> stats)35     public static final RetryStatistics aggregateStatistics(List<RetryStatistics> stats) {
36         RetryStatistics aggregatedStats = new RetryStatistics();
37         for (RetryStatistics s : stats) {
38             aggregatedStats.mRetryTime += s.mRetryTime;
39             aggregatedStats.mRetrySuccess += s.mRetrySuccess;
40             aggregatedStats.mRetryFailure += s.mRetryFailure;
41         }
42         return aggregatedStats;
43     }
44 }
45