Skip to content

Commit 504ef74

Browse files
authored
test(logging): re-enable ITSinkTest and scope sink cleanup to test prefix (googleapis#13367)
Fixes googleapis#11906 (b/482174880) Ensure setUp() only cleans up leaked test sinks matching TEST_SINK_PREFIX, avoiding PERMISSION_DENIED errors on immutable built-in system sinks (_Required, _Default). Also wraps test verification logic in try...finally blocks for robust self-cleanup.
1 parent 6006f47 commit 504ef74

2 files changed

Lines changed: 28 additions & 20 deletions

File tree

java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/testing/RemoteLoggingHelper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
public class RemoteLoggingHelper {
3838

3939
private static final Logger log = Logger.getLogger(RemoteLoggingHelper.class.getName());
40+
public static final String TEST_SINK_PREFIX = "test-";
4041
private final LoggingOptions options;
4142

4243
private RemoteLoggingHelper(LoggingOptions options) {
@@ -96,7 +97,8 @@ public static RemoteLoggingHelper create() {
9697
* name.
9798
*/
9899
public static String formatForTest(String name) {
99-
return name + "-" + UUID.randomUUID();
100+
String prefix = name.startsWith(TEST_SINK_PREFIX) ? "" : TEST_SINK_PREFIX;
101+
return prefix + name + "-" + UUID.randomUUID();
100102
}
101103

102104
private static RetrySettings retrySettings() {

java-logging/google-cloud-logging/src/test/java/com/google/cloud/logging/it/ITSinkTest.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.logging.it;
1818

19+
import static com.google.cloud.logging.testing.RemoteLoggingHelper.TEST_SINK_PREFIX;
1920
import static com.google.cloud.logging.testing.RemoteLoggingHelper.formatForTest;
2021
import static org.junit.Assert.assertEquals;
2122
import static org.junit.Assert.assertFalse;
@@ -34,7 +35,6 @@
3435
import java.util.Iterator;
3536
import java.util.Set;
3637
import org.junit.BeforeClass;
37-
import org.junit.Ignore;
3838
import org.junit.Test;
3939

4040
public class ITSinkTest extends BaseSystemTest {
@@ -47,6 +47,9 @@ public static void setUp() {
4747
Iterator<Sink> iterator = sinkPage.iterateAll().iterator();
4848
while (iterator.hasNext()) {
4949
Sink sink = iterator.next();
50+
if (!sink.getName().startsWith(TEST_SINK_PREFIX)) {
51+
continue;
52+
}
5053
try {
5154
sink.delete();
5255
} catch (Exception ex) {
@@ -56,33 +59,36 @@ public static void setUp() {
5659
}
5760

5861
@Test
59-
@Ignore
6062
public void testCreateGetUpdateAndDeleteSink() {
61-
String name = formatForTest("test-create-get-update-sink");
63+
String name = formatForTest("create-get-update-sink");
6264
SinkInfo sinkInfo =
6365
SinkInfo.newBuilder(name, SinkInfo.Destination.DatasetDestination.of("dataset"))
6466
.setFilter("severity>=ERROR")
6567
.setVersionFormat(SinkInfo.VersionFormat.V2)
6668
.build();
6769
Sink sink = logging.create(sinkInfo);
68-
assertEquals(name, sink.getName());
69-
assertEquals(SinkInfo.VersionFormat.V2, sink.getVersionFormat());
70-
assertEquals("severity>=ERROR", sink.getFilter());
71-
SinkInfo.Destination.DatasetDestination datasetDestination = sink.getDestination();
72-
assertEquals(logging.getOptions().getProjectId(), datasetDestination.getProject());
73-
assertEquals("dataset", datasetDestination.getDataset());
74-
assertEquals(sink, logging.getSink(name));
75-
sink = sink.toBuilder().setFilter("severity<=ERROR").build().update();
76-
assertEquals(name, sink.getName());
77-
assertEquals(SinkInfo.VersionFormat.V2, sink.getVersionFormat());
78-
assertEquals("severity<=ERROR", sink.getFilter());
79-
assertTrue(sink.delete());
80-
assertFalse(sink.delete());
70+
try {
71+
assertEquals(name, sink.getName());
72+
assertEquals(SinkInfo.VersionFormat.V2, sink.getVersionFormat());
73+
assertEquals("severity>=ERROR", sink.getFilter());
74+
SinkInfo.Destination.DatasetDestination datasetDestination = sink.getDestination();
75+
assertEquals(logging.getOptions().getProjectId(), datasetDestination.getProject());
76+
assertEquals("dataset", datasetDestination.getDataset());
77+
assertEquals(sink, logging.getSink(name));
78+
sink = sink.toBuilder().setFilter("severity<=ERROR").build().update();
79+
assertEquals(name, sink.getName());
80+
assertEquals(SinkInfo.VersionFormat.V2, sink.getVersionFormat());
81+
assertEquals("severity<=ERROR", sink.getFilter());
82+
assertTrue(sink.delete());
83+
assertFalse(sink.delete());
84+
} finally {
85+
logging.deleteSink(name);
86+
}
8187
}
8288

8389
@Test
8490
public void testUpdateNonExistingSink() {
85-
String name = formatForTest("test-update-non-existing-sink");
91+
String name = formatForTest("update-non-existing-sink");
8692
SinkInfo sinkInfo =
8793
SinkInfo.newBuilder(name, SinkInfo.Destination.DatasetDestination.of("dataset"))
8894
.setFilter("severity>=ERROR")
@@ -99,8 +105,8 @@ public void testUpdateNonExistingSink() {
99105

100106
@Test
101107
public void testListSinks() throws InterruptedException {
102-
String firstName = formatForTest("test-list-sinks-1");
103-
String secondName = formatForTest("test-list-sinks-2");
108+
String firstName = formatForTest("list-sinks-1");
109+
String secondName = formatForTest("list-sinks-2");
104110
Sink firstSink =
105111
logging.create(
106112
SinkInfo.of(firstName, SinkInfo.Destination.DatasetDestination.of("dataset")));

0 commit comments

Comments
 (0)