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