Skip to content

Commit 7d1a165

Browse files
authored
Fix an Apple break in Office around complex c'tors running at binary load time. (#1230)
1 parent ced3b3d commit 7d1a165

File tree

1 file changed

+43
-33
lines changed

1 file changed

+43
-33
lines changed

tests/unittests/MemoryStorageTests.cpp

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,6 @@ class TestObserver : public IOfflineStorageObserver
6060
}
6161
};
6262

63-
/// <summary>
64-
/// No-op NULL object pattern log manager
65-
/// </summary>
66-
NullLogManager testLogManager;
67-
68-
/// <summary>
69-
/// Default test configuration
70-
/// </summary>
71-
RuntimeConfig_Default testConfig(testLogManager.GetLogConfiguration());
72-
73-
/// <summary>
74-
/// Storage observer
75-
/// </summary>
76-
TestObserver testObserver;
77-
7863
// Run the list of all supported latencies
7964
std::set<EventLatency> latencies =
8065
{
@@ -108,15 +93,40 @@ size_t addEvents(MemoryStorage& storage)
10893
return total_db_size;
10994
}
11095

96+
class MemoryStorageTests : public ::testing::Test
97+
{
98+
public:
99+
/// <summary>
100+
/// No-op NULL object pattern log manager
101+
/// </summary>
102+
NullLogManager testLogManager;
103+
104+
/// <summary>
105+
/// Default test configuration
106+
/// </summary>
107+
std::unique_ptr<RuntimeConfig_Default> testConfig;
108+
109+
/// <summary>
110+
/// Storage observer
111+
/// </summary>
112+
TestObserver testObserver;
113+
114+
virtual void SetUp() override
115+
{
116+
testConfig = std::make_unique<RuntimeConfig_Default>(testLogManager.GetLogConfiguration());
117+
}
118+
119+
};
120+
111121
/// <summary>
112122
/// Initialize, generate some records, save and retrieve these records back.
113123
/// </summary>
114124
/// <param name="">The .</param>
115125
/// <param name="">The .</param>
116126
/// <returns></returns>
117-
TEST(MemoryStorageTests, StoreAndGetRecords)
127+
TEST_F(MemoryStorageTests, StoreAndGetRecords)
118128
{
119-
MemoryStorage storage(testLogManager, testConfig);
129+
MemoryStorage storage(testLogManager, *testConfig);
120130

121131
// Observer callbacks are not currently implemented for this storage type
122132
storage.Initialize(testObserver);
@@ -164,9 +174,9 @@ TEST(MemoryStorageTests, StoreAndGetRecords)
164174
EXPECT_THAT(storage.GetSize(), 0);
165175
}
166176

167-
TEST(MemoryStorageTests, GetRecordsDeletesRecords)
177+
TEST_F(MemoryStorageTests, GetRecordsDeletesRecords)
168178
{
169-
MemoryStorage storage(testLogManager, testConfig);
179+
MemoryStorage storage(testLogManager, *testConfig);
170180

171181
std::vector<StorageRecordId> ids;
172182

@@ -184,9 +194,9 @@ TEST(MemoryStorageTests, GetRecordsDeletesRecords)
184194
EXPECT_THAT(records.size(), num_iterations * 4); // 4 latencies
185195
}
186196

187-
TEST(MemoryStorageTests, DeleteAllRecords)
197+
TEST_F(MemoryStorageTests, DeleteAllRecords)
188198
{
189-
MemoryStorage storage(testLogManager, testConfig);
199+
MemoryStorage storage(testLogManager, *testConfig);
190200

191201
std::vector<StorageRecordId> ids;
192202

@@ -204,9 +214,9 @@ TEST(MemoryStorageTests, DeleteAllRecords)
204214
}
205215

206216

207-
TEST(MemoryStorageTests, ReleaseRecords)
217+
TEST_F(MemoryStorageTests, ReleaseRecords)
208218
{
209-
MemoryStorage storage(testLogManager, testConfig);
219+
MemoryStorage storage(testLogManager, *testConfig);
210220

211221
std::vector<StorageRecordId> ids;
212222
HttpHeaders headers;
@@ -246,9 +256,9 @@ TEST(MemoryStorageTests, ReleaseRecords)
246256
EXPECT_THAT(storage.GetReservedCount(), 0);
247257
}
248258

249-
TEST(MemoryStorageTests, GetAndReserveSome)
259+
TEST_F(MemoryStorageTests, GetAndReserveSome)
250260
{
251-
MemoryStorage storage(testLogManager, testConfig);
261+
MemoryStorage storage(testLogManager, *testConfig);
252262
storage.Initialize(testObserver);
253263
addEvents(storage);
254264
auto totalCount = storage.GetRecordCount();
@@ -285,33 +295,33 @@ TEST(MemoryStorageTests, GetAndReserveSome)
285295
}
286296

287297
// This method is not implemented for RAM storage
288-
TEST(MemoryStorageTests, StoreSetting)
298+
TEST_F(MemoryStorageTests, StoreSetting)
289299
{
290-
MemoryStorage storage(testLogManager, testConfig);
300+
MemoryStorage storage(testLogManager, *testConfig);
291301
bool result = storage.StoreSetting("not_implemented", "not_implemented");
292302
EXPECT_THAT(result, false);
293303
}
294304

295305
// This method is not implemented for RAM storage
296-
TEST(MemoryStorageTests, GetSetting)
306+
TEST_F(MemoryStorageTests, GetSetting)
297307
{
298-
MemoryStorage storage(testLogManager, testConfig);
308+
MemoryStorage storage(testLogManager, *testConfig);
299309
auto result = storage.GetSetting("not_implemented");
300310
EXPECT_THAT(result.empty(), true);
301311
}
302312

303313
// This method is not implemented for RAM storage
304-
TEST(MemoryStorageTests, ResizeDb)
314+
TEST_F(MemoryStorageTests, ResizeDb)
305315
{
306-
MemoryStorage storage(testLogManager, testConfig);
316+
MemoryStorage storage(testLogManager, *testConfig);
307317
EXPECT_THAT(storage.ResizeDb(), true);
308318
}
309319

310320
constexpr size_t MAX_STRESS_THREADS = 20;
311321

312-
TEST(MemoryStorageTests, MultiThreadPerfTest)
322+
TEST_F(MemoryStorageTests, MultiThreadPerfTest)
313323
{
314-
MemoryStorage storage(testLogManager, testConfig);
324+
MemoryStorage storage(testLogManager, *testConfig);
315325

316326
std::vector<std::thread> workers;
317327
std::atomic<size_t> threadCount(0);

0 commit comments

Comments
 (0)