@Override public boolean hasRows() { return rows != null && !this.rows.isEmpty(); }
@Override public boolean hasRows() { return rows != null && !this.rows.isEmpty(); }
@Override public void success(Rows<K,C> rows) { if (rows != null && !rows.isEmpty()) { for (Row<K,C> row : rows) { list.add(row); } } }
@Test public void testGetScriptForLatestEndpointReturnsNullWhenNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); FilterInfo filterInfo = dao.getLatestFilterInfoForFilter("/unknown/filter"); assertNull(filterInfo); }
@Test public void testGetScriptForEndpointAndRevisionReturnsNullWhenNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); FilterInfo filterInfo = dao.getFilterInfoForFilter("/unknown/filter", 2); assertNull(filterInfo); }
/** * We don't want a NULL when an filter is not found, instead we want an empty list. */ @Test public void testGetScriptForEndpointReturnsEmptyListInsteadOfNullWhenEndpointNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); List<FilterInfo> list = dao.getZuulFiltersForFilterId("/unknown/Filter"); assertNotNull(list); assertEquals(0, list.size()); }
@Test public void testGetScriptForEndpointAndRevisionReturnsNullWhenNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); FilterInfo filterInfo = dao.getFilterInfoForFilter("/unknown/filter", 2); assertNull(filterInfo); }
@Test public void testGetScriptForLatestEndpointReturnsNullWhenNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); FilterInfo filterInfo = dao.getLatestFilterInfoForFilter("/unknown/filter"); assertNull(filterInfo); }
public List<FilterInfo> getFiltersForIndex(String index) { List<String> filterInfoList = getFilterIdsIndex(index); if (filterInfoList.isEmpty()) { return Collections.emptyList(); } Rows<String, String> result = cassandraGateway.getByFilterIds(filterInfoList); if (result == null || result.isEmpty()) { return Collections.emptyList(); } else { List<FilterInfo> filterInfos = new ArrayList<FilterInfo>(); Iterator<Row<String, String>> rows = result.iterator(); while (rows.hasNext()) { Row<String, String> row = rows.next(); FilterInfo script = getFilterScriptFromCassandraRow(row); if (script != null) { filterInfos.add(script); } } Collections.sort(filterInfos); return filterInfos; } }
/** * We don't want a NULL when there are no Filters, instead we want an empty list. */ @Test public void testGetAllFiltersReturnsEmptyListInsteadOfNullWhenNoFilters() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); List<String> list = dao.getAllFilterIDs(); assertNotNull(list); assertEquals(0, list.size()); }
/** * We don't want a NULL when an filter is not found, instead we want an empty list. */ @Test public void testGetScriptForEndpointReturnsEmptyListInsteadOfNullWhenEndpointNotFound() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); List<FilterInfo> list = dao.getZuulFiltersForFilterId("/unknown/Filter"); assertNotNull(list); assertEquals(0, list.size()); }
/** * We don't want a NULL when there are no Filters, instead we want an empty list. */ @Test public void testGetAllFiltersReturnsEmptyListInsteadOfNullWhenNoFilters() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(true); List<String> list = dao.getAllFilterIDs(); assertNotNull(list); assertEquals(0, list.size()); }
@SuppressWarnings("unchecked") @Test public void testGetFilterIdsIndex() { ZuulFilterDAO dao = new ZuulFilterDAOCassandra(gateway); // setup empty response String fids = "filter1|filter2|filter3"; /* create mock response data */ Row<String, String> row0 = mockRow(); ColumnList<String> columnList0 = mockColumnList(row0); mockColumn(columnList0, "filter_ids", fids); // when(response.getRowByIndex(0)).thenReturn(row0); Iterator<Row<String, String>> iterator = (Iterator<Row<String, String>>) mock(Iterator.class); when(response.iterator()).thenReturn(iterator); when(iterator.hasNext()).thenReturn(true, false); // 1 row when(iterator.next()).thenReturn(row0, (Row) null); when(gateway.select(anyString())).thenReturn(response); when(response.isEmpty()).thenReturn(false); when(response.size()).thenReturn(1); /* exercise the method we're testing */ List<String> list = dao.getFilterIdsIndex("index"); /* validate responses */ assertEquals(list.size(), 3); assertEquals(list.get(0), "filter1"); assertEquals(list.get(1), "filter2"); assertEquals(list.get(2), "filter3"); }
@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 ""; } }
private void testRowKeysWithAllColumns(boolean rowDeleted) throws Exception { Set<String> rowKeys = getRandomRowKeys(); Rows<String, String> rows = keyspace.prepareQuery(CF_COLUMN_RANGE_TEST).getRowSlice(rowKeys).execute().getResult(); if (rowDeleted) { Assert.assertTrue(rows.isEmpty()); return; } Assert.assertFalse(rows.isEmpty()); int rowKeysSize = rowKeys.size(); for (Row<String, String> row : rows) { boolean isPresent = rowKeys.remove(row.getKey()); Assert.assertTrue("Extraneous row: " + row.getKey(), isPresent); ColumnList<String> colList = row.getColumns(); Assert.assertEquals(26, colList.size()); for(int index=0; index<26; index++) { Column<String> col = colList.getColumnByIndex(index); Assert.assertTrue(String.valueOf((char)('a' + index)).equals(col.getName())); Assert.assertEquals(index + 1, col.getIntegerValue()); } } Assert.assertEquals(rowKeysSize, rows.size()); }
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 ""; } }
private void testReadMultipleRowKeysWithAllColumns(boolean rowDeleted) throws Exception { Rows<Integer, Population> result = keyspace.prepareQuery(CF_POPULATION) .getKeySlice(2001, 2002, 2003, 2004, 2005) .execute().getResult(); if (rowDeleted) { Assert.assertTrue(result.isEmpty()); } else { checkRowResult(result, 2001, 5, SanDiego, SanFrancisco, NewYork, Seattle); } }
private static void mockGetScriptForEndpoint(Rows<String, String> response, String filter) { /* mock data so that the getScriptForEndpoint at the end of the method will work */ Calendar now = Calendar.getInstance(); Row<String, String> row0 = mockRow(); ColumnList<String> columnList0 = mockColumnList(row0); mockColumn(columnList0, "filter_id", filter); mockColumn(columnList0, "revision", 1L); mockColumn(columnList0, "active", false); mockColumn(columnList0, "creation_date", now.getTime()); mockColumn(columnList0, "filter_code", "System.out.println(\"hello world\")".getBytes()); // what we put here doesn't matter mockColumn(columnList0, "filter_name", "name"); mockColumn(columnList0, "filter_type", "INBOUND"); mockColumn(columnList0, "canary", false); when(response.getRowByIndex(0)).thenReturn(row0); when(response.isEmpty()).thenReturn(true, false); // true on the first request, false thereafter when(response.size()).thenReturn(1); } }
private static void mockGetScriptForEndpoint(Rows<String, String> response, String filter) { /* mock data so that the getScriptForEndpoint at the end of the method will work */ Calendar now = Calendar.getInstance(); Row<String, String> row0 = mockRow(); ColumnList<String> columnList0 = mockColumnList(row0); mockColumn(columnList0, "filter_id", filter); mockColumn(columnList0, "revision", 1L); mockColumn(columnList0, "active", false); mockColumn(columnList0, "creation_date", now.getTime()); mockColumn(columnList0, "filter_code", "System.out.println(\"hello world\")".getBytes()); // what we put here doesn't matter mockColumn(columnList0, "filter_name", "name"); mockColumn(columnList0, "filter_type", "type"); mockColumn(columnList0, "canary", false); when(response.getRowByIndex(0)).thenReturn(row0); when(response.isEmpty()).thenReturn(true, false); // true on the first request, false thereafter when(response.size()).thenReturn(1); } }
private void testReadRowRangeWithAllColumns(boolean rowDeleted) throws Exception { List<TestRange> testRanges = getTestRanges(); for (TestRange testRange : testRanges) { Rows<Integer, Population> result = keyspace.prepareQuery(CF_POPULATION) .getKeyRange(null, null, testRange.start, testRange.end, 100) .execute().getResult(); if (rowDeleted) { Assert.assertTrue(result.isEmpty()); } else { checkRowResult(result, testRange.expectedRowKeys, SanDiego, SanFrancisco, NewYork, Seattle); } } }