-
Notifications
You must be signed in to change notification settings - Fork 37
/
TailLogEntriesTest.java
112 lines (102 loc) · 4.39 KB
/
TailLogEntriesTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.cloud.logging;
import static com.google.cloud.logging.Logging.TailOption;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertNotNull;
import com.google.api.gax.rpc.BidiStream;
import com.google.cloud.ServiceOptions;
import com.google.cloud.logging.spi.LoggingRpcFactory;
import com.google.cloud.logging.spi.v2.LoggingRpc;
import com.google.logging.v2.TailLogEntriesRequest;
import com.google.logging.v2.TailLogEntriesResponse;
import com.google.protobuf.Duration;
import org.easymock.EasyMock;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class TailLogEntriesTest {
private static final String WINDOW = "20s";
private static final Duration WINDOW_DURATION = Duration.newBuilder().setSeconds(20).build();
private static final String FILTER = "severity<INFO";
private static final String PROJECT_ID = "test-project-id";
private static final String DEFAULT_PROJECT_ID = "test-default-project-id";
private static final String BILLING_ACCOUNT_ID = "test-billing-acc-number";
private static final String FOLDER_ID = "test-folder-id";
private static final String ORG_ID = "test-org-id";
@Test
public void testTailOptions() {
TailLogEntriesRequest request =
LoggingImpl.buildTailLogEntriesRequest(
LoggingImpl.optionMap(
TailOption.filter(FILTER),
TailOption.bufferWindow(WINDOW),
TailOption.project(PROJECT_ID),
TailOption.billingAccount(BILLING_ACCOUNT_ID),
TailOption.folder(FOLDER_ID),
TailOption.organization(ORG_ID)),
DEFAULT_PROJECT_ID);
assertThat(request.getFilter()).isEqualTo(FILTER);
assertThat(request.getBufferWindow()).isEqualTo(WINDOW_DURATION);
assertThat(request.getResourceNamesList())
.containsExactly(
"projects/" + PROJECT_ID,
"organizations/" + ORG_ID,
"billingAccounts/" + BILLING_ACCOUNT_ID,
"folders/" + FOLDER_ID);
}
@Test
public void testEmptyTailOptions() {
TailLogEntriesRequest request =
LoggingImpl.buildTailLogEntriesRequest(LoggingImpl.optionMap(), DEFAULT_PROJECT_ID);
assertThat(request.getFilter()).isEqualTo("");
assertThat(request.getBufferWindow()).isEqualTo(Duration.newBuilder().build());
assertThat(request.getResourceNamesList()).containsExactly("projects/" + DEFAULT_PROJECT_ID);
}
@Test
public void testBidiStreamSendIsCalled() {
// setup
LoggingRpcFactory rpcFactoryMock = EasyMock.createStrictMock(LoggingRpcFactory.class);
LoggingRpc loggingRpcMock = EasyMock.createStrictMock(LoggingRpc.class);
@SuppressWarnings("unchecked")
BidiStream<TailLogEntriesRequest, TailLogEntriesResponse> bidiStreamMock =
EasyMock.createStrictMock(BidiStream.class);
EasyMock.expect(rpcFactoryMock.create(EasyMock.anyObject(LoggingOptions.class)))
.andReturn(loggingRpcMock);
EasyMock.expect(loggingRpcMock.getTailLogEntriesStream())
.andReturn((BidiStream<TailLogEntriesRequest, TailLogEntriesResponse>) bidiStreamMock);
bidiStreamMock.send(EasyMock.anyObject(TailLogEntriesRequest.class));
EasyMock.expectLastCall()
.andAnswer(
() -> {
return null;
});
EasyMock.replay(rpcFactoryMock, loggingRpcMock, bidiStreamMock);
// execute
LoggingOptions options =
LoggingOptions.newBuilder()
.setProjectId(PROJECT_ID)
.setServiceRpcFactory(rpcFactoryMock)
.setRetrySettings(ServiceOptions.getNoRetrySettings())
.build();
Logging logging = options.getService();
LogEntryServerStream stream = logging.tailLogEntries();
// verify
assertNotNull(stream);
EasyMock.verify(bidiStreamMock);
}
}