c.deserialize(b); assertEquals(2, c.size()); Object o = c.get(0); assertEquals("String1", o); o = c.get(1); assertEquals("String2", o); c = new DynamicComposite(); c.deserialize(b); o = c.get(0); assertTrue(o instanceof Long); c = new DynamicComposite(); c.deserialize(b); o = c.get(0); assertTrue(o instanceof Float); b = c.serialize(); c = DynamicComposite.fromByteBuffer(b); o = c.get(0); assertTrue(o instanceof UUID); assertEquals(UUIDTYPE.getTypeName(), c.getComponent(0).getComparator()); b = c.serialize(); c = DynamicComposite.fromByteBuffer(b); o = c.get(0); assertTrue(o instanceof UUID); assertEquals(UUIDTYPE.getTypeName(), c.getComponent(0).getComparator());
for ( HColumn<ByteBuffer, ByteBuffer> result : results.getColumns() ) { String name = entityHasDictionary ? string( result.getName() ) : DynamicComposite.fromByteBuffer( result.getName() ).get( 0, se ); if ( entityHasDictionary && coTypeIsBasic ) { values.put( name, object( dictionaryCoType, result.getValue() ) );
UUID uuid = c.get( 2, ue );
@Test public void testUUIDGetAll() { // Gets all columns in the row regardless of the column name init(); // Get all rows Set<UUID> results = new HashSet<UUID>(); ColumnSliceIterator<String, DynamicComposite, String> iterator = getIterator(rowKey, null, null); while(iterator.hasNext()) { HColumn<DynamicComposite, String> column = iterator.next(); DynamicComposite composite = column.getName(); UUID component1 = composite.get(1, us); results.add(component1); } assertEquals("Failed to retrieve all columns", 8, results.size()); }
@Override public Object get(DynamicComposite composite, int index) { return composite.get(index, SER); }
@Override public Object get(DynamicComposite composite, int index) { return composite.get(index, serializer); }
@Test public void testUUIDGetSlice() { // Gets all columns based on the first component in the column name Map<UUID, Set<UUID>> ids = init(); for(Entry<UUID, Set<UUID>> entry : ids.entrySet()) { UUID component0 = entry.getKey(); // start at first column who's single component == component0 DynamicComposite start = new DynamicComposite(); start.addComponent(component0, us); // up to and including any column whose first component == component0 regardless of remaining component values DynamicComposite end = new DynamicComposite(); end.addComponent(component0, us, us.getComparatorType().getTypeName(), ComponentEquality.GREATER_THAN_EQUAL); ColumnSliceIterator<String, DynamicComposite, String> iterator = getIterator(rowKey, start, end); while(iterator.hasNext()) { HColumn<DynamicComposite, String> column = iterator.next(); DynamicComposite composite = column.getName(); assertEquals(component0, composite.get(0, us)); assertTrue(ids.get(component0).contains(composite.get(1, us))); } } }
assertEquals("AsciiText", parsed.get(0, AsciiSerializer.get())); assertArrayEquals(new byte[]{0, 1, 2, 3}, parsed.get(1, BytesArraySerializer.get())); assertEquals(Integer.valueOf(-1), parsed.get(2, IntegerSerializer.get())); assertEquals(lexUUID, parsed.get(3, UUIDSerializer.get())); assertEquals(Long.valueOf(-1l), parsed.get(4, LongSerializer.get())); assertEquals(timeUUID, parsed.get(5, TimeUUIDSerializer.get())); assertEquals("UTF8Text", parsed.get(6, StringSerializer.get())); assertEquals(lexUUID, parsed.get(7, UUIDSerializer.get())); assertEquals("AsciiText", parsed.get(8, AsciiSerializer.get())); assertArrayEquals(new byte[]{0, 1, 2, 3}, parsed.get(9, BytesArraySerializer.get())); assertEquals(Integer.valueOf(-1), parsed.get(10, IntegerSerializer.get())); assertEquals(lexUUID, parsed.get(11, UUIDSerializer.get())); assertEquals(Long.valueOf(-1l), parsed.get(12, LongSerializer.get())); assertEquals(timeUUID, parsed.get(13, TimeUUIDSerializer.get())); assertEquals("UTF8Text", parsed.get(14, StringSerializer.get())); assertEquals(lexUUID, parsed.get(15, UUIDSerializer.get())); assertEquals("My element", parsed.get(16, StringSerializer.get()));
/** * Tests the case where start is 0 and the loaded count is greater than * cassandra rows window */ @Test public void multiPageAdvanceThenLoad() { ByteBuffer rowKey = generateComposites(2000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), null, rowKey); // advance 0 int advanced = iterator.advance(1400); assertEquals(1400, advanced); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(1399, value); // there should only be 200 that are loaded int loaded = iterator.loadNext(1000); assertEquals(600, loaded); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(1399, value); iterator.advance(600); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(1999, value); }
/** * Tests the case where start is 0 and the loaded count is greater than * cassandra rows window */ @Test public void preloadedNoRecordsLeft() { ByteBuffer rowKey = generateComposites(100); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(100, ComponentEquality.GREATER_THAN_EQUAL), rowKey); // advance 0 int advanced = iterator.advance(50); assertEquals(50, advanced); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(49, value); int loaded = iterator.loadNext(51); assertEquals(50, loaded); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(49, value); iterator.advance(50); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(99, value); }
/** * Tests the case where start is in the middle of the loaded range and the * loaded count is greater than cassandra rows window */ @Test public void preloadedAdvance() { ByteBuffer rowKey = generateComposites(100); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(100, ComponentEquality.GREATER_THAN_EQUAL), rowKey); int advanced = iterator.advance(50); assertEquals(50, advanced); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(49, value); int loaded = iterator.loadNext(50); assertEquals(50, loaded); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(49, value); iterator.advance(50); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(99, value); }
/** * Tests the case where start is 0 and the loaded count is greater than * cassandra rows window */ @Test public void multiPageAdvance() { ByteBuffer rowKey = generateComposites(2000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), null, rowKey); // advance 0 int advanced = iterator.advance(1400); assertEquals(1400, advanced); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(1399, value); // there should only be 200 that are loaded int loaded = iterator.loadNext(1000); assertEquals(600, loaded); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(1399, value); }
/** * Tests the case where we advance to the very end of the set. From there * loadNext will return no values */ @Test public void multiPageAdvanceUpperLimit() { ByteBuffer rowKey = generateComposites(1000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(799, ComponentEquality.EQUAL), rowKey); // advance 800 int advanced = iterator.advance(800); assertEquals(800, advanced); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(799, value); // there should only be 200 that are loaded from the saved range, but the // upper limit of the range scan restricts the value // therefore 0 should be loaded int loaded = iterator.loadNext(300); assertEquals(0, loaded); value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(799, value); }
/** * Tests the case where we advance to the very end of the set. From there * loadNext will return no values */ @Test public void loadWithoutAdvance() { ByteBuffer rowKey = generateComposites(1000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(799, ComponentEquality.EQUAL), rowKey); // there should only be 200 that are loaded int loaded = iterator.loadNext(1000); assertEquals(800, loaded); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(0, value); }
/** * Tests the case where we advance to the very end of the set. From there * loadNext will return no values */ @Test public void loadWithoutAdvanceBeyondRange() { ByteBuffer rowKey = generateComposites(1000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), null, rowKey); // there should only be 200 that are loaded int loaded = iterator.loadNext(2000); assertEquals(1000, loaded); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(0, value); // can only advance 999 b/c we're already at index 0 int advanced = iterator.advance(1000); assertEquals(999, advanced); assertNull(iterator.current()); }
/** * Tests the case where start is 0 and the size is within the fetch size * window */ @Test public void preLoaded() { ByteBuffer rowKey = generateComposites(100); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(100, ComponentEquality.GREATER_THAN_EQUAL), rowKey); int advanced = iterator.advance(0); assertEquals(0, advanced); assertNull(iterator.current()); int loaded = iterator.loadNext(100); assertEquals(100, loaded); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(0, value); }
/** * Tests the case where start is 0 and the loaded count is greater than * cassandra rows window */ @Test public void noRecordsLeft() { ByteBuffer rowKey = generateComposites(100); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), genComposite(100, ComponentEquality.GREATER_THAN_EQUAL), rowKey); int advanced = iterator.advance(0); assertEquals(0, advanced); assertNull(iterator.current()); int loaded = iterator.loadNext(101); assertEquals(100, loaded); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(0, value); }
/** * Tests the case where start is 0 and the loaded count is greater than * cassandra rows window */ @Test public void multiPageLoad() { ByteBuffer rowKey = generateComposites(1000); ScanBuffer iterator = new ScanBuffer(CassandraTestBase.keyspace, genComposite(0, ComponentEquality.EQUAL), null, rowKey); // advance 0 int advanced = iterator.advance(0); assertEquals(0, advanced); assertNull(iterator.current()); // there should only be 200 that are loaded int loaded = iterator.loadNext(2000); assertEquals(1000, loaded); int value = iterator.current().get(0, IntegerSerializer.get()); assertEquals(0, value); // advance beyond the possible range iterator.advance(2000); assertNull(iterator.current()); }