xref: /aosp_15_r20/external/cronet/test_runner/src/com.android.tests.chromium.host/GTestsMetaData.java (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker /*
2*6777b538SAndroid Build Coastguard Worker  * Copyright (C) 2023 The Android Open Source Project
3*6777b538SAndroid Build Coastguard Worker  *
4*6777b538SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*6777b538SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*6777b538SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*6777b538SAndroid Build Coastguard Worker  *
8*6777b538SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*6777b538SAndroid Build Coastguard Worker  *
10*6777b538SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*6777b538SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*6777b538SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*6777b538SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*6777b538SAndroid Build Coastguard Worker  * limitations under the License.
15*6777b538SAndroid Build Coastguard Worker  */
16*6777b538SAndroid Build Coastguard Worker 
17*6777b538SAndroid Build Coastguard Worker package com.android.tests.chromium.host;
18*6777b538SAndroid Build Coastguard Worker 
19*6777b538SAndroid Build Coastguard Worker import com.google.gson.JsonElement;
20*6777b538SAndroid Build Coastguard Worker import com.google.gson.JsonParser;
21*6777b538SAndroid Build Coastguard Worker 
22*6777b538SAndroid Build Coastguard Worker import java.io.File;
23*6777b538SAndroid Build Coastguard Worker import java.io.FileReader;
24*6777b538SAndroid Build Coastguard Worker import java.io.IOException;
25*6777b538SAndroid Build Coastguard Worker 
26*6777b538SAndroid Build Coastguard Worker public class GTestsMetaData {
27*6777b538SAndroid Build Coastguard Worker 
28*6777b538SAndroid Build Coastguard Worker     private final boolean isOutputParsedCorrectly;
29*6777b538SAndroid Build Coastguard Worker     private final int totalTests;
30*6777b538SAndroid Build Coastguard Worker     private final int failedTests;
31*6777b538SAndroid Build Coastguard Worker 
GTestsMetaData(int totalTests, int failedTests, boolean isOutputParsedCorrectly)32*6777b538SAndroid Build Coastguard Worker     private GTestsMetaData(int totalTests, int failedTests, boolean isOutputParsedCorrectly) {
33*6777b538SAndroid Build Coastguard Worker         this.totalTests = totalTests;
34*6777b538SAndroid Build Coastguard Worker         this.failedTests = failedTests;
35*6777b538SAndroid Build Coastguard Worker         this.isOutputParsedCorrectly = isOutputParsedCorrectly;
36*6777b538SAndroid Build Coastguard Worker     }
37*6777b538SAndroid Build Coastguard Worker 
isOutputParsedCorrectly()38*6777b538SAndroid Build Coastguard Worker     public boolean isOutputParsedCorrectly() {
39*6777b538SAndroid Build Coastguard Worker         return isOutputParsedCorrectly;
40*6777b538SAndroid Build Coastguard Worker     }
41*6777b538SAndroid Build Coastguard Worker 
parseFile(File gtestOutputFile)42*6777b538SAndroid Build Coastguard Worker     public static GTestsMetaData parseFile(File gtestOutputFile) throws IOException {
43*6777b538SAndroid Build Coastguard Worker         try (FileReader fileReader = new FileReader(gtestOutputFile)) {
44*6777b538SAndroid Build Coastguard Worker             JsonElement root = JsonParser.parseReader(fileReader);
45*6777b538SAndroid Build Coastguard Worker             if (!root.isJsonObject()) {
46*6777b538SAndroid Build Coastguard Worker                 return new GTestsMetaData(0, 0, false);
47*6777b538SAndroid Build Coastguard Worker             }
48*6777b538SAndroid Build Coastguard Worker             return new GTestsMetaData(root.getAsJsonObject().get("tests").getAsInt(),
49*6777b538SAndroid Build Coastguard Worker                     root.getAsJsonObject().get("failures").getAsInt(), true);
50*6777b538SAndroid Build Coastguard Worker         }
51*6777b538SAndroid Build Coastguard Worker     }
52*6777b538SAndroid Build Coastguard Worker 
hasAnyFailures()53*6777b538SAndroid Build Coastguard Worker     public boolean hasAnyFailures() {
54*6777b538SAndroid Build Coastguard Worker         return failedTests > 0;
55*6777b538SAndroid Build Coastguard Worker     }
56*6777b538SAndroid Build Coastguard Worker 
getTotalTests()57*6777b538SAndroid Build Coastguard Worker     public int getTotalTests() {
58*6777b538SAndroid Build Coastguard Worker         return totalTests;
59*6777b538SAndroid Build Coastguard Worker     }
60*6777b538SAndroid Build Coastguard Worker }
61