@Override public boolean equals(Object obj) { if (obj instanceof HashedArray) { HashedArray ha = (HashedArray) obj; return this.hashCode == ha.hashCode && arrayEquals(this, ha); } return false; }
@Override public boolean equals(Object obj) { if (obj instanceof TableKey) { TableKey other = (TableKey) obj; return HashedArray.arrayEquals(this.key, other.key) && this.version == other.version; } return false; }
@Override protected SearchContinuation processResult(TableKey result, ArrayView soughtKey) { if (HashedArray.arrayEquals(soughtKey, result.getKey())) { // Match. return SearchContinuation.ResultFound; } else { // No match: Continue searching if possible. return SearchContinuation.Continue; } }
@Override public boolean equals(Object obj) { if (obj instanceof TableEntry) { TableEntry other = (TableEntry) obj; return this.key.equals(other.key) && ((this.value == null && other.value == null) || (this.value != null && other.value != null && HashedArray.arrayEquals(this.value, other.getValue()))); } return false; } }
Assert.assertTrue("Unexpected value for non-deleted Key.", HashedArray.arrayEquals(expectedEntry.getValue(), actual.getValue())); Assert.assertTrue("Unexpected key for non-deleted Key.", HashedArray.arrayEquals(expectedKey, actual.getKey().getKey())); Assert.assertEquals("Unexpected TableKey.Version for non-deleted Key.", expectedEntry.getVersion(), actual.getKey().getVersion());
/** * Tests the ability to locate Table Keys in a Table Bucket using {@link TableBucketReader#key}. */ @Test public void testFindKey() throws Exception { val segment = new SegmentMock(executorService()); // Generate our test data and append it to the segment. val data = generateData(); segment.append(data.serialization, null, TIMEOUT).join(); val reader = TableBucketReader.key(segment, (s, offset, timeout) -> CompletableFuture.completedFuture(data.getBackpointer(offset)), executorService()); // Check a valid result. val validKey = data.entries.get(1).getKey(); val validResult = reader.find(validKey.getKey(), data.getBucketOffset(), new TimeoutTimer(TIMEOUT)).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); Assert.assertEquals("Unexpected version from valid key.", data.getEntryOffset(1), validResult.getVersion()); Assert.assertTrue("Unexpected 'valid' key returned.", HashedArray.arrayEquals(validKey.getKey(), validResult.getKey())); // Check a key that does not exist. val invalidKey = data.unlinkedEntry.getKey(); val invalidResult = reader.find(invalidKey.getKey(), data.getBucketOffset(), new TimeoutTimer(TIMEOUT)).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); Assert.assertNull("Not expecting any result for key that does not exist.", invalidResult); }
/** * Tests the ability to locate Table Entries in a Table Bucket using {@link TableBucketReader#key}. */ @Test public void testFindEntry() throws Exception { val segment = new SegmentMock(executorService()); // Generate our test data and append it to the segment. val data = generateData(); segment.append(data.serialization, null, TIMEOUT).join(); val reader = TableBucketReader.entry(segment, (s, offset, timeout) -> CompletableFuture.completedFuture(data.getBackpointer(offset)), executorService()); // Check a valid result. val validEntry = data.entries.get(1); val validResult = reader.find(validEntry.getKey().getKey(), data.getBucketOffset(), new TimeoutTimer(TIMEOUT)).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); Assert.assertEquals("Unexpected version from valid key.", data.getEntryOffset(1), validResult.getKey().getVersion()); Assert.assertTrue("Unexpected 'valid' key returned.", HashedArray.arrayEquals(validEntry.getKey().getKey(), validResult.getKey().getKey())); Assert.assertTrue("Unexpected 'valid' key returned.", HashedArray.arrayEquals(validEntry.getValue(), validResult.getValue())); // Check a key that does not exist. val invalidKey = data.unlinkedEntry.getKey(); val invalidResult = reader.find(invalidKey.getKey(), data.getBucketOffset(), new TimeoutTimer(TIMEOUT)).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); Assert.assertNull("Not expecting any result for key that does not exist.", invalidResult); }