// Copyright (C) 2021 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. #include #include #include #include #include #include #include #include #include int main(int argc, char** argv) { dittosuite::Tracer tracer; dittosuite::CmdArguments arguments = dittosuite::ParseArguments(argc, argv); dittosuite::Instruction::SetArgv(argv); dittosuite::Instruction::SetArgc(argc); auto& parser = dittosuite::Parser::GetParser(); auto benchmark = arguments.embedded_benchmark.size() ? parser.ParseEmbedded(arguments.embedded_benchmark, arguments.parameters) : parser.ParseFile(arguments.file_path, arguments.parameters); tracer.StartSession(std::move(benchmark)); auto init = dittosuite::Parser::GetParser().GetInit(); if (init != nullptr) { init->SetUp(); init->Run(); init->TearDown(); } auto main = dittosuite::Parser::GetParser().GetMain(); main->SetUp(); tracer.Start("Benchmark"); main->Run(); tracer.End("Benchmark"); main->TearDown(); auto result = main->CollectResults(""); result->Print(arguments.results_output, ""); auto clean_up = dittosuite::Parser::GetParser().GetCleanUp(); if (clean_up != nullptr) { clean_up->SetUp(); clean_up->Run(); clean_up->TearDown(); } return 0; }