1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.mavibot.btree;
21
22
23 import static org.junit.Assert.assertEquals;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.lang.reflect.InvocationTargetException;
28 import java.lang.reflect.Method;
29 import java.util.UUID;
30
31 import org.apache.directory.mavibot.btree.serializer.LongSerializer;
32 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
33 import org.junit.After;
34 import org.junit.Before;
35 import org.junit.Rule;
36 import org.junit.Test;
37 import org.junit.rules.TemporaryFolder;
38
39
40
41
42
43
44
45 public class RecordManagerPrivateMethodTest
46 {
47 private BTree<Long, String> btree = null;
48
49 private RecordManager recordManager = null;
50
51 @Rule
52 public TemporaryFolder tempFolder = new TemporaryFolder();
53
54 private File dataDir = null;
55
56
57 @Before
58 public void createRecordManager() throws Exception
59 {
60 dataDir = tempFolder.newFolder( UUID.randomUUID().toString() );
61
62 System.out.println( dataDir + "/mavibot.db" );
63
64
65 recordManager = new RecordManager( dataDir.getAbsolutePath(), 32 );
66
67
68 btree = recordManager.addBTree( "test", LongSerializer.INSTANCE, StringSerializer.INSTANCE, false );
69 }
70
71
72 @After
73 public void closeBTree() throws IOException
74 {
75 recordManager.close();
76 }
77
78
79
80
81
82 @Test
83 public void testGetFreePageIos() throws IOException, NoSuchMethodException, InvocationTargetException,
84 IllegalAccessException
85 {
86 Method getFreePageIOsMethod = RecordManager.class.getDeclaredMethod( "getFreePageIOs", int.class );
87 getFreePageIOsMethod.setAccessible( true );
88
89 PageIO[] pages = ( org.apache.directory.mavibot.btree.PageIO[] ) getFreePageIOsMethod.invoke( recordManager, 0 );
90
91 assertEquals( 0, pages.length );
92
93 for ( int i = 1; i <= 52; i++ )
94 {
95 pages = ( org.apache.directory.mavibot.btree.PageIO[] ) getFreePageIOsMethod.invoke( recordManager, i );
96 assertEquals( 1, pages.length );
97 }
98
99 for ( int i = 53; i <= 108; i++ )
100 {
101 pages = ( org.apache.directory.mavibot.btree.PageIO[] ) getFreePageIOsMethod.invoke( recordManager, i );
102 assertEquals( 2, pages.length );
103 }
104
105 for ( int i = 109; i <= 164; i++ )
106 {
107 pages = ( org.apache.directory.mavibot.btree.PageIO[] ) getFreePageIOsMethod.invoke( recordManager, i );
108 assertEquals( 3, pages.length );
109 }
110
111 btree.close();
112 }
113
114
115
116
117
118 @Test
119 public void testComputeNbPages() throws IOException, SecurityException, NoSuchMethodException,
120 IllegalArgumentException, IllegalAccessException, InvocationTargetException
121 {
122 Method computeNbPagesMethod = RecordManager.class.getDeclaredMethod( "computeNbPages", int.class );
123 computeNbPagesMethod.setAccessible( true );
124
125 assertEquals( 0, ( ( Integer ) computeNbPagesMethod.invoke( recordManager, 0 ) ).intValue() );
126
127 for ( int i = 1; i < 53; i++ )
128 {
129 assertEquals( 1, ( ( Integer ) computeNbPagesMethod.invoke( recordManager, i ) ).intValue() );
130 }
131
132 for ( int i = 53; i < 109; i++ )
133 {
134 assertEquals( 2, ( ( Integer ) computeNbPagesMethod.invoke( recordManager, i ) ).intValue() );
135 }
136
137 for ( int i = 109; i < 164; i++ )
138 {
139 assertEquals( 3, ( ( Integer ) computeNbPagesMethod.invoke( recordManager, i ) ).intValue() );
140 }
141
142 btree.close();
143 }
144 }