Skip to content

Commit 552997c

Browse files
author
simonz130
committed
fix: make ListLogEntries use 24hr filter
1 parent 024b73d commit 552997c

File tree

2 files changed

+81
-16
lines changed

2 files changed

+81
-16
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.google.cloud.MonitoredResource;
3737
import com.google.cloud.MonitoredResourceDescriptor;
3838
import com.google.cloud.PageImpl;
39+
import com.google.cloud.logging.Logging.EntryListOption.OptionType;
3940
import com.google.cloud.logging.spi.v2.LoggingRpc;
4041
import com.google.common.annotations.VisibleForTesting;
4142
import com.google.common.base.Function;
@@ -48,7 +49,12 @@
4849
import com.google.common.util.concurrent.Uninterruptibles;
4950
import com.google.logging.v2.*;
5051
import com.google.protobuf.Empty;
52+
53+
import java.text.DateFormat;
54+
import java.text.SimpleDateFormat;
5155
import java.util.ArrayList;
56+
import java.util.Calendar;
57+
import java.util.Date;
5258
import java.util.List;
5359
import java.util.Map;
5460
import java.util.concurrent.ConcurrentHashMap;
@@ -631,6 +637,11 @@ static ListLogEntriesRequest listLogEntriesRequest(
631637
if (filter != null) {
632638
builder.setFilter(filter);
633639
}
640+
else {
641+
// If filter is not specified, default filter is looking back 24 hours in line with gcloud behavior
642+
builder.setFilter(createDefaultTimeRangeFilter());
643+
}
644+
634645
return builder.build();
635646
}
636647

@@ -692,4 +703,20 @@ public void close() throws Exception {
692703
int getNumPendingWrites() {
693704
return pendingWrites.size();
694705
}
706+
707+
private static String createDefaultTimeRangeFilter() {
708+
DateFormat rfcDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
709+
return "timestamp>=\"" + rfcDateFormat.format(yesterday()) + "\"";
710+
}
711+
712+
private static Date yesterday() {
713+
Calendar calendar = Calendar.getInstance();
714+
calendar.add(Calendar.DATE, -1);
715+
calendar.set(Calendar.HOUR_OF_DAY, 0);
716+
calendar.set(Calendar.MINUTE, 0);
717+
calendar.set(Calendar.SECOND, 0);
718+
calendar.set(Calendar.MILLISECOND, 0);
719+
720+
return calendar.getTime();
721+
}
695722
}

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

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@
6868
import com.google.logging.v2.WriteLogEntriesRequest;
6969
import com.google.logging.v2.WriteLogEntriesResponse;
7070
import com.google.protobuf.Empty;
71+
72+
import java.text.DateFormat;
73+
import java.text.SimpleDateFormat;
74+
import java.util.Calendar;
75+
import java.util.Date;
7176
import java.util.List;
7277
import java.util.Map;
7378
import java.util.concurrent.ExecutionException;
@@ -1291,8 +1296,11 @@ public void testListLogEntries() {
12911296
String cursor = "cursor";
12921297
EasyMock.replay(rpcFactoryMock);
12931298
logging = options.getService();
1294-
ListLogEntriesRequest request =
1295-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1299+
ListLogEntriesRequest request = ListLogEntriesRequest.newBuilder()
1300+
.addResourceNames(PROJECT_PB)
1301+
.setFilter(createDefaultTimeRangeFilter())
1302+
.build();
1303+
12961304
List<LogEntry> entriesList = ImmutableList.of(LOG_ENTRY1, LOG_ENTRY2);
12971305
ListLogEntriesResponse response =
12981306
ListLogEntriesResponse.newBuilder()
@@ -1312,12 +1320,16 @@ public void testListLogEntriesNextPage() throws ExecutionException, InterruptedE
13121320
String cursor1 = "cursor";
13131321
EasyMock.replay(rpcFactoryMock);
13141322
logging = options.getService();
1315-
ListLogEntriesRequest request1 =
1316-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1323+
ListLogEntriesRequest request1 = ListLogEntriesRequest
1324+
.newBuilder()
1325+
.addResourceNames(PROJECT_PB)
1326+
.setFilter(createDefaultTimeRangeFilter())
1327+
.build();
13171328
ListLogEntriesRequest request2 =
13181329
ListLogEntriesRequest.newBuilder()
13191330
.addResourceNames(PROJECT_PB)
13201331
.setPageToken(cursor1)
1332+
.setFilter(createDefaultTimeRangeFilter())
13211333
.build();
13221334
List<LogEntry> descriptorList1 = ImmutableList.of(LOG_ENTRY1, LOG_ENTRY2);
13231335
List<LogEntry> descriptorList2 = ImmutableList.of(LOG_ENTRY1);
@@ -1353,7 +1365,10 @@ public void testListLogEntriesEmpty() {
13531365
EasyMock.replay(rpcFactoryMock);
13541366
logging = options.getService();
13551367
ListLogEntriesRequest request =
1356-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1368+
ListLogEntriesRequest.newBuilder()
1369+
.addResourceNames(PROJECT_PB)
1370+
.setFilter(createDefaultTimeRangeFilter()).build();
1371+
13571372
List<LogEntry> entriesList = ImmutableList.of();
13581373
ListLogEntriesResponse response =
13591374
ListLogEntriesResponse.newBuilder()
@@ -1401,8 +1416,9 @@ public void testListLogEntriesAsync() throws ExecutionException, InterruptedExce
14011416
String cursor = "cursor";
14021417
EasyMock.replay(rpcFactoryMock);
14031418
logging = options.getService();
1404-
ListLogEntriesRequest request =
1405-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1419+
ListLogEntriesRequest request = ListLogEntriesRequest.newBuilder()
1420+
.addResourceNames(PROJECT_PB)
1421+
.setFilter(createDefaultTimeRangeFilter()).build();
14061422
List<LogEntry> entriesList = ImmutableList.of(LOG_ENTRY1, LOG_ENTRY2);
14071423
ListLogEntriesResponse response =
14081424
ListLogEntriesResponse.newBuilder()
@@ -1422,13 +1438,17 @@ public void testListLogEntriesAsyncNextPage() {
14221438
String cursor1 = "cursor";
14231439
EasyMock.replay(rpcFactoryMock);
14241440
logging = options.getService();
1425-
ListLogEntriesRequest request1 =
1426-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1427-
ListLogEntriesRequest request2 =
1428-
ListLogEntriesRequest.newBuilder()
1429-
.addResourceNames(PROJECT_PB)
1430-
.setPageToken(cursor1)
1431-
.build();
1441+
ListLogEntriesRequest request1 = ListLogEntriesRequest
1442+
.newBuilder()
1443+
.addResourceNames(PROJECT_PB)
1444+
.setFilter(createDefaultTimeRangeFilter())
1445+
.build();
1446+
ListLogEntriesRequest request2 = ListLogEntriesRequest
1447+
.newBuilder()
1448+
.addResourceNames(PROJECT_PB)
1449+
.setFilter(createDefaultTimeRangeFilter())
1450+
.setPageToken(cursor1)
1451+
.build();
14321452
List<LogEntry> descriptorList1 = ImmutableList.of(LOG_ENTRY1, LOG_ENTRY2);
14331453
List<LogEntry> descriptorList2 = ImmutableList.of(LOG_ENTRY1);
14341454
ListLogEntriesResponse response1 =
@@ -1458,12 +1478,14 @@ public void testListLogEntriesAsyncNextPage() {
14581478
}
14591479

14601480
@Test
1461-
public void testListLogEntriesAyncEmpty() throws ExecutionException, InterruptedException {
1481+
public void testListLogEntriesAsyncEmpty() throws ExecutionException, InterruptedException {
14621482
String cursor = "cursor";
14631483
EasyMock.replay(rpcFactoryMock);
14641484
logging = options.getService();
14651485
ListLogEntriesRequest request =
1466-
ListLogEntriesRequest.newBuilder().addResourceNames(PROJECT_PB).build();
1486+
ListLogEntriesRequest.newBuilder()
1487+
.addResourceNames(PROJECT_PB)
1488+
.setFilter(createDefaultTimeRangeFilter()).build();
14671489
List<LogEntry> entriesList = ImmutableList.of();
14681490
ListLogEntriesResponse response =
14691491
ListLogEntriesResponse.newBuilder()
@@ -1584,4 +1606,20 @@ public void run() {
15841606
}
15851607
assertSame(0, exceptions.get());
15861608
}
1609+
1610+
private static String createDefaultTimeRangeFilter() {
1611+
DateFormat rfcDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
1612+
return "timestamp>=\"" + rfcDateFormat.format(yesterday()) + "\"";
1613+
}
1614+
1615+
private static Date yesterday() {
1616+
Calendar calendar = Calendar.getInstance();
1617+
calendar.add(Calendar.DATE, -1);
1618+
calendar.set(Calendar.HOUR_OF_DAY, 0);
1619+
calendar.set(Calendar.MINUTE, 0);
1620+
calendar.set(Calendar.SECOND, 0);
1621+
calendar.set(Calendar.MILLISECOND, 0);
1622+
1623+
return calendar.getTime();
1624+
}
15871625
}

0 commit comments

Comments
 (0)