[jboss-cvs] JBoss Messaging SVN: r4081 - in branches/trunk_tmp_aio: src/main/org/jboss/messaging/core/journal/impl and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 18 18:37:59 EDT 2008
Author: clebert.suconic at jboss.com
Date: 2008-04-18 18:37:59 -0400 (Fri, 18 Apr 2008)
New Revision: 4081
Modified:
branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/Journal.java
branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
branches/trunk_tmp_aio/tests/src/org/jboss/messaging/core/journal/impl/test/unit/JournalImplTestUnit.java
Log:
Refactoring test
Modified: branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/Journal.java
===================================================================
--- branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/Journal.java 2008-04-18 09:46:17 UTC (rev 4080)
+++ branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/Journal.java 2008-04-18 22:37:59 UTC (rev 4081)
@@ -72,4 +72,6 @@
void stopReclaimer();
+ int getAlignment() throws Exception;
+
}
Modified: branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
===================================================================
--- branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java 2008-04-18 09:46:17 UTC (rev 4080)
+++ branches/trunk_tmp_aio/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java 2008-04-18 22:37:59 UTC (rev 4081)
@@ -79,6 +79,10 @@
//Record markers - they must be all unique
+ public static final int SIZE_HEADER = 8;
+
+ public static final int SIZE_ADD_RECORD = SIZE_BYTE + SIZE_LONG + SIZE_INT + SIZE_BYTE;
+
public static final byte ADD_RECORD = 11;
public static final byte UPDATE_RECORD = 12;
@@ -1015,6 +1019,11 @@
state = STATE_LOADED;
}
+ public int getAlignment() throws Exception
+ {
+ return this.currentFile.getFile().getAlignment();
+ }
+
// TestableJournal implementation --------------------------------------------------------------
public synchronized void checkAndReclaimFiles() throws Exception
@@ -1162,8 +1171,6 @@
{
int pos = ((position / alignment) + (position % alignment != 0 ? 1 : 0)) * alignment;
- //System.out.println("Calculated " + pos + " and received " + position);
-
return pos;
}
@@ -1275,7 +1282,7 @@
throw new IllegalStateException("You can't write blocks in a size different than " + currentFile.getFile().getAlignment());
}
//We take into account the first timestamp long
- if (size > fileSize - calculateBlockStart(8, currentFile.getFile().getAlignment()))
+ if (size > fileSize - calculateBlockStart(SIZE_HEADER, currentFile.getFile().getAlignment()))
{
throw new IllegalArgumentException("Record is too large to store " + size);
}
Modified: branches/trunk_tmp_aio/tests/src/org/jboss/messaging/core/journal/impl/test/unit/JournalImplTestUnit.java
===================================================================
--- branches/trunk_tmp_aio/tests/src/org/jboss/messaging/core/journal/impl/test/unit/JournalImplTestUnit.java 2008-04-18 09:46:17 UTC (rev 4080)
+++ branches/trunk_tmp_aio/tests/src/org/jboss/messaging/core/journal/impl/test/unit/JournalImplTestUnit.java 2008-04-18 22:37:59 UTC (rev 4081)
@@ -347,33 +347,42 @@
public void testCheckCreateMoreFiles() throws Exception
{
- setup(10, 10 * 1024, true);
+ setup(2, 10 * 1024, true);
createJournal();
startJournal();
load();
List<String> files1 = fileFactory.listFiles(fileExtension);
- assertEquals(10, files1.size());
+ assertEquals(2, files1.size());
assertEquals(0, journal.getDataFilesCount());
- assertEquals(9, journal.getFreeFilesCount());
+ assertEquals(1, journal.getFreeFilesCount());
assertEquals(0, journal.getIDMapSize());
//Fill all the files
- for (int i = 0; i < 90; i++)
+ for (int i = 0; i < 91; i++)
{
+ System.out.println("Adding a record - " + i);
add(i);
}
- assertEquals(9, journal.getDataFilesCount());
+
+ int calculatedSize = calculateRecordSize(JournalImpl.SIZE_ADD_RECORD + this.recordLength, journal.getAlignment());
+ int headerSize = calculateRecordSize(JournalImpl.SIZE_HEADER, journal.getAlignment());
+ int recordsPerFile = (fileSize - headerSize)/calculatedSize;
+ int fillerSize = fileSize - headerSize - calculatedSize * recordsPerFile;
+ int numberOfFiles = calculatedSize * 91 / (fileSize-headerSize-fillerSize);
+
+
+ assertEquals(numberOfFiles, journal.getDataFilesCount());
assertEquals(0, journal.getFreeFilesCount());
- assertEquals(90, journal.getIDMapSize());
+ assertEquals(91, journal.getIDMapSize());
List<String> files2 = fileFactory.listFiles(fileExtension);
- assertEquals(10, files2.size());
+ assertEquals(numberOfFiles + 1, files2.size());
for (String file: files1)
{
@@ -387,13 +396,15 @@
add(i);
}
- assertEquals(10, journal.getDataFilesCount());
+ numberOfFiles = calculatedSize * 95 / (fileSize-headerSize-fillerSize);
+
+ assertEquals(numberOfFiles, journal.getDataFilesCount());
assertEquals(0, journal.getFreeFilesCount());
assertEquals(95, journal.getIDMapSize());
List<String> files3 = fileFactory.listFiles(fileExtension);
- assertEquals(11, files3.size());
+ assertEquals(numberOfFiles + 1, files3.size());
for (String file: files1)
{
@@ -407,13 +418,15 @@
add(i);
}
- assertEquals(22, journal.getDataFilesCount());
+ numberOfFiles = calculatedSize * 200 / (fileSize-headerSize-fillerSize);
+
+ assertEquals(numberOfFiles, journal.getDataFilesCount());
assertEquals(0, journal.getFreeFilesCount());
assertEquals(200, journal.getIDMapSize());
List<String> files4 = fileFactory.listFiles(fileExtension);
- assertEquals(23, files4.size());
+ assertEquals(numberOfFiles + 1, files4.size());
for (String file: files1)
{
@@ -2469,4 +2482,10 @@
commit(3);
}
+
+ private int calculateRecordSize(int size, int alignment)
+ {
+ return ((size / alignment) + (size % alignment != 0 ? 1 : 0)) * alignment;
+ }
+
}
More information about the jboss-cvs-commits
mailing list