| /* |
| * 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_ |