Skip to content

Commit 1099d04

Browse files
committed
Add deleteLog(String) method and tests
1 parent 99a4a16 commit 1099d04

3 files changed

Lines changed: 68 additions & 0 deletions

File tree

gcloud-java-logging/src/main/java/com/google/cloud/logging/Logging.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,20 @@ public static ListOption pageToken(String pageToken) {
137137
*/
138138
Future<Boolean> deleteSinkAsync(String sink);
139139

140+
/**
141+
* Deletes a log and all its log entries. The log will reappear if new entries are written to it.
142+
*
143+
* @return {@code true} if the log was deleted, {@code false} if it was not found
144+
*/
145+
boolean deleteLog(String log);
146+
147+
/**
148+
* Sends a request for deleting a log and all its log entries. This method returns a
149+
* {@code Future} object to consume the result. {@link Future#get()} returns {@code true} if the
150+
* log was deleted, {@code false} if it was not found.
151+
*/
152+
Future<Boolean> deleteLogAsync(String log);
153+
140154
/**
141155
* Lists the monitored resource descriptors used by Google Cloud Logging. This method returns a
142156
* {@link Page} object that can be used to consume paginated results. Use {@link ListOption} to

gcloud-java-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.cloud.PageImpl;
3030
import com.google.cloud.logging.spi.LoggingRpc;
3131
import com.google.cloud.logging.spi.v2.ConfigServiceV2Api;
32+
import com.google.cloud.logging.spi.v2.LoggingServiceV2Api;
3233
import com.google.cloud.logging.spi.v2.MetricsServiceV2Api;
3334
import com.google.common.base.Function;
3435
import com.google.common.base.Throwables;
@@ -39,6 +40,7 @@
3940
import com.google.logging.v2.CreateLogMetricRequest;
4041
import com.google.logging.v2.CreateSinkRequest;
4142
import com.google.logging.v2.DeleteLogMetricRequest;
43+
import com.google.logging.v2.DeleteLogRequest;
4244
import com.google.logging.v2.DeleteSinkRequest;
4345
import com.google.logging.v2.GetLogMetricRequest;
4446
import com.google.logging.v2.GetSinkRequest;
@@ -249,6 +251,17 @@ public Future<Boolean> deleteSinkAsync(String sink) {
249251
return lazyTransform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION);
250252
}
251253

254+
public boolean deleteLog(String log) {
255+
return get(deleteLogAsync(log));
256+
}
257+
258+
public Future<Boolean> deleteLogAsync(String log) {
259+
DeleteLogRequest request = DeleteLogRequest.newBuilder()
260+
.setLogName(LoggingServiceV2Api.formatLogName(options().projectId(), log))
261+
.build();
262+
return lazyTransform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION);
263+
}
264+
252265
private static ListMonitoredResourceDescriptorsRequest listMonitoredResourceDescriptorsRequest(
253266
Map<Option.OptionType, ?> options) {
254267
ListMonitoredResourceDescriptorsRequest.Builder builder =

gcloud-java-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.google.logging.v2.CreateLogMetricRequest;
4040
import com.google.logging.v2.CreateSinkRequest;
4141
import com.google.logging.v2.DeleteLogMetricRequest;
42+
import com.google.logging.v2.DeleteLogRequest;
4243
import com.google.logging.v2.DeleteSinkRequest;
4344
import com.google.logging.v2.GetLogMetricRequest;
4445
import com.google.logging.v2.GetSinkRequest;
@@ -84,6 +85,8 @@ public class LoggingImplTest {
8485
com.google.api.MonitoredResourceDescriptor.getDefaultInstance();
8586
private static final MonitoredResourceDescriptor DESCRIPTOR =
8687
MonitoredResourceDescriptor.fromPb(DESCRIPTOR_PB);
88+
private static final String LOG_NAME = "log";
89+
private static final String LOG_NAME_PB = "projects/" + PROJECT + "/logs/" + LOG_NAME;
8790
private static final Function<SinkInfo, LogSink> SINK_TO_PB_FUNCTION =
8891
new Function<SinkInfo, LogSink>() {
8992
@Override
@@ -1080,4 +1083,42 @@ public void testListResourceDescriptorAsyncWithOptions()
10801083
assertArrayEquals(descriptorList.toArray(),
10811084
Iterables.toArray(page.values(), MonitoredResourceDescriptor.class));
10821085
}
1086+
1087+
@Test
1088+
public void testDeleteLog() {
1089+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1090+
Future<Empty> response = Futures.immediateFuture(Empty.getDefaultInstance());
1091+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(response);
1092+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1093+
logging = options.service();
1094+
assertTrue(logging.deleteLog(LOG_NAME));
1095+
}
1096+
1097+
@Test
1098+
public void testDeleteLog_Null() {
1099+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1100+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(Futures.<Empty>immediateFuture(null));
1101+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1102+
logging = options.service();
1103+
assertFalse(logging.deleteLog(LOG_NAME));
1104+
}
1105+
1106+
@Test
1107+
public void testDeleteLogAync() throws ExecutionException, InterruptedException {
1108+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1109+
Future<Empty> response = Futures.immediateFuture(Empty.getDefaultInstance());
1110+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(response);
1111+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1112+
logging = options.service();
1113+
assertTrue(logging.deleteLogAsync(LOG_NAME).get());
1114+
}
1115+
1116+
@Test
1117+
public void testDeleteLogAsync_Null() throws ExecutionException, InterruptedException {
1118+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1119+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(Futures.<Empty>immediateFuture(null));
1120+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1121+
logging = options.service();
1122+
assertFalse(logging.deleteLogAsync(LOG_NAME).get());
1123+
}
10831124
}

0 commit comments

Comments
 (0)