From 8b48eea98f77df40c66e50e3ae5b407f371d0556 Mon Sep 17 00:00:00 2001 From: Damien Diederen Date: Sat, 6 Mar 2021 19:15:28 +0100 Subject: [PATCH] ZOOKEEPER-4232: Ensure that ZOOKEEPER-367 test data fails to parse --- .../zookeeper/test/InvalidSnapshotTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java index db1b43cbb12..c47a60f357c 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java @@ -20,7 +20,9 @@ import static org.apache.zookeeper.test.ClientBase.CONNECTION_TIMEOUT; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import java.io.File; +import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.zookeeper.PortAssignment; import org.apache.zookeeper.ZKTestCase; @@ -62,6 +64,24 @@ public void testSnapshotFormatterWithNull() throws Exception { SnapshotFormatter.main(args); } + /** + * Verify the SnapshotFormatter fails as expected on corrupted snapshot. + */ + @Test + public void testSnapshotFormatterWithInvalidSnap() throws Exception { + File snapDir = new File(testData, "invalidsnap"); + // Broken snapshot introduced by ZOOKEEPER-367, and used to + // demonstrate recovery in testSnapshot below. + File snapfile = new File(new File(snapDir, "version-2"), "snapshot.83f"); + String[] args = {snapfile.getCanonicalFile().toString()}; + try { + SnapshotFormatter.main(args); + fail("Snapshot '" + snapfile + "' unexpectedly parsed without error."); + } catch (IOException e) { + assertTrue(e.getMessage().contains("Unreasonable length = 977468229")); + } + } + /** * test the snapshot * @throws Exception an exception could be expected