Skip to content

Commit 1fff716

Browse files
committed
Added tests on usage of scalecube-codec-jackson
1 parent c31b3ed commit 1fff716

File tree

6 files changed

+98
-50
lines changed

6 files changed

+98
-50
lines changed

services-api/src/main/java/io/scalecube/services/exceptions/ServiceException.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.scalecube.services.exceptions;
22

3-
import java.util.StringJoiner;
4-
53
public abstract class ServiceException extends RuntimeException {
64

75
private final int errorCode;
@@ -27,9 +25,11 @@ public int errorCode() {
2725

2826
@Override
2927
public String toString() {
30-
return new StringJoiner(", ", getClass().getSimpleName() + "[", "]")
31-
.add("errorCode=" + errorCode)
32-
.add("errorMessage=" + getMessage())
33-
.toString();
28+
return getClass().getSimpleName()
29+
+ "{errorCode="
30+
+ errorCode
31+
+ ", errorMessage="
32+
+ getMessage()
33+
+ '}';
3434
}
3535
}

services-discovery/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
<artifactId>log4j-core</artifactId>
3333
<scope>test</scope>
3434
</dependency>
35+
36+
<dependency>
37+
<groupId>io.scalecube</groupId>
38+
<artifactId>scalecube-codec-jackson</artifactId>
39+
<scope>test</scope>
40+
</dependency>
3541
</dependencies>
3642

3743
</project>

services-discovery/src/test/java/io/scalecube/services/discovery/ScalecubeServiceDiscoveryTest.java

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import static org.junit.jupiter.api.Assertions.assertNotNull;
77

88
import io.scalecube.cluster.ClusterMath;
9+
import io.scalecube.cluster.codec.jackson.JacksonMetadataCodec;
910
import io.scalecube.cluster.fdetector.FailureDetectorConfig;
1011
import io.scalecube.cluster.gossip.GossipConfig;
1112
import io.scalecube.cluster.membership.MembershipConfig;
1213
import io.scalecube.cluster.metadata.JdkMetadataCodec;
14+
import io.scalecube.cluster.metadata.MetadataCodec;
1315
import io.scalecube.net.Address;
1416
import io.scalecube.services.ServiceEndpoint;
1517
import io.scalecube.services.ServiceMethodDefinition;
@@ -24,9 +26,12 @@
2426
import java.util.UUID;
2527
import java.util.concurrent.atomic.AtomicInteger;
2628
import java.util.function.Supplier;
29+
import java.util.stream.Stream;
2730
import org.junit.jupiter.api.Assertions;
2831
import org.junit.jupiter.api.BeforeAll;
29-
import org.junit.jupiter.api.Test;
32+
import org.junit.jupiter.params.ParameterizedTest;
33+
import org.junit.jupiter.params.provider.Arguments;
34+
import org.junit.jupiter.params.provider.MethodSource;
3035
import reactor.core.publisher.Flux;
3136
import reactor.core.publisher.Mono;
3237
import reactor.core.publisher.ReplayProcessor;
@@ -41,15 +46,19 @@ class ScalecubeServiceDiscoveryTest extends BaseTest {
4146
public static final MembershipConfig MEMBERSHIP_CONFIG = MembershipConfig.defaultLocalConfig();
4247
public static final int CLUSTER_SIZE = 3 + 1; // r1 + r2 + r3 (plus 1 for be sure)
4348

44-
private JdkMetadataCodec jdkMetadataCodec = new JdkMetadataCodec();
45-
4649
@BeforeAll
4750
public static void setUp() {
4851
StepVerifier.setDefaultTimeout(TIMEOUT);
4952
}
5053

51-
@Test
52-
public void testJdkMetadataCodec() {
54+
private static Stream<Arguments> metadataCodecSource() {
55+
return Stream.of(
56+
Arguments.of(new JdkMetadataCodec()), Arguments.of(new JacksonMetadataCodec()));
57+
}
58+
59+
@ParameterizedTest
60+
@MethodSource("metadataCodecSource")
61+
public void testMetadataCodec(MetadataCodec metadataCodec) {
5362
ServiceEndpoint serviceEndpoint =
5463
ServiceEndpoint.builder()
5564
.id(UUID.randomUUID().toString())
@@ -81,8 +90,8 @@ public void testJdkMetadataCodec() {
8190
"action2", Collections.singletonMap("KKK2", "VVV"), true)))))
8291
.build();
8392

84-
ByteBuffer buffer = jdkMetadataCodec.serialize(serviceEndpoint);
85-
ServiceEndpoint serviceEndpoint1 = (ServiceEndpoint) jdkMetadataCodec.deserialize(buffer);
93+
ByteBuffer buffer = metadataCodec.serialize(serviceEndpoint);
94+
ServiceEndpoint serviceEndpoint1 = (ServiceEndpoint) metadataCodec.deserialize(buffer);
8695
Assertions.assertEquals(serviceEndpoint.id(), serviceEndpoint1.id());
8796
Assertions.assertEquals(1, serviceEndpoint1.tags().size());
8897
Assertions.assertEquals(1, serviceEndpoint1.contentTypes().size());
@@ -96,19 +105,20 @@ public void testJdkMetadataCodec() {
96105
}
97106
}
98107

99-
@Test
100-
public void testEndpointIsAddedThenRemoved() {
101-
Address seedAddress = startSeed();
108+
@ParameterizedTest
109+
@MethodSource("metadataCodecSource")
110+
public void testEndpointIsAddedThenRemoved(MetadataCodec metadataCodec) {
111+
Address seedAddress = startSeed(metadataCodec);
102112

103113
AtomicInteger registeredCount = new AtomicInteger();
104114
AtomicInteger unregisteredCount = new AtomicInteger();
105115

106116
RecordingServiceDiscovery r1 =
107-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
117+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
108118
RecordingServiceDiscovery r2 =
109-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
119+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
110120
RecordingServiceDiscovery r3 =
111-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
121+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
112122

113123
int expectedAddedEventsNum = 9; // (1+3)x(1+3) - (1+3)/*exclude self*/ - 3/*exclude seed*/
114124
int expectedRemovedEventsNum = 2; // r3 is shutdown => await by 1 event on r1 and r2
@@ -137,19 +147,20 @@ public void testEndpointIsAddedThenRemoved() {
137147
.verify();
138148
}
139149

140-
@Test
141-
public void testEndpointIsRestarted() {
142-
Address seedAddress = startSeed();
150+
@ParameterizedTest
151+
@MethodSource("metadataCodecSource")
152+
public void testEndpointIsRestarted(MetadataCodec metadataCodec) {
153+
Address seedAddress = startSeed(metadataCodec);
143154

144155
AtomicInteger registeredCount = new AtomicInteger();
145156
AtomicInteger unregisteredCount = new AtomicInteger();
146157

147158
RecordingServiceDiscovery r1 =
148-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
159+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
149160
RecordingServiceDiscovery r2 =
150-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
161+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
151162
RecordingServiceDiscovery r3 =
152-
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress));
163+
RecordingServiceDiscovery.create(() -> newServiceDiscovery(seedAddress, metadataCodec));
153164

154165
int expectedAddedEventsNum = 9; // (1+3)x(1+3) - (1+3)/*exclude self*/ - 3/*exclude seed*/
155166
int expectedRemovedEventsNum = 2; // r3 is shutdown => await by 1 event on r1 and r2
@@ -205,19 +216,22 @@ public static ServiceEndpoint newServiceEndpoint() {
205216
return ServiceEndpoint.builder().id("" + ID_COUNTER.incrementAndGet()).build();
206217
}
207218

208-
private Mono<ServiceDiscovery> newServiceDiscovery(Address seedAddress) {
219+
private Mono<ServiceDiscovery> newServiceDiscovery(
220+
Address seedAddress, MetadataCodec metadataCodec) {
209221
return Mono.fromCallable(
210222
() -> {
211223
ServiceEndpoint serviceEndpoint = newServiceEndpoint();
212224
return new ScalecubeServiceDiscovery(serviceEndpoint)
225+
.options(opts -> opts.metadataCodec(metadataCodec))
213226
.options(opts -> opts.gossip(cfg -> GOSSIP_CONFIG))
214227
.options(opts -> opts.membership(cfg -> MEMBERSHIP_CONFIG))
215228
.options(opts -> opts.membership(cfg -> cfg.seedMembers(seedAddress)));
216229
});
217230
}
218231

219-
private Address startSeed() {
232+
private Address startSeed(MetadataCodec metadataCodec) {
220233
return new ScalecubeServiceDiscovery(newServiceEndpoint())
234+
.options(opts -> opts.metadataCodec(metadataCodec))
221235
.options(opts -> opts.gossip(cfg -> GOSSIP_CONFIG))
222236
.options(opts -> opts.membership(cfg -> MEMBERSHIP_CONFIG))
223237
.start()

services/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
<artifactId>log4j-core</artifactId>
7878
<scope>test</scope>
7979
</dependency>
80+
81+
<dependency>
82+
<groupId>io.scalecube</groupId>
83+
<artifactId>scalecube-codec-jackson</artifactId>
84+
<scope>test</scope>
85+
</dependency>
8086
</dependencies>
8187

8288
</project>

services/src/test/java/io/scalecube/services/ServiceRegistryTest.java

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import static io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_REMOVED;
66
import static org.junit.jupiter.api.Assertions.assertEquals;
77

8+
import io.scalecube.cluster.codec.jackson.JacksonMetadataCodec;
9+
import io.scalecube.cluster.metadata.JdkMetadataCodec;
10+
import io.scalecube.cluster.metadata.MetadataCodec;
811
import io.scalecube.net.Address;
912
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
1013
import io.scalecube.services.discovery.api.ServiceDiscovery;
@@ -17,7 +20,11 @@
1720
import java.util.ArrayList;
1821
import java.util.List;
1922
import java.util.concurrent.CopyOnWriteArrayList;
20-
import org.junit.jupiter.api.Test;
23+
import java.util.function.Function;
24+
import java.util.stream.Stream;
25+
import org.junit.jupiter.params.ParameterizedTest;
26+
import org.junit.jupiter.params.provider.Arguments;
27+
import org.junit.jupiter.params.provider.MethodSource;
2128
import reactor.core.publisher.Mono;
2229
import reactor.core.publisher.ReplayProcessor;
2330
import reactor.test.StepVerifier;
@@ -26,14 +33,20 @@ public class ServiceRegistryTest extends BaseTest {
2633

2734
public static final Duration TIMEOUT = Duration.ofSeconds(6);
2835

29-
@Test
30-
public void test_added_removed_registration_events() {
36+
private static Stream<Arguments> metadataCodecSource() {
37+
return Stream.of(
38+
Arguments.of(new JdkMetadataCodec()), Arguments.of(new JacksonMetadataCodec()));
39+
}
40+
41+
@ParameterizedTest
42+
@MethodSource("metadataCodecSource")
43+
public void test_added_removed_registration_events(MetadataCodec metadataCodec) {
3144

3245
List<ServiceDiscoveryEvent> events = new ArrayList<>();
3346

3447
Microservices seed =
3548
Microservices.builder()
36-
.discovery(ScalecubeServiceDiscovery::new)
49+
.discovery(defServiceDiscovery(metadataCodec))
3750
.transport(RSocketServiceTransport::new)
3851
.startAwait();
3952

@@ -43,14 +56,14 @@ public void test_added_removed_registration_events() {
4356

4457
Microservices ms1 =
4558
Microservices.builder()
46-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
59+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
4760
.transport(RSocketServiceTransport::new)
4861
.services(new GreetingServiceImpl())
4962
.startAwait();
5063

5164
Microservices ms2 =
5265
Microservices.builder()
53-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
66+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
5467
.transport(RSocketServiceTransport::new)
5568
.services(new GreetingServiceImpl())
5669
.startAwait();
@@ -68,21 +81,16 @@ public void test_added_removed_registration_events() {
6881
seed.shutdown().block();
6982
}
7083

71-
private static ServiceDiscovery serviceDiscovery(
72-
ServiceEndpoint serviceEndpoint, Address address) {
73-
return new ScalecubeServiceDiscovery(serviceEndpoint)
74-
.options(opts -> opts.membership(cfg -> cfg.seedMembers(address)));
75-
}
76-
77-
@Test
78-
public void test_listen_to_discovery_events() {
84+
@ParameterizedTest
85+
@MethodSource("metadataCodecSource")
86+
public void test_listen_to_discovery_events(MetadataCodec metadataCodec) {
7987
ReplayProcessor<ServiceDiscoveryEvent> processor = ReplayProcessor.create();
8088

8189
List<Microservices> cluster = new CopyOnWriteArrayList<>();
8290

8391
Microservices seed =
8492
Microservices.builder()
85-
.discovery(ScalecubeServiceDiscovery::new)
93+
.discovery(defServiceDiscovery(metadataCodec))
8694
.transport(RSocketServiceTransport::new)
8795
.services(new AnnotationServiceImpl())
8896
.startAwait();
@@ -97,7 +105,7 @@ public void test_listen_to_discovery_events() {
97105
() -> {
98106
Microservices ms1 =
99107
Microservices.builder()
100-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
108+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
101109
.transport(RSocketServiceTransport::new)
102110
.services(new GreetingServiceImpl())
103111
.startAwait();
@@ -108,7 +116,7 @@ public void test_listen_to_discovery_events() {
108116
() -> {
109117
Microservices ms2 =
110118
Microservices.builder()
111-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
119+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
112120
.transport(RSocketServiceTransport::new)
113121
.services(new GreetingServiceImpl())
114122
.startAwait();
@@ -141,15 +149,16 @@ public void test_listen_to_discovery_events() {
141149
.block();
142150
}
143151

144-
@Test
145-
public void test_delayed_listen_to_discovery_events() {
152+
@ParameterizedTest
153+
@MethodSource("metadataCodecSource")
154+
public void test_delayed_listen_to_discovery_events(MetadataCodec metadataCodec) {
146155
ReplayProcessor<ServiceDiscoveryEvent> processor = ReplayProcessor.create();
147156

148157
List<Microservices> cluster = new CopyOnWriteArrayList<>();
149158

150159
Microservices seed =
151160
Microservices.builder()
152-
.discovery(ScalecubeServiceDiscovery::new)
161+
.discovery(defServiceDiscovery(metadataCodec))
153162
.transport(RSocketServiceTransport::new)
154163
.services(new GreetingServiceImpl())
155164
.startAwait();
@@ -164,7 +173,7 @@ public void test_delayed_listen_to_discovery_events() {
164173
() -> {
165174
Microservices ms1 =
166175
Microservices.builder()
167-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
176+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
168177
.transport(RSocketServiceTransport::new)
169178
.services(new GreetingServiceImpl(), new AnnotationServiceImpl())
170179
.startAwait();
@@ -175,7 +184,7 @@ public void test_delayed_listen_to_discovery_events() {
175184
() -> {
176185
Microservices ms2 =
177186
Microservices.builder()
178-
.discovery(serviceEndpoint -> serviceDiscovery(serviceEndpoint, seedAddress))
187+
.discovery(defServiceDiscovery(seedAddress, metadataCodec))
179188
.transport(RSocketServiceTransport::new)
180189
.services(new GreetingServiceImpl())
181190
.startAwait();
@@ -195,4 +204,17 @@ public void test_delayed_listen_to_discovery_events() {
195204
.then(Mono.delay(TIMEOUT))
196205
.block();
197206
}
207+
208+
private Function<ServiceEndpoint, ServiceDiscovery> defServiceDiscovery(
209+
MetadataCodec metadataCodec) {
210+
return se -> new ScalecubeServiceDiscovery(se).options(cfg -> cfg.metadataCodec(metadataCodec));
211+
}
212+
213+
private static Function<ServiceEndpoint, ServiceDiscovery> defServiceDiscovery(
214+
Address address, MetadataCodec metadataCodec) {
215+
return se ->
216+
new ScalecubeServiceDiscovery(se)
217+
.options(cfg -> cfg.metadataCodec(metadataCodec))
218+
.options(opts -> opts.membership(cfg -> cfg.seedMembers(address)));
219+
}
198220
}

services/src/test/java/io/scalecube/services/routings/sut/WeightedRandomRouter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public Optional<ServiceReference> route(ServiceRegistry serviceRegistry, Service
1313
RandomCollection<ServiceReference> weightedRandom = new RandomCollection<>();
1414
serviceRegistry
1515
.lookupService(request)
16-
.forEach(sr -> weightedRandom.add(Double.parseDouble(sr.tags().get("Weight")), sr));
16+
.forEach(sr -> weightedRandom.add(Double.valueOf(sr.tags().get("Weight")), sr));
1717
return Optional.of(weightedRandom.next());
1818
}
1919
}

0 commit comments

Comments
 (0)