Changeset 19687
- Timestamp:
- 02/10/12 00:31:46 (4 months ago)
- Location:
- trunk/Jav_Orient
- Files:
-
- 7 added
- 4 edited
- 6 moved
-
src/eu/scenari/orient/recordstruct/value/ValueListImmutableFixed.java (modified) (2 diffs)
-
src/eu/scenari/orient/tree/impl/RSTreeRake.java (modified) (10 diffs)
-
test/eu/scenari/orient/tree/TreeBasicIncrementalTest.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/TreeBasicTest.java) (2 diffs)
-
test/eu/scenari/orient/tree/TreeBasicTestAbstract.java (added)
-
test/eu/scenari/orient/tree/TreeBasicUnorderedTest.java (added)
-
test/eu/scenari/orient/tree/TreeBigIncrementalTest.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/TreeBigTest.java) (2 diffs)
-
test/eu/scenari/orient/tree/TreeBigTestAbstract.java (added)
-
test/eu/scenari/orient/tree/TreeBigUnorderedTest.java (added)
-
test/eu/scenari/orient/tree/TypesTreeTests.java (modified) (1 diff)
-
test/eu/scenari/orient/tree/datafactory (added)
-
test/eu/scenari/orient/tree/datafactory/FactorySequentialLong.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/FactorySequentialLong.java) (6 diffs)
-
test/eu/scenari/orient/tree/datafactory/FactorySequentialLongTest.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/FactorySequentialLongTest.java) (3 diffs)
-
test/eu/scenari/orient/tree/datafactory/FactoryUnorderedLong.java (added)
-
test/eu/scenari/orient/tree/datafactory/IKVFactory.java (added)
-
test/eu/scenari/orient/tree/datafactory/IKeyFactory.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/IKeyFactory.java) (1 diff)
-
test/eu/scenari/orient/tree/datafactory/IValueFactory.java (moved) (moved from trunk/Jav_Orient/test/eu/scenari/orient/tree/IValueFactory.java) (1 diff)
-
test/eu/scenari/orient/tree/perf/MVRBTreePerfTest.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Jav_Orient/src/eu/scenari/orient/recordstruct/value/ValueListImmutableFixed.java
r19680 r19687 281 281 int vCountToAdd = pC.size(); 282 282 if (vCountToAdd == 0) return false; 283 Iterator<? extends E> vEntry = pC.iterator();283 isolateBufferForUpdates(fSize + vCountToAdd); 284 284 int vOffset = index2Offset(pIndex); 285 285 if (pIndex < fSize) { 286 System.arraycopy(fRawEntries, vOffset, fRawEntries, vOffset + (vCountToAdd * getFixedLengthEntry()), (pIndex - fSize) * getFixedLengthEntry()); 287 } 288 while (vEntry.hasNext()) { 289 marshallEntry(vEntry.next(), vOffset); 286 System.arraycopy(fRawEntries, vOffset, fRawEntries, vOffset + (vCountToAdd * getFixedLengthEntry()), (fSize - pIndex) * getFixedLengthEntry()); 287 } 288 Iterator<? extends E> vIt = pC.iterator(); 289 while (vIt.hasNext()) { 290 marshallEntry(vIt.next(), vOffset); 290 291 vOffset += getFixedLengthEntry(); 291 292 } … … 320 321 int vOffset = index2Offset(pIndex); 321 322 if (pIndex < fSize) { 322 System.arraycopy(fRawEntries, vOffset, fRawEntries, vOffset + getFixedLengthEntry(), ( pIndex - fSize) * getFixedLengthEntry());323 System.arraycopy(fRawEntries, vOffset, fRawEntries, vOffset + getFixedLengthEntry(), (fSize - pIndex) * getFixedLengthEntry()); 323 324 } 324 325 marshallEntry(pElement, vOffset); -
trunk/Jav_Orient/src/eu/scenari/orient/tree/impl/RSTreeRake.java
r19681 r19687 88 88 if (vNewRake == null) return null; 89 89 ensureSize(vCurrentSize + 1); 90 //move 91 //note : write access lock is held on tree, no lock here. 92 for (int i = vCurrentSize - 1, l = pOffset; i >= l; i--) { 93 RSTreeNode<K, V> vNode = fChildren[i]; 94 fChildren[i + 1] = vNode; 95 if (vNode != null) vNode.setParent(this, i + 1); 96 } 90 97 RSTreeRake vRake = (RSTreeRake) createChildNode(vNewRake, pOffset); 91 int vCountToMove = vCurrentSize - pOffset - 1;92 if (vCountToMove > 0) {93 //move94 //note : write access lock is held on tree, no lock here.95 System.arraycopy(fChildren, pOffset, fChildren, pOffset + 1, vCountToMove);96 }97 98 fChildren[pOffset] = vRake; 99 assert (assertChildrenOffset()); 98 100 return vRake; 99 101 } 100 102 101 103 public RSTreeSlot<K, V> insertNewSlot(int pOffset) { 104 assert (assertChildrenOffset()); 102 105 int vCurrentSize = getProvider().getSize(); 103 assert (pOffset <= getProvider().getSize());106 assert (pOffset <= vCurrentSize); 104 107 ITreeSlotProvider<K, V> vNewSlot = getProvider().insertNewSlot(pOffset); 105 108 if (vNewSlot == null) return null; 106 109 ensureSize(vCurrentSize + 1); 107 RSTreeSlot vNode = (RSTreeSlot) createChildNode(vNewSlot, pOffset); 108 int vCountToMove = vCurrentSize - pOffset - 1; 109 if (vCountToMove > 0) { 110 //move 111 //note : write access lock is held on tree, no lock here. 112 System.arraycopy(fChildren, pOffset, fChildren, pOffset + 1, vCountToMove); 113 } 114 fChildren[pOffset] = vNode; 115 return vNode; 110 //move 111 //note : write access lock is held on tree, no lock here. 112 for (int i = vCurrentSize - 1, l = pOffset; i >= l; i--) { 113 RSTreeNode<K, V> vNode = fChildren[i]; 114 fChildren[i + 1] = vNode; 115 if (vNode != null) vNode.setParent(this, i + 1); 116 } 117 RSTreeSlot vSlot = (RSTreeSlot) createChildNode(vNewSlot, pOffset); 118 fChildren[pOffset] = vSlot; 119 assert (assertChildrenOffset()); 120 return vSlot; 116 121 } 117 122 … … 126 131 RSTreeNode<K, V>[] vRightChildren = vRight.fChildren; 127 132 System.arraycopy(vRightChildren, 0, fChildren, vNewSize - vMoved, vMoved); 128 System.arraycopy(vRightChildren, vMoved, vRightChildren, 0, vRightChildren.length - vMoved);129 133 for (int i = vNewSize - vMoved; i < vNewSize; i++) { 130 fChildren[i].setParent(this, i); 131 } 132 } 134 RSTreeNode<K, V> vNode = fChildren[i]; 135 if (vNode != null) vNode.setParent(this, i); 136 } 137 int vRightNewSize = vRight.getProvider().getSize(); 138 System.arraycopy(vRightChildren, vMoved, vRightChildren, 0, vRightNewSize); 139 for (int i = 0; i < vRightNewSize; i++) { 140 RSTreeNode<K, V> vNode = vRight.fChildren[i]; 141 if (vNode != null) vNode.setParent(this, i); 142 } 143 for (int i = vRightNewSize; i < vRightChildren.length; i++) { 144 vRight.fChildren[i] = null; 145 } 146 assert (vRight.assertChildrenOffset()); 147 } 148 assert (assertChildrenOffset()); 133 149 return vMoved; 134 150 } … … 143 159 //note : write access lock is held on tree, no lock here. 144 160 RSTreeNode<K, V>[] vLeftChildren = vLeft.fChildren; 161 int vLeftNewSize = vLeft.getProvider().getSize(); 145 162 System.arraycopy(fChildren, 0, fChildren, vMoved, vNewSize - vMoved); 146 System.arraycopy(vLeftChildren, vLeft.getProvider().getSize(), fChildren, 0, vMoved); 147 for (int i = 0; i < vMoved; i++) { 148 fChildren[i].setParent(this, i); 149 } 150 } 163 System.arraycopy(vLeftChildren, vLeftNewSize, fChildren, 0, vMoved); 164 for (int i = 0; i < vNewSize; i++) { 165 RSTreeNode<K, V> vNode = fChildren[i]; 166 if (vNode != null) vNode.setParent(this, i); 167 } 168 for (int i = vLeftNewSize, l = vLeftNewSize + vMoved; i < l; i++) { 169 vLeft.fChildren[i] = null; 170 } 171 assert (vLeft.assertChildrenOffset()); 172 } 173 assert (assertChildrenOffset()); 151 174 return vMoved; 152 175 } … … 163 186 System.arraycopy(vRightChildren, 0, fChildren, vOldSize, vNewSize - vOldSize); 164 187 for (int i = vOldSize; i < vNewSize; i++) { 165 fChildren[i].setParent(this, i); 166 } 188 RSTreeNode<K, V> vNode = fChildren[i]; 189 if (vNode != null) vNode.setParent(this, i); 190 } 191 assert (assertChildrenOffset()); 167 192 return true; 168 193 } 194 assert (assertChildrenOffset()); 169 195 return false; 170 196 } … … 181 207 System.arraycopy(fChildren, 0, fChildren, vMoved, vNewSize - vMoved); 182 208 System.arraycopy(vLeftChildren, 0, fChildren, 0, vMoved); 183 for (int i = 0; i < vMoved; i++) { 184 fChildren[i].setParent(this, i); 185 } 209 for (int i = 0; i < vNewSize; i++) { 210 RSTreeNode<K, V> vNode = fChildren[i]; 211 if (vNode != null) vNode.setParent(this, i); 212 } 213 assert (assertChildrenOffset()); 186 214 return true; 187 215 } 216 assert (assertChildrenOffset()); 188 217 return false; 189 218 } … … 269 298 vSlot.clearChildren(); 270 299 fTree.setRoot(vSlot); 300 assert (assertChildrenOffset()); 271 301 } 272 302 } else { … … 278 308 RSTreeNode<K, V> vNext = fChildren[i + 1]; 279 309 fChildren[i] = vNext; 280 vNext.setParent(this, i);310 if (vNext != null) vNext.setParent(this, i); 281 311 } 282 312 fChildren[vOldSize - 1] = null; … … 286 316 fParent.updateKey(fOffsetInParent, fProvider.getKey(0)); 287 317 } 318 assert (assertChildrenOffset()); 288 319 // Give a chance to optimize the tree. 289 320 fTree.fBalancingLayout.onRemovedEntry(this); … … 339 370 340 371 public void removeChildFromMemory(RSTreeNode<K, V> pNode) { 372 assert (pNode.fParent == this); 341 373 synchronized (this) { 342 374 fChildren[pNode.fOffsetInParent] = null; 343 375 //pNode.setParent(null, 0); no, will kill pending iterators. 344 376 } 377 assert (assertChildrenOffset()); 345 378 } 346 379 … … 361 394 } 362 395 } 396 397 protected boolean assertChildrenOffset() { 398 synchronized (this) { 399 for (int i = 0; i < fChildren.length; i++) { 400 RSTreeNode<K, V> vNode = fChildren[i]; 401 if (vNode != null) assert (vNode.fOffsetInParent == i) : vNode.fOffsetInParent + "!=" + i; 402 // if (vNode != null && vNode.fOffsetInParent != i) { 403 // System.out.println(vNode.fOffsetInParent + "!=" + i); 404 // break; 405 // } 406 } 407 } 408 return true; 409 } 363 410 } -
trunk/Jav_Orient/test/eu/scenari/orient/tree/TreeBasicIncrementalTest.java
r19680 r19687 39 39 package eu.scenari.orient.tree; 40 40 41 import java.util.Iterator;42 import java.util.Map;43 44 import junit.framework.Assert;45 46 41 import org.junit.Test; 47 42 48 import com.orientechnologies.orient.core.id.ORID;43 import eu.scenari.orient.tree.datafactory.FactorySequentialLong; 49 44 50 import eu.scenari.orient.recordstruct.IRecordStruct; 51 import eu.scenari.orient.recordstruct.lib.tree.ValueTree; 52 import eu.scenari.orient.test.TestDbAbstract; 53 54 public class TreeBasicTest extends TestDbAbstract { 55 56 public static int MAP_SIZE = 2000; 57 58 protected FactorySequentialLong fFactorySeqLong = new FactorySequentialLong(); 45 public class TreeBasicIncrementalTest extends TreeBasicTestAbstract { 59 46 60 47 @Override … … 63 50 64 51 @Test 65 public void test1() { 66 int vSize = MAP_SIZE; 67 fDatabase = fDbDriver.acquireDatabase(); 68 IRecordStruct<ValueTree<Long, Long>> vRecord = fDatabase.newInstance(); 69 vRecord.setValue((ValueTree) TypesTreeTests.TREE_LONG_LONG.toValue(null, vRecord)); 70 vRecord.save(); 71 ORID vId = vRecord.getIdentity(); 72 73 //Inserts 74 Map<Long, Long> vTree = vRecord.getValue().getPojo(); 75 for (int i = 1; i <= vSize; i++) { 76 Long vKey = fFactorySeqLong.newKey(); 77 vTree.put(vKey, fFactorySeqLong.newValueFor(vKey)); 78 vRecord.save(); 79 checkSize(vTree, i); 80 } 81 checkSize(vTree, vSize); 82 checkEntrySetIterator(vTree); 83 checkAllEntries(vTree); 84 85 //Sequential access 86 forceNewDatabase(); 87 vRecord = fDatabase.load(vId); 88 vTree = vRecord.getValue().getPojo(); 89 checkSize(vTree, vSize); 90 checkAllEntries(vTree); 91 92 //Unordered access 93 forceNewDatabase(); 94 vRecord = fDatabase.load(vId); 95 vTree = vRecord.getValue().getPojo(); 96 for (Iterator<Long> vIt = fFactorySeqLong.unorderedIterator(); vIt.hasNext();) { 97 Long vKey = vIt.next(); 98 fFactorySeqLong.checkValueForKey(vKey, vTree.get(vKey)); 99 } 100 101 //Remove entries 102 forceNewDatabase(); 103 vRecord = fDatabase.load(vId); 104 vTree = vRecord.getValue().getPojo(); 105 Long vKey = fFactorySeqLong.getUnorderedKeyToRemove(); 106 while (vKey != null) { 107 //System.out.println(vKey); 108 vTree.remove(vKey); 109 vRecord.save(); 110 // forceNewDatabase(); 111 // vRecord = fDatabase.load(vId); 112 // vTree = vRecord.getValue().getPojo(); 113 // checkSize(vTree, --vSize); 114 // checkAllEntries(vTree); 115 vKey = fFactorySeqLong.getUnorderedKeyToRemove(); 116 } 117 Assert.assertTrue(vTree.isEmpty()); 118 } 119 120 protected void checkSize(Map<Long, Long> pTree, int pSize) { 121 if (TypesTreeTests.STORE_SIZE) { 122 Assert.assertEquals(pTree.size(), pSize); 123 } 124 } 125 126 protected void checkEntrySetIterator(Map<Long, Long> pTree) { 127 int vCount = 0; 128 for (Map.Entry<Long, Long> vEntry : pTree.entrySet()) { 129 fFactorySeqLong.checkValueForKey(vEntry.getKey(), vEntry.getValue()); 130 vCount++; 131 } 132 checkSize(pTree, vCount); 133 } 134 135 protected void checkAllEntries(Map<Long, Long> pTree) { 136 int vCount = 0; 137 for (Iterator<Long> vIt = fFactorySeqLong.creationOrderIterator(); vIt.hasNext();) { 138 Long vKey = vIt.next(); 139 fFactorySeqLong.checkValueForKey(vKey, pTree.get(vKey)); 140 vCount++; 141 } 142 checkSize(pTree, vCount); 143 52 public void testIncrementalInserts() { 53 executeTest(new FactorySequentialLong(), TypesTreeTests.TREE_LL_INCR); 144 54 } 145 55 -
trunk/Jav_Orient/test/eu/scenari/orient/tree/TreeBigIncrementalTest.java
r19681 r19687 39 39 package eu.scenari.orient.tree; 40 40 41 import java.util.Iterator;42 import java.util.Map;43 44 import junit.framework.Assert;45 46 41 import org.junit.Test; 47 42 48 import com.orientechnologies.orient.core.Orient;43 import eu.scenari.orient.tree.datafactory.FactorySequentialLong; 49 44 50 import eu.scenari.orient.recordstruct.IRecordStruct; 51 import eu.scenari.orient.recordstruct.lib.tree.ValueTree; 52 import eu.scenari.orient.test.TestDbAbstract; 53 import eu.scenari.orient.tree.impl.RSTreeConcurrent; 54 55 public class TreeBigTest extends TestDbAbstract { 56 57 public static int MAP_SIZE = 1 * 1000000; 58 59 protected FactorySequentialLong fFactorySeqLong = new FactorySequentialLong(); 45 public class TreeBigIncrementalTest extends TreeBigTestAbstract { 60 46 61 47 @Override … … 64 50 65 51 @Test 66 public void test1() { 67 int vSize = MAP_SIZE; 68 fDatabase = fDbDriver.acquireDatabase(); 69 IRecordStruct<ValueTree<Long, Long>> vRecord = fDatabase.newInstance(); 70 vRecord.setValue((ValueTree) TypesTreeTests.TREE_LONG_LONG_C.toValue(null, vRecord)); 71 vRecord.save(); 72 Map<Long, Long> vTree = vRecord.getValue().getPojo(); 73 Orient.instance().getMemoryWatchDog().addListener((RSTreeConcurrent) vTree); 74 75 //Inserts 76 for (int i = 1; i <= vSize; i++) { 77 Long vKey = fFactorySeqLong.newKey(); 78 vTree.put(vKey, fFactorySeqLong.newValueFor(vKey)); 79 if (i % 100 == 0) { 80 vRecord.save(); 81 if (i % 10000 == 0) System.out.print('+'); 82 } 83 } 84 vRecord.save(); 85 System.out.println("[END INSERT]"); 86 checkSize(vTree, vSize); 87 System.out.println("[END CHECKSIZE]"); 88 checkEntrySetIterator(vTree); 89 System.out.println("[END CHECK ENTRY SET]"); 90 checkAllEntries(vTree); 91 System.out.println("[END CHECK ALL ENTRIES]"); 92 93 //Unordered access 94 for (Iterator<Long> vIt = fFactorySeqLong.unorderedIterator(); vIt.hasNext();) { 95 Long vKey = vIt.next(); 96 fFactorySeqLong.checkValueForKey(vKey, vTree.get(vKey)); 97 } 98 System.out.println("[END UNORDERED ACCESS]"); 99 100 //Remove entries 101 Long vKey = fFactorySeqLong.getUnorderedKeyToRemove(); 102 int i = 0; 103 while (vKey != null) { 104 i++; 105 //System.out.println(vKey); 106 vTree.remove(vKey); 107 if (i % 100 == 0) { 108 vRecord.save(); 109 if (i % 10000 == 0) System.out.print('-'); 110 } 111 // forceNewDatabase(); 112 // vRecord = fDatabase.load(vId); 113 // vTree = vRecord.getValue().getPojo(); 114 // checkSize(vTree, --vSize); 115 // checkAllEntries(vTree); 116 vKey = fFactorySeqLong.getUnorderedKeyToRemove(); 117 } 118 vRecord.save(); 119 Assert.assertTrue(vTree.isEmpty()); 120 } 121 122 protected void checkSize(Map<Long, Long> pTree, int pExpectedSize) { 123 if (TypesTreeTests.STORE_SIZE) { 124 Assert.assertEquals(pExpectedSize, pTree.size()); 125 } 126 } 127 128 protected void checkEntrySetIterator(Map<Long, Long> pTree) { 129 int vCount = 0; 130 for (Map.Entry<Long, Long> vEntry : pTree.entrySet()) { 131 fFactorySeqLong.checkValueForKey(vEntry.getKey(), vEntry.getValue()); 132 vCount++; 133 } 134 checkSize(pTree, vCount); 135 } 136 137 protected void checkAllEntries(Map<Long, Long> pTree) { 138 int vCount = 0; 139 for (Iterator<Long> vIt = fFactorySeqLong.creationOrderIterator(); vIt.hasNext();) { 140 Long vKey = vIt.next(); 141 fFactorySeqLong.checkValueForKey(vKey, pTree.get(vKey)); 142 vCount++; 143 } 144 checkSize(pTree, vCount); 145 52 public void testIncrementalInserts() { 53 executeTest(new FactorySequentialLong(), TypesTreeTests.TREE_LL_INCR_CONCUR); 146 54 } 147 55 -
trunk/Jav_Orient/test/eu/scenari/orient/tree/TypesTreeTests.java
r19680 r19687 11 11 public static boolean STORE_SIZE = true; 12 12 13 public static final TreeStorageConfig TREECONFIG_LONG_LONG = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE) 13 /** */ 14 public static final TreeStorageConfig TREECONFIG_LL_INCR = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE) 14 15 .setBalancingLayout(IBalancingLayout.DEFAULT_BALANCED_INCREMENTAL_INSERT).setRakeCapacity(32).setSlotCapacity(32); 15 16 16 public static final TreeStorageConfig TREECONFIG_LONG_LONG_C = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE) 17 /** */ 18 public static final TreeStorageConfig TREECONFIG_LL_INCR_CONCUR = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE) 17 19 .setBalancingLayout(IBalancingLayout.DEFAULT_BALANCED_INCREMENTAL_INSERT).setRakeCapacity(256).setSlotCapacity(256).setTreeThreadSafe(true); 18 20 19 public static final StructTree TREE_LONG_LONG = new StructTree(new ExtendedStructId(1, 1), "treeLongLong").setTreeConfig(TREECONFIG_LONG_LONG); 21 /** */ 22 public static final TreeStorageConfig TREECONFIG_LL_RANDOM = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE).setBalancingLayout(IBalancingLayout.DEFAULT_BALANCED_RANDOM_INSERT) 23 .setRakeCapacity(32).setSlotCapacity(32); 20 24 21 public static final StructTree TREE_LONG_LONG_C = new StructTree(new ExtendedStructId(1, 2), "treeLongLong_C").setTreeConfig(TREECONFIG_LONG_LONG_C); 25 /** */ 26 public static final TreeStorageConfig TREECONFIG_LL_RANDOM_CONCUR = new TreeStorageConfig().setKeysStruct(TypesBase.LIST_LONG).setValuesStruct(TypesBase.LIST_LONG).setSizeStored(STORE_SIZE) 27 .setBalancingLayout(IBalancingLayout.DEFAULT_BALANCED_RANDOM_INSERT).setRakeCapacity(256).setSlotCapacity(256).setTreeThreadSafe(true); 28 29 public static final StructTree TREE_LL_INCR = new StructTree(new ExtendedStructId(1, 1), "LL_INCR").setTreeConfig(TREECONFIG_LL_INCR); 30 31 public static final StructTree TREE_LL_INCR_CONCUR = new StructTree(new ExtendedStructId(1, 2), "LL_INCR_CONCUR").setTreeConfig(TREECONFIG_LL_INCR_CONCUR); 32 33 public static final StructTree TREE_LL_RANDOM = new StructTree(new ExtendedStructId(1, 3), "LL_RANDOM").setTreeConfig(TREECONFIG_LL_RANDOM); 34 35 public static final StructTree TREE_LL_RANDOM_CONCUR = new StructTree(new ExtendedStructId(1, 4), "LL_RANDOM_CONCUR").setTreeConfig(TREECONFIG_LL_RANDOM_CONCUR); 22 36 23 37 } -
trunk/Jav_Orient/test/eu/scenari/orient/tree/datafactory/FactorySequentialLong.java
r19678 r19687 1 package eu.scenari.orient.tree ;1 package eu.scenari.orient.tree.datafactory; 2 2 3 3 import java.util.Iterator; … … 9 9 import eu.scenari.commons.util.lang.ScException; 10 10 11 public class FactorySequentialLong implements IK eyFactory<Long>, IValueFactory<Long> {11 public class FactorySequentialLong implements IKVFactory<Long, Long> { 12 12 13 13 protected long fStartValue = 1; … … 59 59 } 60 60 61 public Long next() { 62 return tranfsormValue(super.next()); 63 } 64 61 65 public boolean isAlreadyReturned(Long pEntry) { 62 66 long vModulo = (pEntry.longValue() - fStartValue) % (long) fBase; … … 71 75 public Long newKey() { 72 76 if (fRemovedKeys != null) throw new ScException("Removes keys is started, create new keys not allowed."); 73 return fCounter.getAndIncrement();77 return tranfsormValue(fCounter.getAndIncrement()); 74 78 } 75 79 76 80 public Long peekRandomKey() { 77 return (long) fRandom.nextInt((int) (fCounter.get() + 1));81 return tranfsormValue((long) fRandom.nextInt((int) (fCounter.get() + 1))); 78 82 } 79 83 … … 100 104 return (fNext != null); 101 105 } 106 107 public Long next() { 108 return tranfsormValue(super.next()); 109 } 102 110 }; 103 111 } … … 107 115 return fRemovedKeys.hasNext() ? fRemovedKeys.next() : null; 108 116 } 117 118 protected Long tranfsormValue(Long pValue) { 119 return pValue; 120 } 121 122 //##### 109 123 110 124 public Long newValueFor(Object pKey) { -
trunk/Jav_Orient/test/eu/scenari/orient/tree/datafactory/FactorySequentialLongTest.java
r19678 r19687 1 package eu.scenari.orient.tree ;1 package eu.scenari.orient.tree.datafactory; 2 2 3 3 import java.util.HashSet; … … 11 11 12 12 @Test 13 public void test UnorderedIterator() {13 public void testFactorySequentialLong() { 14 14 FactorySequentialLong vFact = new FactorySequentialLong(); 15 15 HashSet vKeys = new HashSet(); 16 for (int i = 0; i < 253; i++) { 16 for (int i = 0; i < 5304; i++) { 17 vKeys.add(vFact.newKey()); 18 } 19 20 checkCreationOrderIt(vFact, new HashSet(vKeys)); 21 checkUnorderedIt(vFact, new HashSet(vKeys)); 22 23 Long vKeyToRemove = vFact.getUnorderedKeyToRemove(); 24 while (vKeyToRemove != null) { 25 vKeys.remove(vKeyToRemove); 26 checkCreationOrderIt(vFact, new HashSet(vKeys)); 27 checkUnorderedIt(vFact, new HashSet(vKeys)); 28 vKeyToRemove = vFact.getUnorderedKeyToRemove(); 29 } 30 Assert.assertEquals(0, vKeys.size()); 31 } 32 33 @Test 34 public void testFactoryUnorderedLong() { 35 FactorySequentialLong vFact = new FactoryUnorderedLong(); 36 HashSet vKeys = new HashSet(); 37 for (int i = 0; i < 5304; i++) { 17 38 vKeys.add(vFact.newKey()); 18 39 } … … 48 69 Assert.assertEquals(0, pKeys.size()); 49 70 } 71 50 72 } -
trunk/Jav_Orient/test/eu/scenari/orient/tree/datafactory/IKeyFactory.java
r19678 r19687 1 package eu.scenari.orient.tree ;1 package eu.scenari.orient.tree.datafactory; 2 2 3 3 import java.util.Iterator; -
trunk/Jav_Orient/test/eu/scenari/orient/tree/datafactory/IValueFactory.java
r19672 r19687 1 package eu.scenari.orient.tree ;1 package eu.scenari.orient.tree.datafactory; 2 2 3 3 public interface IValueFactory<V> { -
trunk/Jav_Orient/test/eu/scenari/orient/tree/perf/MVRBTreePerfTest.java
r19678 r19687 14 14 15 15 import eu.scenari.orient.test.TestDbAbstract; 16 import eu.scenari.orient.tree. FactorySequentialLong;16 import eu.scenari.orient.tree.datafactory.FactorySequentialLong; 17 17 18 18 public class MVRBTreePerfTest extends TestDbAbstract {
Note: See TracChangeset
for help on using the changeset viewer.