66import static org .junit .jupiter .api .Assertions .assertNotNull ;
77
88import io .scalecube .cluster .ClusterMath ;
9+ import io .scalecube .cluster .codec .jackson .JacksonMetadataCodec ;
910import io .scalecube .cluster .fdetector .FailureDetectorConfig ;
1011import io .scalecube .cluster .gossip .GossipConfig ;
1112import io .scalecube .cluster .membership .MembershipConfig ;
1213import io .scalecube .cluster .metadata .JdkMetadataCodec ;
14+ import io .scalecube .cluster .metadata .MetadataCodec ;
1315import io .scalecube .net .Address ;
1416import io .scalecube .services .ServiceEndpoint ;
1517import io .scalecube .services .ServiceMethodDefinition ;
2426import java .util .UUID ;
2527import java .util .concurrent .atomic .AtomicInteger ;
2628import java .util .function .Supplier ;
29+ import java .util .stream .Stream ;
2730import org .junit .jupiter .api .Assertions ;
2831import 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 ;
3035import reactor .core .publisher .Flux ;
3136import reactor .core .publisher .Mono ;
3237import 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 ()
0 commit comments