Column<Boolean> column = row.getColumns().getColumnByName( COLUMN_NAME );
@Override public CmbAstyanaxColumn<N, V> getColumnByName(N name) { if (astyanaxColumns.getColumnByName(name) != null) { return new CmbAstyanaxColumn<N, V>(astyanaxColumns.getColumnByName(name)); } else { return null; } } private void loadColumns() {
private <T> void testColumnValue(ColumnList<String> response, String columnName, List<String> columnNames, T value) { // by column name Column<String> column = response.getColumnByName(columnName); Assert.assertEquals(columnName, column.getName()); testColumnValue(column, value); }
private <T> void testColumnValue(ColumnList<String> result, String columnName, List<String> columnNames, T expectedValue) { // by column name Column<String> column = result.getColumnByName(columnName); Assert.assertEquals(columnName, column.getName()); testColumnValue(column, expectedValue); // // by column index // int index = columnNames.indexOf(columnName); // column = result.getColumnByIndex(index); // testColumnValue(column, expectedValue); }
/** * Utility method for pulling data from Cassandra Row into an FilterInfo object * * @param row * @return */ public FilterInfo getFilterScriptFromCassandraRow(Row<String, String> row) { String filterName = null; int revision = -1; try { ColumnList<String> columns = row.getColumns(); filterName = columns.getColumnByName("filter_name").getStringValue(); String filter_id = columns.getColumnByName("filter_id").getStringValue(); String filterType = columns.getColumnByName("filter_type").getStringValue(); String filterDisable = columns.getColumnByName("filter_disable") != null ? columns.getColumnByName("filter_disable").getStringValue() : "?"; String filterOrder = columns.getColumnByName("filter_order") != null ? columns.getColumnByName("filter_order").getStringValue() : "?"; revision = (int) columns.getColumnByName("revision").getLongValue(); boolean isActive = columns.getColumnByName("active").getBooleanValue(); boolean isCanary = columns.getColumnByName("canary").getBooleanValue(); Date creationDate = columns.getColumnByName("creation_date").getDateValue(); String filterCode = new String(columns.getColumnByName("filter_code").getByteArrayValue()); String application_name = columns.getColumnByName("application_name").getStringValue(); FilterInfo filterInfo = new FilterInfo(filter_id, revision, creationDate, isActive, isCanary, filterCode, filterType, filterName, filterDisable, filterOrder, application_name); return filterInfo; } catch (Exception e) { // unable to retrieve data for this row, could be missing the uri column (which shouldn't happen) logger.warn("Unable to retrieve data from row => uri : " + filterName + " revision: " + revision + " row: " + row, e); return null; } }
/** * Utility method for pulling data from Cassandra Row into an FilterInfo object * * @param row * @return */ public FilterInfo getFilterScriptFromCassandraRow(Row<String, String> row) { String filterName = null; int revision = -1; try { ColumnList<String> columns = row.getColumns(); filterName = columns.getColumnByName("filter_name").getStringValue(); String filter_id = columns.getColumnByName("filter_id").getStringValue(); FilterType filterType = FilterType.valueOf(columns.getColumnByName("filter_type").getStringValue()); String filterDisable = columns.getColumnByName("filter_disable") != null ? columns.getColumnByName("filter_disable").getStringValue() : "?"; String filterOrder = columns.getColumnByName("filter_order") != null ? columns.getColumnByName("filter_order").getStringValue() : "?"; revision = (int) columns.getColumnByName("revision").getLongValue(); boolean isActive = columns.getColumnByName("active").getBooleanValue(); boolean isCanary = columns.getColumnByName("canary").getBooleanValue(); Date creationDate = columns.getColumnByName("creation_date").getDateValue(); String filterCode = new String(columns.getColumnByName("filter_code").getByteArrayValue()); String application_name = columns.getColumnByName("application_name").getStringValue(); FilterInfo filterInfo = new FilterInfo(filter_id, revision, creationDate, isActive, isCanary, filterCode, filterType, filterName, filterDisable, filterOrder, application_name); return filterInfo; } catch (Exception e) { // unable to retrieve data for this row, could be missing the uri column (which shouldn't happen) logger.warn("Unable to retrieve data from row => uri : " + filterName + " revision: " + revision + " row: " + row, e); return null; } }
when(columnList.getColumnByName(columnName)).thenReturn(column); return column;
@Test public void testSingleRowColumnSliceQueryWithCollection() throws Exception { for (int i=0; i<TestRowCount; i++) { ColumnList<String> result = keyspace.prepareQuery(CF_USER_INFO) .withCaching(true) .getRow("acct_" + i) .withColumnSlice("firstname", "lastname", "address", "age") .execute() .getResult(); Assert.assertNotNull(result); Assert.assertTrue(4 == result.size()); Assert.assertEquals("john_" + i, result.getColumnByName("firstname").getStringValue()); Assert.assertEquals("smith_" + i, result.getColumnByName("lastname").getStringValue()); Assert.assertEquals("john smith address " + i, result.getColumnByName("address").getStringValue()); Assert.assertTrue(30 + i == result.getColumnByName("age").getIntegerValue()); } }
private FeatureState toFeatureState(Feature feature, ColumnList<String> state) { final Column<String> enabled = state.getColumnByName(ENABLED_COLUMN); final Column<String> strategyId = state.getColumnByName(STRATEGY_ID_COLUMN); final Column<String> strategyValues = state.getColumnByName(STRATEGY_PARAMS_COLUMN); final FeatureState featureState = new FeatureState(feature); featureState.setEnabled(enabled != null && enabled.getBooleanValue()); featureState.setStrategyId(strategyId != null ? strategyId.getStringValue() : null); if (strategyValues != null) { final Map<String, String> params = mapSerializer.deserialize(strategyValues.getStringValue()); for (final Entry<String, String> entry : params.entrySet()) { featureState.setParameter(entry.getKey(), entry.getValue()); } } return featureState; }
private void performSimpleRowQueryForRow(String rowKey, boolean rowDeleted, String expectedChar) throws Exception { ColumnList<String> result = keyspace.prepareQuery(CF_ACCOUNTS).getRow(rowKey).execute().getResult(); if (rowDeleted) { Assert.assertTrue(result.isEmpty()); } else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("user"); Assert.assertEquals("user" + expectedChar, col.getStringValue()); col = result.getColumnByName("pswd"); Assert.assertEquals("pswd" + expectedChar, col.getStringValue()); } }
when(columnList.getColumnByName(columnName)).thenReturn(column); return column;
@Test public void testHasValue() throws Exception { MutationBatch m = keyspace.prepareMutationBatch(); m.withRow(CF_USER_INFO, "acct1234") .putColumn("firstname", "john", null) .putColumn("lastname", "smith", null) .putColumn("address", "555 Elm St", null) .putColumn("age", 30, null) .putEmptyColumn("empty"); m.execute(); ColumnList<String> response = keyspace.prepareQuery(CF_USER_INFO).getRow("acct1234").execute().getResult(); Assert.assertEquals("firstname", response.getColumnByName("firstname").getName()); Assert.assertEquals("firstname", response.getColumnByName("firstname").getName()); Assert.assertEquals("john", response.getColumnByName("firstname").getStringValue()); Assert.assertEquals("john", response.getColumnByName("firstname").getStringValue()); Assert.assertEquals(true, response.getColumnByName("firstname").hasValue()); Assert.assertEquals(false, response.getColumnByName("empty").hasValue()); }
private void performRowSliceQueryWithAllColumns(boolean rowDeleted) throws Exception { List<String> keys = new ArrayList<String>(); for (char keyName = 'A'; keyName <= 'Z'; keyName++) { keys.add(Character.toString(keyName)); } int index = 0; Rows<String, String> rows = keyspace.prepareQuery(CF_ACCOUNTS).getRowSlice(keys).execute().getResult(); if (rowDeleted) { Assert.assertTrue(rows.isEmpty()); } else { Assert.assertFalse(rows.isEmpty()); for (com.netflix.astyanax.model.Row<String, String> row : rows) { Assert.assertEquals(keys.get(index),row.getKey()); ColumnList<String> cols = row.getColumns(); Assert.assertFalse(cols.isEmpty()); Column<String> col = cols.getColumnByName("user"); Assert.assertEquals("user" + keys.get(index), col.getStringValue()); col = cols.getColumnByName("pswd"); Assert.assertEquals("pswd" + keys.get(index), col.getStringValue()); index++; } } }
public String getFilterIdsRaw(String index) { Rows<String, String> result = cassandraGateway.select("select filter_ids from zuul_filter_indices where index_name = '" + index + "'"); if (result == null || result.isEmpty()) { return ""; } else { Iterator<Row<String, String>> iterator = result.iterator(); if (iterator.hasNext()) { Row<String, String> row = iterator.next(); try { String filter_ids = row.getColumns().getColumnByName("filter_ids").getStringValue(); if (filter_ids == null) return ""; return filter_ids; } catch (Exception e) { // unable to retrieve data for this row, could be missing the uri column (which shouldn't happen) logger.warn("Unable to retrieve uri for row", e); } } return ""; } }
@Override public String getFilterIdsRaw(String index) { Rows<String, String> result = cassandraGateway.select("select filter_ids from zuul_filter_indices where index_name = '" + index + "'"); if (result == null || result.isEmpty()) { return ""; } else { Iterator<Row<String, String>> iterator = result.iterator(); if (iterator.hasNext()) { Row<String, String> row = iterator.next(); try { String filter_ids = row.getColumns().getColumnByName("filter_ids").getStringValue(); if (filter_ids == null) return ""; return filter_ids; } catch (Exception e) { // unable to retrieve data for this row, could be missing the uri column (which shouldn't happen) logger.warn("Unable to retrieve uri for row", e); } } return ""; } }
} else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("user"); Assert.assertEquals("user" + expectedChar, col.getStringValue()); col = result.getColumnByName("pswd"); Assert.assertEquals("pswd" + expectedChar, col.getStringValue()); } else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("user"); Assert.assertEquals("user" + expectedChar, col.getStringValue()); } else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("pswd"); Assert.assertEquals("pswd" + expectedChar, col.getStringValue()); } else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("user"); Assert.assertEquals("user" + expectedChar, col.getStringValue()); col = result.getColumnByName("pswd"); Assert.assertEquals("pswd" + expectedChar, col.getStringValue()); } else { Assert.assertFalse(result.isEmpty()); Column<String> col = result.getColumnByName("pswd"); Assert.assertEquals("pswd" + expectedChar, col.getStringValue());
@Test public void testTtlValues() throws Exception { MutationBatch mb = keyspace.prepareMutationBatch(); mb.withRow(CF_TTL, "row") .putColumn("TTL0", "TTL0", 0) .putColumn("TTLNULL", "TTLNULL", null) .putColumn("TTL1", "TTL1", 1); mb.execute(); Thread.sleep(2000); ColumnList<String> result = keyspace.prepareQuery(CF_TTL) .getRow("row") .execute().getResult(); Assert.assertEquals(2, result.size()); Assert.assertNotNull(result.getColumnByName("TTL0")); Assert.assertNotNull(result.getColumnByName("TTLNULL")); } }
@Test public void testSingleColumnMutation() throws Exception { keyspace.prepareColumnMutation(CF_SINGLE_COLUMN, 1L, "1").putValue("11", null).execute(); keyspace.prepareColumnMutation(CF_SINGLE_COLUMN, 1L, "2").putValue("22", null).execute(); keyspace.prepareColumnMutation(CF_SINGLE_COLUMN, 1L, "3").putValue("33", null).execute(); ColumnList<String> result = keyspace.prepareQuery(CF_SINGLE_COLUMN).getRow(1L).execute().getResult(); Assert.assertTrue(3 == result.size()); Assert.assertEquals("11", result.getColumnByName("1").getStringValue()); Assert.assertEquals("22", result.getColumnByName("2").getStringValue()); Assert.assertEquals("33", result.getColumnByName("3").getStringValue()); keyspace.prepareColumnMutation(CF_SINGLE_COLUMN, 1L, "2").putEmptyColumn(null).execute(); keyspace.prepareColumnMutation(CF_SINGLE_COLUMN, 1L, "3").deleteColumn().execute(); result = keyspace.prepareQuery(CF_SINGLE_COLUMN).getRow(1L).execute().getResult(); Assert.assertTrue(2 == result.size()); Assert.assertEquals("11", result.getColumnByName("1").getStringValue()); Assert.assertNull(result.getColumnByName("2").getStringValue()); } }
Assert.assertNotNull(result1.getColumnByName(1L)); Assert.assertNotNull(result1.getColumnByName(2L)); .setTimestamp(result1.getColumnByName(1L).getTimestamp()-1) .deleteColumn(1L) .setTimestamp(result1.getColumnByName(2L).getTimestamp()-1) .deleteColumn(2L) .putEmptyColumn(3L, null); .setTimestamp(result1.getColumnByName(1L).getTimestamp()+1) .deleteColumn(1L) .setTimestamp(result1.getColumnByName(2L).getTimestamp()+1) .deleteColumn(2L); mb.execute();
/** * Read from a {@link CassandraNode} using the Astyanax API. * @throws ConnectionException */ public void readData(String keyspaceName) throws ConnectionException { // Create context AstyanaxContext<Keyspace> context = newAstyanaxContextForKeyspace(keyspaceName); try { Keyspace keyspace = context.getEntity(); // Query data OperationResult<ColumnList<String>> query = keyspace.prepareQuery(sampleColumnFamily) .getKey("one") .execute(); assertEquals(query.getHost().getHostName(), hostname); assertTrue(query.getLatency() > 0L); ColumnList<String> columns = query.getResult(); assertEquals(columns.size(), 2); // Lookup columns in response by name String name = columns.getColumnByName("name").getStringValue(); assertEquals(name, "Alice"); // Iterate through the columns for (Column<String> c : columns) { assertTrue(ImmutableList.of("name", "company").contains(c.getName())); } } finally { context.shutdown(); } }