@Ignore @Test public void testOutOfBounds() throws Exception { random = new Random(42662); int HIGHEST_INT_POWER_OF_2 = 1073741824; boolean error = false; try { // The c'tor should throw the error VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, HIGHEST_INT_POWER_OF_2, LOAD_FACTOR, MODERATE_WB_SIZE, -1); } catch (MapJoinMemoryExhaustionError e) { error = true; } assert error; }
@Ignore @Test public void testOutOfBounds() throws Exception { random = new Random(42662); int HIGHEST_INT_POWER_OF_2 = 1073741824; boolean error = false; try { // The c'tor should throw the error VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, HIGHEST_INT_POWER_OF_2, LOAD_FACTOR, MODERATE_WB_SIZE, -1); } catch (MapJoinMemoryExhaustionError e) { error = true; } assert error; }
@Test public void testLargeAndExpand() throws Exception { random = new Random(21111); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,MODERATE_CAPACITY, LOAD_FACTOR, MODERATE_WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 1000; addAndVerifyMultipleKeyMultipleValue(keyCount, map, verifyTable); }
@Test public void testMultipleKeysMultipleValue() throws Exception { random = new Random(9332); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 1000; addAndVerifyMultipleKeyMultipleValue(keyCount, map, verifyTable); }
@Test public void testReallyBig() throws Exception { random = new Random(42662); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, MODERATE_WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 100; addAndVerifyMultipleKeyMultipleValue(keyCount, map, verifyTable); } }
@Test public void testReallyBig() throws Exception { random = new Random(42662); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,LARGE_CAPACITY, LOAD_FACTOR, MODERATE_WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 1000000; addAndVerifyMultipleKeyMultipleValue(keyCount, map, verifyTable); }
@Test public void testMultipleKeysMultipleValue() throws Exception { random = new Random(9332); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false,LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastBytesHashMap verifyTable = new VerifyFastBytesHashMap(); int keyCount = 100; addAndVerifyMultipleKeyMultipleValue(keyCount, map, verifyTable); }
@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 testMultiKeyRowsClipped2() throws Exception { random = new Random(7403); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "varchar(20)", "varchar(40)" }, /* doClipping */ true, /* useExactBytes */ false); }
@Test public void testMultiKeyRowsClipped3() throws Exception { random = new Random(99); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "float", "tinyint" }, /* doClipping */ true, /* useExactBytes */ false); }
@Test public void testMultiKeyRowsExact2() throws Exception { random = new Random(8235); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "smallint" }, /* doClipping */ false, /* useExactBytes */ true); }
@Test public void testMultiKeyRows1() throws Exception { random = new Random(833); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "int", "int" }, /* doClipping */ false, /* useExactBytes */ false); }
@Test public void testMultiKeyRows2() throws Exception { random = new Random(833099); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "string", "string" }, /* doClipping */ false, /* useExactBytes */ false); }
@Test public void testMultiKeyRowsClipped1() throws Exception { random = new Random(2331); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "varchar(20)", "date", "interval_day_time" }, /* doClipping */ true, /* useExactBytes */ false); }
@Test public void testMultiKeyRowsExact3() throws Exception { random = new Random(8235); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "int", "binary" }, /* doClipping */ false, /* useExactBytes */ true); }
@Test public void testMultiKeyRowsClippedExact3() throws Exception { random = new Random(7); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "bigint", "string", "varchar(5000)" }, /* doClipping */ true, /* useExactBytes */ true); } }
@Test public void testMultiKeyRowsExact1() throws Exception { random = new Random(8235); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "string", "string", "string", "string" }, /* doClipping */ false, /* useExactBytes */ true); }
@Test public void testMultiKeyRowsClippedExact1() throws Exception { random = new Random(13); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "interval_year_month", "decimal(12,8)" }, /* doClipping */ true, /* useExactBytes */ true); }
@Test public void testMultiKeyRowsClippedExact2() throws Exception { random = new Random(12); // Use a large capacity that doesn't require expansion, yet. VectorMapJoinFastMultiKeyHashMap map = new VectorMapJoinFastMultiKeyHashMap( false, LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1); VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap(); VectorRandomRowSource valueSource = new VectorRandomRowSource(); valueSource.init( random, VectorRandomRowSource.SupportedTypes.ALL, 4, /* allowNulls */ false, /* isUnicodeOk */ false); int rowCount = 1000; Object[][] rows = valueSource.randomRows(rowCount); addAndVerifyRows(valueSource, rows, map, HashTableKeyType.MULTI_KEY, verifyTable, new String[] { "bigint", "string", "int" }, /* doClipping */ true, /* useExactBytes */ true); }