package com.google.code.joto.eventrecorder.impl; import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * JUnit test for FileRecordEventStore */ public class FileRecordEventStoreTest extends AbstractRecordEventStoreTestHelper { private static final Logger log = LoggerFactory.getLogger(FileRecordEventStoreTest.class); public FileRecordEventStoreTest(String name) { super(name); } public void testWrite1() { File file = getTestFileToCreate("FileTest1.tmp"); FileRecordEventStore eventStore = new FileRecordEventStore(file); try { eventStore.open("rw"); doTestWrite1CloseRead(eventStore); } catch(Exception ex) { eventStore.close(); throw new RuntimeException(ex); } finally { deleteTestFile(file); } } public void testReadWriteMultiple() { File file = getTestFileToCreate("FileTestReadWriteMultiple.tmp"); try { FileRecordEventStore eventStore = new FileRecordEventStore(file); eventStore.open("rw"); doTestReadWriteMany(eventStore, false); // finish eventStore.close(); } finally { deleteTestFile(file); } } public void testBenchmarkWriteSimple() { boolean deleteFile = true; // use false for debugging(?): showing file content // log.info("benchmark FileRecordEventStore ... First result is not significative because hotspot is lazy..."); String baseName = "FileRecordStoreBench"; doTestBenchmarkWriteSimple(baseName, 50, 50, deleteFile); log.info("now benchmark with different repeatCount x size"); doTestBenchmarkWriteSimple(baseName, 1000, 10, deleteFile); doTestBenchmarkWriteSimple(baseName, 100, 100, deleteFile); // doTestBenchmarkWriteSimple(baseName, 10, 1000, deleteFile); // doTestBenchmarkWriteSimple(baseName, 10, 10000); // doTestBenchmarkWriteSimple(baseName, 5, 500000); log.info("benchmark FileRecordEventStore finished"); } protected void doTestBenchmarkWriteSimple(String baseName, final int repeatCount, final int writeCount, boolean deleteFile) { System.gc(); System.gc(); String fileName = baseName + "x" + repeatCount + "-" + writeCount + ".tmp"; File file = getTestFileToCreate(fileName); FileRecordEventStore eventStore = new FileRecordEventStore(file); try { eventStore.open("rw"); doRunBenchmarkWriteSimple(eventStore, repeatCount, writeCount); // finish eventStore.close(); } catch(Exception ex) { eventStore.close(); throw new RuntimeException(ex); } finally { if (deleteFile) { deleteTestFile(file); } } } }