[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