xref: /openbmc/pldm/test/test_instance_id.hpp (revision 21f128d8)
1 #pragma once
2 
3 #include "common/instance_id.hpp"
4 
5 static constexpr uintmax_t pldmMaxInstanceIds = 32;
6 
7 class TestInstanceIdDb : public pldm::InstanceIdDb
8 {
9   public:
10     TestInstanceIdDb() : TestInstanceIdDb(createDb()) {}
11 
12     ~TestInstanceIdDb()
13     {
14         std::filesystem::remove(dbPath);
15     };
16 
17   private:
18     static std::filesystem::path createDb()
19     {
20         static const char dbTmpl[] = "/tmp/db.XXXXXX";
21         char dbName[sizeof(dbTmpl)] = {};
22 
23         ::strncpy(dbName, dbTmpl, sizeof(dbName));
24         ::close(::mkstemp(dbName));
25 
26         std::filesystem::path dbPath(dbName);
27         std::filesystem::resize_file(
28             dbPath, static_cast<uintmax_t>(PLDM_MAX_TIDS) * pldmMaxInstanceIds);
29 
30         return dbPath;
31     };
32 
33     TestInstanceIdDb(std::filesystem::path dbPath) :
34         InstanceIdDb(dbPath), dbPath(dbPath)
35     {}
36 
37     std::filesystem::path dbPath;
38 };
39