Skip to content

Commit bd5835f

Browse files
authored
chore: Fix flaky range partition test (#4072)
* chore: Fix flaky range partition test * chore: assert only on matching partition table * chore: Add logic to check if table is found * chore: create unique datasets for each test * chore: Remove unused OTHER_DATASET * chore: Add try-finally to ensure dataset is deleted
1 parent 2af2b2b commit bd5835f

File tree

1 file changed

+77
-61
lines changed

1 file changed

+77
-61
lines changed

google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java

Lines changed: 77 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@ class ITBigQueryTest {
223223
private static final String DATASET = RemoteBigQueryHelper.generateDatasetName();
224224
private static final String UK_DATASET = RemoteBigQueryHelper.generateDatasetName();
225225
private static final String DESCRIPTION = "Test dataset";
226-
private static final String OTHER_DATASET = RemoteBigQueryHelper.generateDatasetName();
227226
private static final String MODEL_DATASET = RemoteBigQueryHelper.generateDatasetName();
228227
private static final String ROUTINE_DATASET = RemoteBigQueryHelper.generateDatasetName();
229228
private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId();
@@ -1190,7 +1189,6 @@ static void afterClass() throws Exception {
11901189
if (bigquery != null) {
11911190
RemoteBigQueryHelper.forceDelete(bigquery, DATASET);
11921191
RemoteBigQueryHelper.forceDelete(bigquery, UK_DATASET);
1193-
RemoteBigQueryHelper.forceDelete(bigquery, OTHER_DATASET);
11941192
RemoteBigQueryHelper.forceDelete(bigquery, MODEL_DATASET);
11951193
RemoteBigQueryHelper.forceDelete(bigquery, ROUTINE_DATASET);
11961194
}
@@ -1347,67 +1345,76 @@ void testGetDatasetWithAccessPolicyVersion() throws IOException {
13471345

13481346
@Test
13491347
void testUpdateDataset() {
1348+
String datasetName = RemoteBigQueryHelper.generateDatasetName();
13501349
Dataset dataset =
13511350
bigquery.create(
1352-
DatasetInfo.newBuilder(OTHER_DATASET)
1351+
DatasetInfo.newBuilder(datasetName)
13531352
.setDescription("Some Description")
13541353
.setLabels(Collections.singletonMap("a", "b"))
13551354
.build());
1356-
assertThat(dataset).isNotNull();
1357-
assertThat(dataset.getDatasetId().getProject()).isEqualTo(bigquery.getOptions().getProjectId());
1358-
assertThat(dataset.getDatasetId().getDataset()).isEqualTo(OTHER_DATASET);
1359-
assertThat(dataset.getDescription()).isEqualTo("Some Description");
1360-
assertThat(dataset.getLabels()).containsExactly("a", "b");
1361-
assertThat(dataset.getStorageBillingModel()).isNull();
1362-
assertThat(dataset.getMaxTimeTravelHours()).isNull();
1363-
1364-
Map<String, String> updateLabels = new HashMap<>();
1365-
updateLabels.put("x", "y");
1366-
updateLabels.put("a", null);
1367-
Dataset updatedDataset =
1368-
bigquery.update(
1369-
dataset.toBuilder()
1370-
.setDescription("Updated Description")
1371-
.setLabels(updateLabels)
1372-
.setStorageBillingModel("LOGICAL")
1373-
.setMaxTimeTravelHours(MAX_TIME_TRAVEL_HOURS)
1374-
.build());
1375-
assertThat(updatedDataset.getDescription()).isEqualTo("Updated Description");
1376-
assertThat(updatedDataset.getLabels()).containsExactly("x", "y");
1377-
assertThat(updatedDataset.getStorageBillingModel()).isEqualTo("LOGICAL");
1378-
assertThat(updatedDataset.getMaxTimeTravelHours()).isEqualTo(MAX_TIME_TRAVEL_HOURS);
1379-
1380-
updatedDataset = bigquery.update(updatedDataset.toBuilder().setLabels(null).build());
1381-
assertThat(updatedDataset.getLabels()).isEmpty();
1382-
assertThat(dataset.delete()).isTrue();
1355+
try {
1356+
assertThat(dataset).isNotNull();
1357+
assertThat(dataset.getDatasetId().getProject())
1358+
.isEqualTo(bigquery.getOptions().getProjectId());
1359+
assertThat(dataset.getDatasetId().getDataset()).isEqualTo(datasetName);
1360+
assertThat(dataset.getDescription()).isEqualTo("Some Description");
1361+
assertThat(dataset.getLabels()).containsExactly("a", "b");
1362+
assertThat(dataset.getStorageBillingModel()).isNull();
1363+
assertThat(dataset.getMaxTimeTravelHours()).isNull();
1364+
1365+
Map<String, String> updateLabels = new HashMap<>();
1366+
updateLabels.put("x", "y");
1367+
updateLabels.put("a", null);
1368+
Dataset updatedDataset =
1369+
bigquery.update(
1370+
dataset.toBuilder()
1371+
.setDescription("Updated Description")
1372+
.setLabels(updateLabels)
1373+
.setStorageBillingModel("LOGICAL")
1374+
.setMaxTimeTravelHours(MAX_TIME_TRAVEL_HOURS)
1375+
.build());
1376+
assertThat(updatedDataset.getDescription()).isEqualTo("Updated Description");
1377+
assertThat(updatedDataset.getLabels()).containsExactly("x", "y");
1378+
assertThat(updatedDataset.getStorageBillingModel()).isEqualTo("LOGICAL");
1379+
assertThat(updatedDataset.getMaxTimeTravelHours()).isEqualTo(MAX_TIME_TRAVEL_HOURS);
1380+
1381+
updatedDataset = bigquery.update(updatedDataset.toBuilder().setLabels(null).build());
1382+
assertThat(updatedDataset.getLabels()).isEmpty();
1383+
} finally {
1384+
dataset.delete();
1385+
}
13831386
}
13841387

13851388
@Test
13861389
void testUpdateDatasetWithSelectedFields() {
1390+
String datasetName = RemoteBigQueryHelper.generateDatasetName();
13871391
Dataset dataset =
13881392
bigquery.create(
1389-
DatasetInfo.newBuilder(OTHER_DATASET).setDescription("Some Description").build());
1390-
assertNotNull(dataset);
1391-
assertEquals(bigquery.getOptions().getProjectId(), dataset.getDatasetId().getProject());
1392-
assertEquals(OTHER_DATASET, dataset.getDatasetId().getDataset());
1393-
assertEquals("Some Description", dataset.getDescription());
1394-
Dataset updatedDataset =
1395-
bigquery.update(
1396-
dataset.toBuilder().setDescription("Updated Description").build(),
1397-
DatasetOption.fields(DatasetField.DESCRIPTION));
1398-
assertEquals("Updated Description", updatedDataset.getDescription());
1399-
assertNull(updatedDataset.getCreationTime());
1400-
assertNull(updatedDataset.getDefaultTableLifetime());
1401-
assertNull(updatedDataset.getAcl());
1402-
assertNull(updatedDataset.getEtag());
1403-
assertNull(updatedDataset.getFriendlyName());
1404-
assertNull(updatedDataset.getGeneratedId());
1405-
assertNull(updatedDataset.getLastModified());
1406-
assertNull(updatedDataset.getLocation());
1407-
assertNull(updatedDataset.getSelfLink());
1408-
assertNull(updatedDataset.getStorageBillingModel());
1409-
assertNull(updatedDataset.getMaxTimeTravelHours());
1410-
assertTrue(dataset.delete());
1393+
DatasetInfo.newBuilder(datasetName).setDescription("Some Description").build());
1394+
try {
1395+
assertNotNull(dataset);
1396+
assertEquals(bigquery.getOptions().getProjectId(), dataset.getDatasetId().getProject());
1397+
assertEquals(datasetName, dataset.getDatasetId().getDataset());
1398+
assertEquals("Some Description", dataset.getDescription());
1399+
Dataset updatedDataset =
1400+
bigquery.update(
1401+
dataset.toBuilder().setDescription("Updated Description").build(),
1402+
DatasetOption.fields(DatasetField.DESCRIPTION));
1403+
assertEquals("Updated Description", updatedDataset.getDescription());
1404+
assertNull(updatedDataset.getCreationTime());
1405+
assertNull(updatedDataset.getDefaultTableLifetime());
1406+
assertNull(updatedDataset.getAcl());
1407+
assertNull(updatedDataset.getEtag());
1408+
assertNull(updatedDataset.getFriendlyName());
1409+
assertNull(updatedDataset.getGeneratedId());
1410+
assertNull(updatedDataset.getLastModified());
1411+
assertNull(updatedDataset.getLocation());
1412+
assertNull(updatedDataset.getSelfLink());
1413+
assertNull(updatedDataset.getStorageBillingModel());
1414+
assertNull(updatedDataset.getMaxTimeTravelHours());
1415+
} finally {
1416+
dataset.delete();
1417+
}
14111418
}
14121419

14131420
@Test
@@ -2680,17 +2687,26 @@ void testListTablesWithRangePartitioning() {
26802687
try {
26812688
Page<Table> tables = bigquery.listTables(DATASET);
26822689
boolean found = false;
2683-
Iterator<Table> tableIterator = tables.getValues().iterator();
2684-
while (tableIterator.hasNext() && !found) {
2685-
StandardTableDefinition standardTableDefinition = tableIterator.next().getDefinition();
2686-
if (standardTableDefinition.getRangePartitioning() != null) {
2687-
assertEquals(RANGE_PARTITIONING, standardTableDefinition.getRangePartitioning());
2688-
assertEquals(RANGE, standardTableDefinition.getRangePartitioning().getRange());
2689-
assertEquals("IntegerField", standardTableDefinition.getRangePartitioning().getField());
2690-
found = true;
2690+
for (Table table : tables.getValues()) {
2691+
// Look for the table that matches the newly partitioned table. Other tables in the
2692+
// dataset may not be partitioned and cannot match to them.
2693+
if (!table
2694+
.getTableId()
2695+
.getTable()
2696+
.equals(createdRangePartitioningTable.getTableId().getTable())) {
2697+
continue;
26912698
}
2699+
2700+
StandardTableDefinition standardTableDefinition = table.getDefinition();
2701+
RangePartitioning rangePartitioning = standardTableDefinition.getRangePartitioning();
2702+
assertNotNull(rangePartitioning);
2703+
assertEquals(RANGE_PARTITIONING, rangePartitioning);
2704+
assertEquals(RANGE, rangePartitioning.getRange());
2705+
assertEquals("IntegerField", rangePartitioning.getField());
2706+
found = true;
2707+
break;
26922708
}
2693-
assertTrue(found);
2709+
assertTrue(found, "Created range partitioned table was not found in the dataset list.");
26942710
} finally {
26952711
createdRangePartitioningTable.delete();
26962712
}

0 commit comments

Comments
 (0)