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