Backup state stays valid JSON with a name that is not UTF-8; Bin reads on from an id, not a position
This commit is contained in:
@@ -58,16 +58,30 @@ class CatalogTest extends TestCase {
|
||||
$again = $this->open();
|
||||
$seen = [];
|
||||
// A deadline already past: one entry per request, as on a slow location
|
||||
$after = '';
|
||||
for ($request = 0; count($seen) < 3 && $request < 5; $request++) {
|
||||
$page = $again->trashPage(count($seen), 0.0);
|
||||
$page = $again->trashPage($after, 0.0);
|
||||
$this->assertSame(3, $page['total']);
|
||||
$this->assertCount(1, $page['items']);
|
||||
$seen += $page['items'];
|
||||
$after = (string)array_key_last($page['items']);
|
||||
}
|
||||
$this->assertSame(array_keys($again->trash()), array_intersect(array_keys($again->trash()), array_keys($seen)));
|
||||
$this->assertCount(3, $seen);
|
||||
$this->assertSame(['total' => 3, 'items' => []], $again->trashPage(3, 0.0));
|
||||
$this->assertCount(3, $again->trashPage(0, microtime(true) + 60)['items']);
|
||||
$this->assertEqualsCanonicalizing(array_keys($again->trash()), array_keys($seen));
|
||||
$this->assertSame(['total' => 3, 'items' => []], $again->trashPage($after, 0.0));
|
||||
$this->assertCount(3, $again->trashPage('', microtime(true) + 60)['items']);
|
||||
}
|
||||
|
||||
public function testAnEntryThatLeavesTheTrashBetweenPartsMakesNoneComeTwiceOrBeMissed(): void {
|
||||
$repo = Repository::initWithKey($this->backend, $this->keys, $this->keys->wrap('pw'), $this->anchor);
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
$repo->forget($repo->backupDirectory($this->src)['snapshot']);
|
||||
}
|
||||
$reader = $this->open();
|
||||
$ids = array_keys($reader->trashPage('', microtime(true) + 60)['items']);
|
||||
$first = $reader->trashPage('', 0.0)['items'];
|
||||
$this->assertSame([$ids[0]], array_keys($first));
|
||||
$this->open()->untrash($ids[0]); // another administrator, between two parts
|
||||
$this->assertSame([$ids[1], $ids[2]], array_keys($this->open()->trashPage($ids[0], microtime(true) + 60)['items']));
|
||||
}
|
||||
|
||||
public function testRollbackIsDetected(): void {
|
||||
|
||||
Reference in New Issue
Block a user