blob: 2ca9d7b870a6c976242f46c3953eed06f6767a73 [file] [log] [blame]
#pragma once
#include "common/instance_id.hpp"
#include <unistd.h>
#include <cstring>
#include <filesystem>
static constexpr uintmax_t pldmMaxInstanceIds = 32;
class TestInstanceIdDb : public pldm::InstanceIdDb
{
public:
TestInstanceIdDb() : TestInstanceIdDb(createDb()) {}
~TestInstanceIdDb()
{
std::filesystem::remove(dbPath);
};
private:
static std::filesystem::path createDb()
{
static const char dbTmpl[] = "/tmp/db.XXXXXX";
char dbName[sizeof(dbTmpl)] = {};
::strncpy(dbName, dbTmpl, sizeof(dbName));
::close(::mkstemp(dbName));
std::filesystem::path dbPath(dbName);
std::filesystem::resize_file(
dbPath, static_cast<uintmax_t>(PLDM_MAX_TIDS) * pldmMaxInstanceIds);
return dbPath;
};
TestInstanceIdDb(std::filesystem::path dbPath) :
InstanceIdDb(dbPath), dbPath(dbPath)
{}
std::filesystem::path dbPath;
};