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