xo-gc: utest: move GCObjectStore into GcosFixture
This commit is contained in:
parent
d78bdf2e96
commit
880087d0be
1 changed files with 14 additions and 11 deletions
|
|
@ -735,6 +735,9 @@ namespace ut {
|
||||||
public:
|
public:
|
||||||
explicit GcosFixture(const Testcase & tc);
|
explicit GcosFixture(const Testcase & tc);
|
||||||
|
|
||||||
|
auto report_mm() { return obj<AAllocator,DArena>(&report_arena_); }
|
||||||
|
auto error_mm() { return obj<AAllocator,DArena>(&error_arena_); }
|
||||||
|
|
||||||
GCObjectStoreConfig gcos_config_;
|
GCObjectStoreConfig gcos_config_;
|
||||||
|
|
||||||
/** Parallel arena for reference
|
/** Parallel arena for reference
|
||||||
|
|
@ -756,6 +759,9 @@ namespace ut {
|
||||||
|
|
||||||
/** statistics collected by GCObjectStore.verify_ok() **/
|
/** statistics collected by GCObjectStore.verify_ok() **/
|
||||||
X1VerifyStats verify_stats_;
|
X1VerifyStats verify_stats_;
|
||||||
|
|
||||||
|
/** the thing we're exercising using this fixture **/
|
||||||
|
GCObjectStore gcos_;
|
||||||
};
|
};
|
||||||
|
|
||||||
GcosFixture::GcosFixture(const Testcase & tc)
|
GcosFixture::GcosFixture(const Testcase & tc)
|
||||||
|
|
@ -775,7 +781,8 @@ namespace ut {
|
||||||
.with_store_header_flag(true))},
|
.with_store_header_flag(true))},
|
||||||
error_arena_{DArena::map(ArenaConfig().with_name("error-arena")
|
error_arena_{DArena::map(ArenaConfig().with_name("error-arena")
|
||||||
.with_size(tc.error_size_)
|
.with_size(tc.error_size_)
|
||||||
.with_store_header_flag(true))}
|
.with_store_header_flag(true))},
|
||||||
|
gcos_{gcos_config_, &verify_stats_}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -807,11 +814,7 @@ namespace ut {
|
||||||
|
|
||||||
GcosFixture fixture(tc);
|
GcosFixture fixture(tc);
|
||||||
|
|
||||||
obj<AAllocator,DArena> report_mm(&fixture.report_arena_);
|
GCObjectStore & gcos = fixture.gcos_;
|
||||||
obj<AAllocator,DArena> error_mm(&fixture.error_arena_);
|
|
||||||
|
|
||||||
// object type storage will be empty unless we install a type.
|
|
||||||
GCObjectStore gcos(fixture.gcos_config_, &fixture.verify_stats_);
|
|
||||||
|
|
||||||
REQUIRE(gcos.is_type_installed(typeseq::id<DList>()) == false);
|
REQUIRE(gcos.is_type_installed(typeseq::id<DList>()) == false);
|
||||||
REQUIRE(gcos.is_type_installed(typeseq::id<DBoolean>()) == false);
|
REQUIRE(gcos.is_type_installed(typeseq::id<DBoolean>()) == false);
|
||||||
|
|
@ -876,7 +879,7 @@ namespace ut {
|
||||||
|
|
||||||
{
|
{
|
||||||
obj<AGCObject> report_gco;
|
obj<AGCObject> report_gco;
|
||||||
bool ok = gcos.report_object_types(report_mm, error_mm, &report_gco);
|
bool ok = gcos.report_object_types(fixture.report_mm(), fixture.error_mm(), &report_gco);
|
||||||
|
|
||||||
REQUIRE(ok);
|
REQUIRE(ok);
|
||||||
REQUIRE(report_gco);
|
REQUIRE(report_gco);
|
||||||
|
|
@ -886,16 +889,16 @@ namespace ut {
|
||||||
// discard report
|
// discard report
|
||||||
|
|
||||||
report_gco.reset();
|
report_gco.reset();
|
||||||
report_mm->clear();
|
fixture.report_mm()->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
obj<AGCObject> report_gco;
|
obj<AGCObject> report_gco;
|
||||||
bool ok = gcos.report_object_ages(report_mm, error_mm, &report_gco);
|
bool ok = gcos.report_object_ages(fixture.report_mm(), fixture.error_mm(), &report_gco);
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
log1.retroactively_enable();
|
log1.retroactively_enable();
|
||||||
log1 && log1(xtag("error", report_mm.last_error()));
|
log1 && log1(xtag("error", fixture.report_mm().last_error()));
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE(ok);
|
REQUIRE(ok);
|
||||||
|
|
@ -906,7 +909,7 @@ namespace ut {
|
||||||
// discard report
|
// discard report
|
||||||
|
|
||||||
report_gco.reset();
|
report_gco.reset();
|
||||||
report_mm->clear();
|
fixture.report_mm()->clear();
|
||||||
}
|
}
|
||||||
} /* loop over test cases */
|
} /* loop over test cases */
|
||||||
} /* TEST_CASE(GCObjectStore-1) */
|
} /* TEST_CASE(GCObjectStore-1) */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue