@Test public void testRead() throws IOException { onTableGet(basicTableSchema()); TableDataList dataList = rawDataList(rawRow("Arthur", 42)); onTableList(dataList); try (BigQueryTableRowIterator iterator = BigQueryTableRowIterator.of( mockClient, BigQueryIO.parseTableSpec("project:dataset.table"))) { Assert.assertTrue(iterator.hasNext()); TableRow row = iterator.next(); Assert.assertTrue(row.containsKey("name")); Assert.assertTrue(row.containsKey("answer")); Assert.assertEquals("Arthur", row.get("name")); Assert.assertEquals(42, row.get("answer")); Assert.assertFalse(iterator.hasNext()); verifyTableGet(); verifyTabledataList(); } }
@Test public void testReadOpenFailure() throws IOException { thrown.expect(RuntimeException.class); when(mockClient.tables()).thenReturn(mockTables); when(mockTables.get(anyString(), anyString(), anyString())).thenReturn(mockTablesGet); when(mockTablesGet.execute()).thenThrow(new IOException("No such table")); try (BigQueryTableRowIterator iterator = BigQueryTableRowIterator.of( mockClient, BigQueryIO.parseTableSpec("project:dataset.table"))) { try { Assert.assertFalse(iterator.hasNext()); // throws. } finally { verifyTableGet(); } } }
@Test public void testReadEmpty() throws IOException { onTableGet(basicTableSchema()); // BigQuery may respond with a page token for an empty table, ensure we // handle it. TableDataList dataList = new TableDataList().setPageToken("FEED==").setTotalRows(0L); onTableList(dataList); try (BigQueryTableRowIterator iterator = BigQueryTableRowIterator.of( mockClient, BigQueryIO.parseTableSpec("project:dataset.table"))) { Assert.assertFalse(iterator.hasNext()); verifyTableGet(); verifyTabledataList(); } }