Skip to content

Commit 56040e0

Browse files
authored
Merge pull request #330 from scalecube/create-websocket-trasport
Create websocket trasport
2 parents 3a7760e + f6b7425 commit 56040e0

File tree

35 files changed

+1299
-216
lines changed

35 files changed

+1299
-216
lines changed

cluster-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.scalecube</groupId>
77
<artifactId>scalecube-cluster-parent</artifactId>
8-
<version>2.5.1-SNAPSHOT</version>
8+
<version>2.6.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>scalecube-cluster-api</artifactId>

cluster-testlib/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>scalecube-cluster-parent</artifactId>
55
<groupId>io.scalecube</groupId>
6-
<version>2.5.1-SNAPSHOT</version>
6+
<version>2.6.0-SNAPSHOT</version>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>
99

cluster-testlib/src/main/java/io/scalecube/cluster/utils/NetworkEmulatorTransport.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public Address address() {
3030
return transport.address();
3131
}
3232

33+
@Override
34+
public Mono<Transport> start() {
35+
return transport.start();
36+
}
37+
3338
@Override
3439
public Mono<Void> stop() {
3540
return transport.stop();

cluster/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.scalecube</groupId>
77
<artifactId>scalecube-cluster-parent</artifactId>
8-
<version>2.5.1-SNAPSHOT</version>
8+
<version>2.6.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>scalecube-cluster</artifactId>

cluster/src/main/java/io/scalecube/cluster/ClusterImpl.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.scalecube.cluster.transport.api.Message;
1919
import io.scalecube.cluster.transport.api.Transport;
2020
import io.scalecube.cluster.transport.api.TransportConfig;
21+
import io.scalecube.cluster.transport.api.TransportFactory;
2122
import io.scalecube.net.Address;
2223
import io.scalecube.transport.netty.TransportImpl;
2324
import io.scalecube.utils.ServiceLoaderUtil;
@@ -30,6 +31,7 @@
3031
import java.util.Optional;
3132
import java.util.Set;
3233
import java.util.function.Function;
34+
import java.util.function.Supplier;
3335
import java.util.function.UnaryOperator;
3436
import java.util.regex.Pattern;
3537
import java.util.stream.Collectors;
@@ -158,6 +160,19 @@ public ClusterImpl transport(UnaryOperator<TransportConfig> options) {
158160
return cluster;
159161
}
160162

163+
/**
164+
* Returns a new cluster's instance which will apply the given options.
165+
*
166+
* @param supplier transport factory supplier
167+
* @return new {@code ClusterImpl} instance
168+
*/
169+
public ClusterImpl transportFactory(Supplier<TransportFactory> supplier) {
170+
Objects.requireNonNull(supplier);
171+
ClusterImpl cluster = new ClusterImpl(this);
172+
cluster.config = config.transport(opts -> opts.transportFactory(supplier.get()));
173+
return cluster;
174+
}
175+
161176
/**
162177
* Returns a new cluster's instance which will apply the given options.
163178
*
@@ -566,6 +581,11 @@ public Address address() {
566581
return transport.address();
567582
}
568583

584+
@Override
585+
public Mono<Transport> start() {
586+
return transport.start();
587+
}
588+
569589
@Override
570590
public Mono<Void> stop() {
571591
return transport.stop();

cluster/src/test/java/io/scalecube/cluster/ClusterNamespacesTest.java

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static org.junit.jupiter.api.Assertions.assertThrows;
88
import static org.junit.jupiter.params.provider.Arguments.of;
99

10+
import io.scalecube.transport.netty.websocket.WebsocketTransportFactory;
1011
import java.util.stream.Stream;
1112
import org.junit.jupiter.api.Assertions;
1213
import org.junit.jupiter.api.Test;
@@ -22,7 +23,11 @@ public void testInvalidNamespaceFormat(String namespace) {
2223
Exception actualException =
2324
assertThrows(
2425
IllegalArgumentException.class,
25-
() -> new ClusterImpl().membership(opts -> opts.namespace(namespace)).startAwait());
26+
() ->
27+
new ClusterImpl()
28+
.transportFactory(WebsocketTransportFactory::new)
29+
.membership(opts -> opts.namespace(namespace))
30+
.startAwait());
2631
Assertions.assertAll(
2732
() ->
2833
assertEquals(
@@ -50,16 +55,22 @@ public static Stream<Arguments> testInvalidNamespaceFormat() {
5055

5156
@Test
5257
public void testSeparateEmptyNamespaces() {
53-
Cluster root = new ClusterImpl().membership(opts -> opts.namespace("root")).startAwait();
58+
Cluster root =
59+
new ClusterImpl()
60+
.transportFactory(WebsocketTransportFactory::new)
61+
.membership(opts -> opts.namespace("root"))
62+
.startAwait();
5463

5564
Cluster root1 =
5665
new ClusterImpl()
66+
.transportFactory(WebsocketTransportFactory::new)
5767
.membership(opts -> opts.namespace("root1"))
5868
.membership(opts -> opts.seedMembers(root.address()))
5969
.startAwait();
6070

6171
Cluster root2 =
6272
new ClusterImpl()
73+
.transportFactory(WebsocketTransportFactory::new)
6374
.membership(opts -> opts.namespace("root2"))
6475
.membership(opts -> opts.seedMembers(root.address()))
6576
.startAwait();
@@ -71,28 +82,36 @@ public void testSeparateEmptyNamespaces() {
7182

7283
@Test
7384
public void testSeparateNonEmptyNamespaces() {
74-
Cluster root = new ClusterImpl().membership(opts -> opts.namespace("root")).startAwait();
85+
Cluster root =
86+
new ClusterImpl()
87+
.transportFactory(WebsocketTransportFactory::new)
88+
.membership(opts -> opts.namespace("root"))
89+
.startAwait();
7590

7691
Cluster bob =
7792
new ClusterImpl()
93+
.transportFactory(WebsocketTransportFactory::new)
7894
.membership(opts -> opts.namespace("root"))
7995
.membership(opts -> opts.seedMembers(root.address()))
8096
.startAwait();
8197

8298
Cluster carol =
8399
new ClusterImpl()
100+
.transportFactory(WebsocketTransportFactory::new)
84101
.membership(opts -> opts.namespace("root"))
85102
.membership(opts -> opts.seedMembers(root.address(), bob.address()))
86103
.startAwait();
87104

88105
Cluster root2 =
89106
new ClusterImpl()
107+
.transportFactory(WebsocketTransportFactory::new)
90108
.membership(opts -> opts.namespace("root2"))
91109
.membership(opts -> opts.seedMembers(root.address()))
92110
.startAwait();
93111

94112
Cluster dan =
95113
new ClusterImpl()
114+
.transportFactory(WebsocketTransportFactory::new)
96115
.membership(opts -> opts.namespace("root2"))
97116
.membership(
98117
opts ->
@@ -102,6 +121,7 @@ public void testSeparateNonEmptyNamespaces() {
102121

103122
Cluster eve =
104123
new ClusterImpl()
124+
.transportFactory(WebsocketTransportFactory::new)
105125
.membership(opts -> opts.namespace("root2"))
106126
.membership(
107127
opts ->
@@ -125,29 +145,36 @@ public void testSeparateNonEmptyNamespaces() {
125145
@Test
126146
public void testSimpleNamespacesHierarchy() {
127147
Cluster rootDevelop =
128-
new ClusterImpl().membership(opts -> opts.namespace("develop")).startAwait();
148+
new ClusterImpl()
149+
.transportFactory(WebsocketTransportFactory::new)
150+
.membership(opts -> opts.namespace("develop"))
151+
.startAwait();
129152

130153
Cluster bob =
131154
new ClusterImpl()
155+
.transportFactory(WebsocketTransportFactory::new)
132156
.membership(opts -> opts.namespace("develop/develop"))
133157
.membership(opts -> opts.seedMembers(rootDevelop.address()))
134158
.startAwait();
135159

136160
Cluster carol =
137161
new ClusterImpl()
162+
.transportFactory(WebsocketTransportFactory::new)
138163
.membership(opts -> opts.namespace("develop/develop"))
139164
.membership(opts -> opts.seedMembers(rootDevelop.address(), bob.address()))
140165
.startAwait();
141166

142167
Cluster dan =
143168
new ClusterImpl()
169+
.transportFactory(WebsocketTransportFactory::new)
144170
.membership(opts -> opts.namespace("develop/develop-2"))
145171
.membership(
146172
opts -> opts.seedMembers(rootDevelop.address(), bob.address(), carol.address()))
147173
.startAwait();
148174

149175
Cluster eve =
150176
new ClusterImpl()
177+
.transportFactory(WebsocketTransportFactory::new)
151178
.membership(opts -> opts.namespace("develop/develop-2"))
152179
.membership(
153180
opts ->
@@ -168,24 +195,35 @@ public void testSimpleNamespacesHierarchy() {
168195

169196
@Test
170197
public void testIsolatedParentNamespaces() {
171-
Cluster parent1 = new ClusterImpl().membership(opts -> opts.namespace("a/1")).startAwait();
198+
Cluster parent1 =
199+
new ClusterImpl()
200+
.transportFactory(WebsocketTransportFactory::new)
201+
.membership(opts -> opts.namespace("a/1"))
202+
.startAwait();
172203

173204
Cluster bob =
174205
new ClusterImpl()
206+
.transportFactory(WebsocketTransportFactory::new)
175207
.membership(opts -> opts.namespace("a/1/c"))
176208
.membership(opts -> opts.seedMembers(parent1.address()))
177209
.startAwait();
178210

179211
Cluster carol =
180212
new ClusterImpl()
213+
.transportFactory(WebsocketTransportFactory::new)
181214
.membership(opts -> opts.namespace("a/1/c"))
182215
.membership(opts -> opts.seedMembers(parent1.address(), bob.address()))
183216
.startAwait();
184217

185-
Cluster parent2 = new ClusterImpl().membership(opts -> opts.namespace("a/111")).startAwait();
218+
Cluster parent2 =
219+
new ClusterImpl()
220+
.transportFactory(WebsocketTransportFactory::new)
221+
.membership(opts -> opts.namespace("a/111"))
222+
.startAwait();
186223

187224
Cluster dan =
188225
new ClusterImpl()
226+
.transportFactory(WebsocketTransportFactory::new)
189227
.membership(opts -> opts.namespace("a/111/c"))
190228
.membership(
191229
opts ->
@@ -195,6 +233,7 @@ public void testIsolatedParentNamespaces() {
195233

196234
Cluster eve =
197235
new ClusterImpl()
236+
.transportFactory(WebsocketTransportFactory::new)
198237
.membership(opts -> opts.namespace("a/111/c"))
199238
.membership(
200239
opts ->

codec-parent/codec-jackson-smile/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>io.scalecube</groupId>
77
<artifactId>scalecube-codec-parent</artifactId>
8-
<version>2.5.1-SNAPSHOT</version>
8+
<version>2.6.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>scalecube-codec-jackson-smile</artifactId>

codec-parent/codec-jackson/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>scalecube-codec-parent</artifactId>
55
<groupId>io.scalecube</groupId>
6-
<version>2.5.1-SNAPSHOT</version>
6+
<version>2.6.0-SNAPSHOT</version>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>
99

codec-parent/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>scalecube-cluster-parent</artifactId>
66
<groupId>io.scalecube</groupId>
7-
<version>2.5.1-SNAPSHOT</version>
7+
<version>2.6.0-SNAPSHOT</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010
<packaging>pom</packaging>

examples/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.scalecube</groupId>
66
<artifactId>scalecube-cluster-parent</artifactId>
7-
<version>2.5.1-SNAPSHOT</version>
7+
<version>2.6.0-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>scalecube-cluster-examples</artifactId>
@@ -16,6 +16,11 @@
1616
<artifactId>scalecube-cluster</artifactId>
1717
<version>${project.version}</version>
1818
</dependency>
19+
<dependency>
20+
<groupId>${project.groupId}</groupId>
21+
<artifactId>scalecube-transport-netty</artifactId>
22+
<version>${project.version}</version>
23+
</dependency>
1924
<dependency>
2025
<groupId>io.scalecube</groupId>
2126
<artifactId>scalecube-cluster-testlib</artifactId>

0 commit comments

Comments
 (0)