/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef TOOLS_TRACE_PROCESSOR_VTSCOVERAGEPROCESSOR_H_ #define TOOLS_TRACE_PROCESSOR_VTSCOVERAGEPROCESSOR_H_ #include <android-base/macros.h> #include <test/vts/proto/VtsReportMessage.pb.h> namespace android { namespace vts { // A class used for processing coverage report data, such as parse the // coverage report file, merge multiple coverage reports, and compare // two coverage reports. class VtsCoverageProcessor { public: VtsCoverageProcessor(){}; virtual ~VtsCoverageProcessor(){}; // Merge the coverage files under coverage_file_dir and output the merged // coverage data to merged_coverage_file. void MergeCoverage(const std::string& coverage_file_dir, const std::string& merged_coverage_file); // Compare coverage data contained in new_msg_file with ref_msg_file and // print the additional file/lines covered by the new_msg_file. void CompareCoverage(const std::string& ref_msg_file, const std::string& new_msg_file); // Parse the given coverage_file into a coverage report. void ParseCoverageData(const std::string& coverage_file, TestReportMessage* coverage_report); // Updates msg_to_be_updated by removing all the covered lines in ref_msg // and recalculates the count of covered lines accordingly. void UpdateCoverageData(const CoverageReportMessage& ref_msg, CoverageReportMessage* msg_to_be_updated); // Extract the files covered in ref_msg_file from full_msg_file and store // the result in result_msg_file. void GetSubsetCoverage(const std::string& ref_msg_file, const std::string& full_msg_file, const std::string& result_msg_file); // Parse the coverage report and print the coverage summary. void GetCoverageSummary(const std::string& coverage_msg_file); // Calculate total coverage line in the given report message. long GetTotalCoverageLine(const TestReportMessage& msg) const; // Calculate total code line in the given report message. long GetTotalCodeLine(const TestReportMessage& msg) const; private: // Internal method to merge the ref_coverage_msg into merged_covergae_msg. void MergeCoverageMsg(const CoverageReportMessage& ref_coverage_msg, CoverageReportMessage* merged_covergae_msg); // Help method to print the coverage summary. void PrintCoverageSummary(const TestReportMessage& coverage_report); DISALLOW_COPY_AND_ASSIGN(VtsCoverageProcessor); }; } // namespace vts } // namespace android #endif // TOOLS_TRACE_PROCESSOR_VTSCOVERAGEPROCESSOR_H_