This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 2edb73a94 ZOOKEEPER-4715: Verify file size and position in
testGetCurrentLogSize (#2025)
2edb73a94 is described below
commit 2edb73a943928e0716b91e8a1d06a9c226fa393c
Author: Yan Zhao <[email protected]>
AuthorDate: Wed Jul 5 21:46:05 2023 +0800
ZOOKEEPER-4715: Verify file size and position in testGetCurrentLogSize
(#2025)
---
.../server/persistence/FileTxnLogTest.java | 40 +++++++++++++++++++---
1 file changed, 36 insertions(+), 4 deletions(-)
diff --git
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/persistence/FileTxnLogTest.java
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/persistence/FileTxnLogTest.java
index adcc5f9fd..5c35618b7 100644
---
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/persistence/FileTxnLogTest.java
+++
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/persistence/FileTxnLogTest.java
@@ -30,6 +30,7 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
+import org.apache.jute.Record;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.DummyWatcher;
import org.apache.zookeeper.PortAssignment;
@@ -171,20 +172,43 @@ public class FileTxnLogTest extends ZKTestCase {
FileTxnLog log = new FileTxnLog(tmpDir);
FileTxnLog.setPreallocSize(PREALLOCATE);
CreateRequest record = new CreateRequest(null, new byte[NODE_SIZE],
ZooDefs.Ids.OPEN_ACL_UNSAFE, 0);
+ long logSize = 0;
+ long position = 0;
+ int fileHeaderSize = 16;
int zxid = 1;
for (int i = 0; i < 4; i++) {
+ if (i == 0) {
+ logSize += fileHeaderSize;
+ position += fileHeaderSize;
+ }
log.append(new TxnHeader(0, 0, zxid++, 0, 0), record);
- LOG.debug("Current log size: {}", log.getCurrentLogSize());
+ logSize += PREALLOCATE;
+ assertEquals(logSize, log.getCurrentLogSize());
+ assertEquals(position, log.fos.getChannel().position());
}
log.commit();
- LOG.info("Current log size: {}", log.getCurrentLogSize());
+ TxnHeader mockHeader = new TxnHeader(0, 0, 0, 0, 0);
+ int totalSize = fileHeaderSize +
calculateSingleRecordLength(mockHeader, record) * 4;
+ assertEquals(totalSize, log.getCurrentLogSize());
+ assertEquals(totalSize, log.fos.getChannel().position());
assertTrue(log.getCurrentLogSize() > (zxid - 1) * NODE_SIZE);
+ logSize =
FilePadding.calculateFileSizeWithPadding(log.fos.getChannel().position(),
PREALLOCATE * 4, PREALLOCATE);
+ position = totalSize;
+ boolean recalculate = true;
for (int i = 0; i < 4; i++) {
log.append(new TxnHeader(0, 0, zxid++, 0, 0), record);
- LOG.debug("Current log size: {}", log.getCurrentLogSize());
+ if (recalculate) {
+ recalculate = false;
+ } else {
+ logSize += PREALLOCATE;
+ }
+ assertEquals(logSize, log.getCurrentLogSize());
+ assertEquals(position, log.fos.getChannel().position());
}
log.commit();
- LOG.info("Current log size: " + log.getCurrentLogSize());
+ totalSize += calculateSingleRecordLength(mockHeader, record) * 4;
+ assertEquals(totalSize, log.getCurrentLogSize());
+ assertEquals(totalSize, log.fos.getChannel().position());
assertTrue(log.getCurrentLogSize() > (zxid - 1) * NODE_SIZE);
}
@@ -263,4 +287,12 @@ public class FileTxnLogTest extends ZKTestCase {
}
}
+ private int calculateSingleRecordLength(TxnHeader txnHeader, Record
record) throws IOException {
+ int crcLength = 8;
+ int dataLength = 4;
+ int recordLength = Util.marshallTxnEntry(txnHeader, record).length;
+ int endFlagLength = 1;
+ return crcLength + dataLength + recordLength + endFlagLength;
+ }
+
}