1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2012 The Android Open Source Project 3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License"); 5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License. 6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at 7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// http://www.apache.org/licenses/LICENSE-2.0 9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software 11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS, 12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and 14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License. 15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 1649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 1749fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com// based on pam_google_testrunner.cc 1849fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 192e71f90d6af955a5359853132085931f1e0479e0Alex Deymo#include <xz.h> 202e71f90d6af955a5359853132085931f1e0479e0Alex Deymo 219c0baf82049efd95230a8389769e1b3e5d001209Darin Petkov#include <base/at_exit.h> 229c0baf82049efd95230a8389769e1b3e5d001209Darin Petkov#include <base/command_line.h> 233f39d5cc753905874d8d93bef94f857b8808f19eAlex Vakulenko#include <brillo/test_helpers.h> 2449fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com#include <gtest/gtest.h> 259c0baf82049efd95230a8389769e1b3e5d001209Darin Petkov 2639910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/terminator.h" 275ee71ba372ddef9bc2b5e12f55f0b449d320282cAlex Deymo#include "update_engine/payload_generator/xz.h" 28c98a7edf648aad88b3f66df3b5a7d43d6a6d7fa9adlr@google.com 2949fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comint main(int argc, char **argv) { 30fc35929eda5c40615ecd21f6c4ac30cf49e34e3eGilad Arnold LOG(INFO) << "started"; 315c0a8afa879886800d82b195e3164e5a580a2cc7Darin Petkov base::AtExitManager exit_manager; 322e71f90d6af955a5359853132085931f1e0479e0Alex Deymo // xz-embedded requires to initialize its CRC-32 table once on startup. 332e71f90d6af955a5359853132085931f1e0479e0Alex Deymo xz_crc32_init(); 345ee71ba372ddef9bc2b5e12f55f0b449d320282cAlex Deymo // The LZMA SDK-based Xz compressor used in the payload generation requires 355ee71ba372ddef9bc2b5e12f55f0b449d320282cAlex Deymo // this one-time initialization. 365ee71ba372ddef9bc2b5e12f55f0b449d320282cAlex Deymo chromeos_update_engine::XzCompressInit(); 370b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold // TODO(garnold) temporarily cause the unittest binary to exit with status 380b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold // code 2 upon catching a SIGTERM. This will help diagnose why the unittest 390b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold // binary is perceived as failing by the buildbot. We should revert it to use 400b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold // the default exit status of 1. Corresponding reverts are necessary in 410b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold // terminator_unittest.cc. 420b4a6ffb20e83aea7e5616be07bebb2f09ac85daGilad Arnold chromeos_update_engine::Terminator::Init(2); 43fc35929eda5c40615ecd21f6c4ac30cf49e34e3eGilad Arnold LOG(INFO) << "parsing command line arguments"; 44b96ecdaafd27009a18e198f166d2b2f64a55d251Alex Vakulenko base::CommandLine::Init(argc, argv); 45fc35929eda5c40615ecd21f6c4ac30cf49e34e3eGilad Arnold LOG(INFO) << "initializing gtest"; 460bb234147ea8f0247b733375fcf1685eaf329aacAlex Deymo SetUpTests(&argc, argv, true); 47fc35929eda5c40615ecd21f6c4ac30cf49e34e3eGilad Arnold LOG(INFO) << "running unit tests"; 48faac2a5b491605d400d89cbe2054474c7aba6452Gilad Arnold int test_result = RUN_ALL_TESTS(); 49faac2a5b491605d400d89cbe2054474c7aba6452Gilad Arnold LOG(INFO) << "unittest return value: " << test_result; 50faac2a5b491605d400d89cbe2054474c7aba6452Gilad Arnold return test_result; 5149fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com} 52