// 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 #include #include #include #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& 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* 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 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_