Skip to content

Commit f2df58d

Browse files
authored
Chore follow up to #39 (#42)
1 parent ec55a7a commit f2df58d

File tree

3 files changed

+104
-64
lines changed

3 files changed

+104
-64
lines changed

plugin/src/main/java/dev/regadas/trino/pubsub/listener/PubSubEventListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public final class PubSubEventListener implements EventListener, AutoCloseable {
2626
PubSubEventListener(PubSubEventListenerConfig config, Publisher publisher) {
2727
this.config = requireNonNull(config, "config is null");
2828
this.publisher = requireNonNull(publisher, "publisher is null");
29-
this.pubSubInfo = new PubSubInfo(config.projectId(), config.topicId());
29+
this.pubSubInfo = PubSubInfo.create(config.projectId(), config.topicId());
3030
}
3131

3232
public static PubSubEventListener create(PubSubEventListenerConfig config) throws IOException {
Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,89 @@
11
package dev.regadas.trino.pubsub.listener.metrics;
22

3-
import static java.util.Objects.requireNonNull;
4-
5-
public class PubSubInfo implements PubSubInfoMBean {
6-
7-
private final String projectId;
8-
private final String topicId;
9-
private final PubSubCounters queryCreated;
10-
private final PubSubCounters queryCompleted;
11-
private final PubSubCounters splitCompleted;
12-
13-
public PubSubInfo(String projectId, String topicId) {
14-
this.projectId = requireNonNull(projectId, "projectId is null");
15-
this.topicId = requireNonNull(topicId, "topicId is null");
16-
this.queryCreated = new PubSubCounters();
17-
this.queryCompleted = new PubSubCounters();
18-
this.splitCompleted = new PubSubCounters();
3+
import com.google.auto.value.AutoValue;
4+
5+
@AutoValue
6+
public abstract class PubSubInfo implements PubSubInfoMBean {
7+
8+
public static final PubSubInfo create(String projectId, String topicId) {
9+
return new AutoValue_PubSubInfo.Builder()
10+
.setProjectId(projectId)
11+
.setTopicId(topicId)
12+
.setQueryCreated(new PubSubCounters())
13+
.setQueryCompleted(new PubSubCounters())
14+
.setSplitCompleted(new PubSubCounters())
15+
.build();
1916
}
2017

2118
@Override
22-
public String getProjectId() {
23-
return this.projectId;
24-
}
19+
public abstract String getProjectId();
2520

2621
@Override
27-
public String getTopicId() {
28-
return this.topicId;
29-
}
22+
public abstract String getTopicId();
3023

31-
public PubSubCounters getQueryCreated() {
32-
return queryCreated;
33-
}
24+
public abstract PubSubCounters getQueryCreated();
3425

35-
public PubSubCounters getQueryCompleted() {
36-
return queryCompleted;
37-
}
26+
public abstract PubSubCounters getQueryCompleted();
3827

39-
public PubSubCounters getSplitCompleted() {
40-
return splitCompleted;
41-
}
28+
public abstract PubSubCounters getSplitCompleted();
4229

4330
@Override
4431
public Long getQueryCreatedPublicationAttempts() {
45-
return queryCreated.attempts().get();
32+
return getQueryCreated().attempts().get();
4633
}
4734

4835
@Override
4936
public Long getQueryCreatedPublishedSuccessfully() {
50-
return queryCreated.successful().get();
37+
return getQueryCreated().successful().get();
5138
}
5239

5340
@Override
5441
public Long getQueryCreatedPublicationFailed() {
55-
return queryCreated.failure().get();
42+
return getQueryCreated().failure().get();
5643
}
5744

5845
@Override
5946
public Long getQueryCompletedPublicationAttempts() {
60-
return queryCompleted.attempts().get();
47+
return getQueryCompleted().attempts().get();
6148
}
6249

6350
@Override
6451
public Long getQueryCompletedPublishedSuccessfully() {
65-
return queryCompleted.successful().get();
52+
return getQueryCompleted().successful().get();
6653
}
6754

6855
@Override
6956
public Long getQueryCompletedPublicationFailed() {
70-
return queryCompleted.failure().get();
57+
return getQueryCompleted().failure().get();
7158
}
7259

7360
@Override
7461
public Long getSplitCompletedPublicationAttempts() {
75-
return splitCompleted.attempts().get();
62+
return getSplitCompleted().attempts().get();
7663
}
7764

7865
@Override
7966
public Long getSplitCompletedPublishedSuccessfully() {
80-
return splitCompleted.successful().get();
67+
return getSplitCompleted().successful().get();
8168
}
8269

8370
@Override
8471
public Long getSplitCompletedPublicationFailed() {
85-
return splitCompleted.failure().get();
72+
return getSplitCompleted().failure().get();
73+
}
74+
75+
@AutoValue.Builder
76+
public abstract static class Builder {
77+
public abstract Builder setProjectId(String projectId);
78+
79+
public abstract Builder setTopicId(String topicId);
80+
81+
public abstract Builder setQueryCreated(PubSubCounters queryCreated);
82+
83+
public abstract Builder setQueryCompleted(PubSubCounters queryCompleted);
84+
85+
public abstract Builder setSplitCompleted(PubSubCounters splitCompleted);
86+
87+
public abstract PubSubInfo build();
8688
}
8789
}

plugin/src/test/java/dev/regadas/trino/pubsub/listener/PubSubEventListenerTest.java

Lines changed: 61 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ class PubSubEventListenerTest {
3232
"""
3333
# trackEvent, pubType, expAttempt, expSuccess, expFail
3434
true, success, 1, 1, 0
35-
true, returnFailure, 1, 0, 1
36-
true, throwOnPublish, 1, 0, 1
35+
true, return_failure, 1, 0, 1
36+
true, throw_on_publish, 1, 0, 1
3737
false, success, 0, 0, 0
38-
false, returnFailure, 0, 0, 0
39-
false, throwOnPublish, 0, 0, 0
38+
false, return_failure, 0, 0, 0
39+
false, throw_on_publish, 0, 0, 0
4040
""")
4141
void testCounterForQueryCreated(
4242
boolean trackEvent, String pubType, long expAttempt, long expSuccess, long expFail)
@@ -71,11 +71,11 @@ void testCounterForQueryCreated(
7171
"""
7272
# trackEvent, pubType, expAttempt, expSuccess, expFail
7373
true, success, 1, 1, 0
74-
true, returnFailure, 1, 0, 1
75-
true, throwOnPublish, 1, 0, 1
74+
true, return_failure, 1, 0, 1
75+
true, throw_on_publish, 1, 0, 1
7676
false, success, 0, 0, 0
77-
false, returnFailure, 0, 0, 0
78-
false, throwOnPublish, 0, 0, 0
77+
false, return_failure, 0, 0, 0
78+
false, throw_on_publish, 0, 0, 0
7979
""")
8080
void testCounterForQueryCompleted(
8181
boolean trackEvent, String pubType, long expAttempt, long expSuccess, long expFail)
@@ -110,11 +110,11 @@ void testCounterForQueryCompleted(
110110
"""
111111
# trackEvent, pubType, expAttempt, expSuccess, expFail
112112
true, success, 1, 1, 0
113-
true, returnFailure, 1, 0, 1
114-
true, throwOnPublish, 1, 0, 1
113+
true, return_failure, 1, 0, 1
114+
true, throw_on_publish, 1, 0, 1
115115
false, success, 0, 0, 0
116-
false, returnFailure, 0, 0, 0
117-
false, throwOnPublish, 0, 0, 0
116+
false, return_failure, 0, 0, 0
117+
false, throw_on_publish, 0, 0, 0
118118
""")
119119
void testCounterForSplitCompleted(
120120
boolean trackEvent, String pubType, long expAttempt, long expSuccess, long expFail)
@@ -146,7 +146,15 @@ void testCounterForSplitCompleted(
146146
@Test
147147
void testQueryCreatedPublishCorrespondingMessage() {
148148
var publisher = new SuccessPublisher();
149-
var config = new PubSubEventListenerConfig(true, true, true, "", "", null, Encoding.JSON);
149+
var config =
150+
PubSubEventListenerConfig.builder()
151+
.trackQueryCreatedEvent(true)
152+
.trackQueryCompletedEvent(true)
153+
.trackSplitCompletedEvent(true)
154+
.projectId("")
155+
.topicId("")
156+
.encoding(Encoding.JSON)
157+
.build();
150158
var eventListener = new PubSubEventListener(config, publisher);
151159

152160
eventListener.queryCreated(TestData.FULL_QUERY_CREATED_EVENT);
@@ -157,7 +165,15 @@ void testQueryCreatedPublishCorrespondingMessage() {
157165
@Test
158166
void testQueryCompletedPublishCorrespondingMessage() {
159167
var publisher = new SuccessPublisher();
160-
var config = new PubSubEventListenerConfig(true, true, true, "", "", null, Encoding.JSON);
168+
var config =
169+
PubSubEventListenerConfig.builder()
170+
.trackQueryCreatedEvent(true)
171+
.trackQueryCompletedEvent(true)
172+
.trackSplitCompletedEvent(true)
173+
.projectId("")
174+
.topicId("")
175+
.encoding(Encoding.JSON)
176+
.build();
161177
var eventListener = new PubSubEventListener(config, publisher);
162178

163179
eventListener.queryCompleted(TestData.FULL_QUERY_COMPLETED_EVENT);
@@ -168,7 +184,15 @@ void testQueryCompletedPublishCorrespondingMessage() {
168184
@Test
169185
void testSplitCompletedPublishCorrespondingMessage() {
170186
var publisher = new SuccessPublisher();
171-
var config = new PubSubEventListenerConfig(true, true, true, "", "", null, Encoding.JSON);
187+
var config =
188+
PubSubEventListenerConfig.builder()
189+
.trackQueryCreatedEvent(true)
190+
.trackQueryCompletedEvent(true)
191+
.trackSplitCompletedEvent(true)
192+
.projectId("")
193+
.topicId("")
194+
.encoding(Encoding.JSON)
195+
.build();
172196
var eventListener = new PubSubEventListener(config, publisher);
173197

174198
eventListener.splitCompleted(TestData.FULL_SPLIT_COMPLETED_EVENT);
@@ -177,10 +201,18 @@ void testSplitCompletedPublishCorrespondingMessage() {
177201
}
178202

179203
@ParameterizedTest
180-
@ValueSource(strings = {"success", "throwOnClose"})
204+
@ValueSource(strings = {"success", "throw_on_close"})
181205
void testClosedNormally(String pubType) {
182206
var publisher = TestPublisher.from(pubType);
183-
var config = new PubSubEventListenerConfig(true, true, true, "", "", null, Encoding.JSON);
207+
var config =
208+
PubSubEventListenerConfig.builder()
209+
.trackQueryCreatedEvent(true)
210+
.trackQueryCompletedEvent(true)
211+
.trackSplitCompletedEvent(true)
212+
.projectId("")
213+
.topicId("")
214+
.encoding(Encoding.JSON)
215+
.build();
184216
var eventListener = new PubSubEventListener(config, publisher);
185217

186218
assertDoesNotThrow(() -> eventListener.close());
@@ -197,6 +229,13 @@ public static <T> void assertThatEventually(Supplier<T> actual, Matcher<? super
197229
}
198230

199231
abstract static class TestPublisher implements Publisher {
232+
enum PubType {
233+
SUCCESS,
234+
RETURN_FAILURE,
235+
THROW_ON_PUBLISH,
236+
THROW_ON_CLOSE
237+
}
238+
200239
Message lastPublishedMessage;
201240
boolean closeCalled;
202241

@@ -213,12 +252,11 @@ public void close() throws Exception {
213252
}
214253

215254
static TestPublisher from(String pubType) {
216-
return switch (pubType) {
217-
case "success" -> new SuccessPublisher();
218-
case "returnFailure" -> new ReturnFailurePublisher();
219-
case "throwOnPublish" -> new ThrowOnPublishPublisher();
220-
case "throwOnClose" -> new ThrowOnClosePublisher();
221-
default -> throw new IllegalArgumentException("invalid pudType: " + pubType);
255+
return switch (PubType.valueOf(pubType.toUpperCase())) {
256+
case SUCCESS -> new SuccessPublisher();
257+
case RETURN_FAILURE -> new ReturnFailurePublisher();
258+
case THROW_ON_PUBLISH -> new ThrowOnPublishPublisher();
259+
case THROW_ON_CLOSE -> new ThrowOnClosePublisher();
222260
};
223261
}
224262

0 commit comments

Comments
 (0)