@Test public void testOneKey() throws Exception { random = new Random(82733); VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,CAPACITY, LOAD_FACTOR, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); byte[] key = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key); byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); // Second value. value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); // Third value. value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); verifyTable.verifyNonMatched(map, random); }
@Test public void testOneKey() throws Exception { random = new Random(82733); VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,CAPACITY, LOAD_FACTOR, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); byte[] key = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key); byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); verifyTable.verify(map); // Second value. value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); verifyTable.verify(map); // Third value. value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); verifyTable.verify(map); }
@Test public void testMultipleKeysSingleValue() throws Exception { random = new Random(29383); VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,CAPACITY, LOAD_FACTOR, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 100 + random.nextInt(1000); for (int i = 0; i < keyCount; i++) { byte[] key = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key); if (!verifyTable.contains(key)) { // Unique keys for this test. break; } byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); verifyTable.verify(map); } }
@Test public void testMultipleKeysSingleValue() throws Exception { random = new Random(29383); VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,CAPACITY, LOAD_FACTOR, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 100 + random.nextInt(1000); for (int i = 0; i < keyCount; i++) { byte[] key = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key); if (!verifyTable.contains(key)) { // Unique keys for this test. break; } byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); } verifyTable.verifyNonMatched(map, random); }
@Test public void testExpand() throws Exception { random = new Random(99221); // Start with capacity 1; make sure we expand on every put. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap(false,1, 0.0000001f, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); for (int i = 0; i < 18; ++i) { byte[] key; while (true) { key = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key); if (!verifyTable.contains(key)) { // Unique keys for this test. break; } } byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value); // verifyTable.verify(map); } verifyTable.verify(map); // assertEquals(1 << 18, map.getCapacity()); }
map.testPutRow(key, value); verifyTable.add(key, value); map.testPutRow(randomExistingKey, value);
map.testPutRow(key, value); verifyTable.add(key, value); } else { byte[] randomExistingKey = verifyTable.addRandomExisting(value, random); map.testPutRow(randomExistingKey, value);
random.nextBytes(value); map.testPutRow(key, value); verifyTable.add(key, value);
@Test public void testGetNonExistent() throws Exception { random = new Random(1002); VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,CAPACITY, LOAD_FACTOR, WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); byte[] key1 = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key1); byte[] value = new byte[random.nextInt(MAX_VALUE_LENGTH)]; random.nextBytes(value); map.testPutRow(key1, value); verifyTable.add(key1, value); verifyTable.verify(map); byte[] key2 = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key2); VectorMapJoinHashMapResult hashMapResult = map.createHashMapResult(); JoinUtil.JoinResult joinResult = map.lookup(key2, 0, key2.length, hashMapResult); assertTrue(joinResult == JoinUtil.JoinResult.NOMATCH); assertTrue(!hashMapResult.hasRows()); map.testPutRow(key2, value); verifyTable.add(key2, value); verifyTable.verify(map); byte[] key3 = new byte[random.nextInt(MAX_KEY_LENGTH)]; random.nextBytes(key3); hashMapResult = map.createHashMapResult(); joinResult = map.lookup(key3, 0, key3.length, hashMapResult); assertTrue(joinResult == JoinUtil.JoinResult.NOMATCH); assertTrue(!hashMapResult.hasRows()); }