[ Merge of http://go/wvgerrit/143630 ] When we run a test with the fake clock, the clock had been initialized to the current time, or to 0. This causes a problem for reboot tests because the clock might go backwards over the reboot. With this change, we monitor the clock at the end of one reboot pass and initialize the clock for the next pass based on the previous value. Bug: 26163469 Test: GtsMediaTestCases on sunfish Change-Id: Ibd0024f963634382af70553fced38da6e1d857d2
61 lines
2.1 KiB
C++
61 lines
2.1 KiB
C++
// Copyright 2021 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
|
|
#ifndef WVCDM_CORE_REBOOT_TEST_H_
|
|
#define WVCDM_CORE_REBOOT_TEST_H_
|
|
|
|
#include <map>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include "file_store.h"
|
|
#include "test_base.h"
|
|
|
|
namespace wvcdm {
|
|
class RebootTest : public WvCdmTestBaseWithEngine {
|
|
public:
|
|
// The main test driver may inject the file system for saving persistent test
|
|
// data.
|
|
static void set_file_system(wvutil::FileSystem* file_system) {
|
|
file_system_ = file_system;
|
|
}
|
|
// Dump a map to a std string in an almost human readable way so that the map
|
|
// can be rebuilt using ParseDump below. The keys in the map must be standard
|
|
// identifier strings, which means no special characters or whitespace. By
|
|
// "almost human readable", we mean that a human debugging the dump will be
|
|
// able to find the keys, and see the values if they are printable or see a
|
|
// hex dump of the values if they are not.
|
|
static std::string DumpData(const std::map<std::string, std::string>& data);
|
|
// Parse a dump generated by DumpData and recreate the original data map.
|
|
// Returns true on success.
|
|
static bool ParseDump(const std::string& dump,
|
|
std::map<std::string, std::string>* data);
|
|
|
|
static int test_pass() { return default_config_.test_pass(); }
|
|
|
|
// Load a previously saved time. Returns 0 if the value does not exist or
|
|
// cannot be parsed.
|
|
int64_t LoadTime(const std::string& key);
|
|
// Save a time to persistent storage.
|
|
void SaveTime(const std::string& key, int64_t time);
|
|
|
|
protected:
|
|
void SetUp() override;
|
|
void TearDown() override;
|
|
|
|
// This is used to store each test's persistent data.
|
|
static wvutil::FileSystem* file_system_;
|
|
|
|
// The persistent data for the current test.
|
|
std::map<std::string, std::string> persistent_data_;
|
|
// Where to store and restore the persistent data for a single test.
|
|
std::string persistent_data_filename_;
|
|
};
|
|
|
|
} // namespace wvcdm
|
|
|
|
#endif // WVCDM_CORE_REBOOT_TEST_H_
|