diff --git a/.github/maven-cd-settings.xml b/.github/maven-cd-settings.xml
new file mode 100644
index 0000000..1ee3124
--- /dev/null
+++ b/.github/maven-cd-settings.xml
@@ -0,0 +1,63 @@
+
+
+
+
+ false
+
+
+
+ vertx-snapshots-repository
+ ${env.VERTX_NEXUS_USERNAME}
+ ${env.VERTX_NEXUS_PASSWORD}
+
+
+
+
+
+ google-mirror
+
+ true
+
+
+
+ google-maven-central
+ GCS Maven Central mirror EU
+ https://maven-central.storage-download.googleapis.com/maven2/
+
+ true
+
+
+ false
+
+
+
+
+
+ google-maven-central
+ GCS Maven Central mirror
+ https://maven-central.storage-download.googleapis.com/maven2/
+
+ true
+
+
+ false
+
+
+
+
+
+
diff --git a/.github/maven-ci-settings.xml b/.github/maven-ci-settings.xml
new file mode 100644
index 0000000..24b5bdb
--- /dev/null
+++ b/.github/maven-ci-settings.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ false
+
+
+
+ google-mirror
+
+ true
+
+
+
+ google-maven-central
+ GCS Maven Central mirror EU
+ https://maven-central.storage-download.googleapis.com/maven2/
+
+ true
+
+
+ false
+
+
+
+
+
+ google-maven-central
+ GCS Maven Central mirror
+ https://maven-central.storage-download.googleapis.com/maven2/
+
+ true
+
+
+ false
+
+
+
+
+
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..a08d993
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,51 @@
+name: CI
+on:
+ push:
+ branches:
+ - master
+ - '[0-9]+.[0-9]+'
+ pull_request:
+ branches:
+ - master
+ - '[0-9]+.[0-9]+'
+ schedule:
+ - cron: '0 4 * * *'
+jobs:
+ Test:
+ name: Run tests
+ strategy:
+ matrix:
+ os: [ubuntu-latest]
+ jdk: [8, 17]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install JDK
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ matrix.jdk }}
+ distribution: temurin
+ - name: Run tests
+ run: mvn -s .github/maven-ci-settings.xml -q clean verify -B
+ Deploy:
+ name: Deploy to OSSRH
+ if: ${{ github.repository_owner == 'vert-x3' && (github.event_name == 'push' || github.event_name == 'schedule') }}
+ needs: Test
+ runs-on: ubuntu-latest
+ env:
+ VERTX_NEXUS_USERNAME: ${{ secrets.VERTX_NEXUS_USERNAME }}
+ VERTX_NEXUS_PASSWORD: ${{ secrets.VERTX_NEXUS_PASSWORD }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install JDK
+ uses: actions/setup-java@v2
+ with:
+ java-version: 8
+ distribution: temurin
+ - name: Get project version
+ run: echo "PROJECT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:evaluate -Dexpression=project.version -B | grep -v '\[')" >> $GITHUB_ENV
+ - name: Maven deploy
+ if: ${{ endsWith(env.PROJECT_VERSION, '-SNAPSHOT') }}
+ run: mvn deploy -s .github/maven-cd-settings.xml -DskipTests -B
diff --git a/.travis.deploy.artifacts.sh b/.travis.deploy.artifacts.sh
deleted file mode 100644
index d6f9804..0000000
--- a/.travis.deploy.artifacts.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-PROJECT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:evaluate -Dexpression=project.version -B | grep -v '\[')
-if [[ "$PROJECT_VERSION" =~ .*SNAPSHOT ]] && [[ "${TRAVIS_BRANCH}" =~ ^master$|^[0-9]+\.[0-9]+$ ]] && [[ "${TRAVIS_PULL_REQUEST}" = "false" ]];
-then
- mvn deploy -s .travis.maven.settings.xml -DskipTests -B;
-fi
diff --git a/.travis.maven.settings.xml b/.travis.maven.settings.xml
deleted file mode 100644
index cd8c444..0000000
--- a/.travis.maven.settings.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- false
-
-
-
- sonatype-nexus-snapshots
- ${env.SONATYPE_NEXUS_USERNAME}
- ${env.SONATYPE_NEXUS_PASSWORD}
-
-
-
-
-
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 064d240..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: java
-branches:
- only:
- - master
- - /^\d+\.\d+$/
-cache:
- directories:
- - $HOME/.m2
-before_cache:
- - rm -rf $HOME/.m2/repository/io/vertx/
-jobs:
- include:
- - stage: test
- name: "OpenJDK 8"
- jdk: openjdk8
- script: mvn -q clean verify -B
- - if: type != pull_request
- name: "OpenJDK 11"
- jdk: openjdk11
- script: mvn -q clean verify -B
- - stage: deploy
- name: "Deploy to Sonatype's snapshots repository"
- jdk: openjdk8
- if: type != pull_request AND env(SONATYPE_NEXUS_USERNAME) IS present
- script: bash .travis.deploy.artifacts.sh
-notifications:
- email:
- recipients:
- - secure: "OFDvmbTbrfEnG9hBX/ekW6PXaM4bskrTayCr4umVM07HMU1YAKYkKfABwCf+6ccrA9MI/zXzeP8Pw5Pl8ARGA/Q2Eyv6C3o2bbXd5bk9aMa+kxE4Utv0pW6IMKH9BywR/eWfjYPKHs73fDzOC/u1h8xejFgIhddVgqCocVbb1cGmj6LwpP3YwjAOIoUbKnu4Ug7tOVD7r1laEL06g6kcUDMx1Me5I10rlx2n9kzn134esImP+dacgP9Pa0TjCqgxcjn0GYpi+txoLb3+4koEHcCm3isNdmaDJMRrQ38JlXTJ+EfG3ZykNKDaJMDE2iNqyvpwx1nn9TZWwcMF32UBlpH0ADzoLY93KGkpfSdaBkXCon1gyPiKIpgC6+HviO7K6dZnm2rUyfFrWEvGwb2l93m+La1WEIRucBWBxzw63ypvIv5qFDonWgvm6Byk9OUsPu1dF8zMKSjBAiDcqvefpXupZ+sAEIHOLio0XBYpBaSvrakjoL4gEv+TJiY4VhYfovbt3qEy47ov9ejtK9RevYcmY4/pTo9sfqIsi7oKJd8hEJT3Z7djHZ2MifgI9zrXMdLqbHogM30aIQ9y8RduIVEdbX39WogDPFH3F8y3b3kXHXaNA8K5+d/WYhE9Bq9QbHSk7vAu2sa1Jz2jk0nX4vAesNfwp2WMcelvqy/er1o="
- on_success: always
- on_failure: always
diff --git a/README.md b/README.md
index 8e92963..a662394 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# vertx-tcp-eventbus-bridge
-[](https://travis-ci.org/vert-x3/vertx-tcp-eventbus-bridge)
+[](https://github.com/vert-x3/vertx-tcp-eventbus-bridge/actions?query=workflow%3ACI)
This is a TCP eventbus bridge implementation.
@@ -34,7 +34,7 @@ It is the response to the `ping` request from client to bridge.
For a regular message, the object will also contain:
* `address`: (string, required) Destination address.
-* `body`: (object, required) Message content as a JSON object.
+* `body`: (any, required) Message content as a JSON valid type.
* `headers`: (object, optional) Headers as a JSON object with String values.
* `replyAddress`: (string, optional) Address for replying to.
* `send`: (boolean, required) Will be `true` if the message is a send, `false` if a publish.
@@ -54,7 +54,7 @@ type is shown below, along with the companion keys for that type:
#### `type: "send"`, `type: "publish"`
* `address`: (string, required) Destination address
-* `body`: (object, required) Message content as a JSON object.
+* `body`: (any, required) Message content as a JSON valid type.
* `headers`: (object, optional) Headers as a JSON object with String values.
* `replyAddress`: (string, optional) Address for replying to.
diff --git a/pom.xml b/pom.xml
index 42f34b8..2f2718f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,16 +20,16 @@
io.vertx
vertx-ext-parent
- 34
+ 38
vertx-tcp-eventbus-bridge
- 4.0.0-SNAPSHOT
+ 4.2.1-SNAPSHOT
Vert.x TCP EventBus Bridge
- 4.0.0-SNAPSHOT
+ 4.2.1-SNAPSHOT
@@ -77,12 +77,18 @@
junit
junit
test
- 4.12
+ 4.13.1
io.vertx
vertx-unit
test
+
+ org.bouncycastle
+ bcpkix-jdk15on
+ 1.65
+ test
+
diff --git a/src/client/nodejs/lib/tcp-vertx-eventbus.js b/src/client/nodejs/lib/tcp-vertx-eventbus.js
index e7cb3aa..9b8b4ff 100644
--- a/src/client/nodejs/lib/tcp-vertx-eventbus.js
+++ b/src/client/nodejs/lib/tcp-vertx-eventbus.js
@@ -47,7 +47,7 @@ function send(transport, message) {
message = Buffer.from(message, "utf-8");
var msgLen = message.length;
- var buffer = new Buffer(4);
+ var buffer = Buffer.alloc(4);
buffer.writeInt32BE(msgLen, 0);
transport.write(Buffer.concat([buffer, message], 4 + msgLen));
@@ -101,7 +101,7 @@ var EventBus = function (host, port, options) {
this.onerror = console.error;
// message buffer
- var buffer = new Buffer(0);
+ var buffer = Buffer.alloc(0);
var len = 0;
this.transport.on('close', function () {
diff --git a/src/client/nodejs/package.json b/src/client/nodejs/package.json
index 07a5da8..13a1a99 100644
--- a/src/client/nodejs/package.json
+++ b/src/client/nodejs/package.json
@@ -2,7 +2,7 @@
"name": "vertx3-eventbus-client",
"description": "Vert.x3 TCP event bus client",
"dependencies": {
- "node-uuid": "1.4.3"
+ "node-uuid": "1.4.8"
},
"devDependencies": {
"mocha": "2.3.3"
diff --git a/src/main/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridge.java b/src/main/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridge.java
index e87bbfa..5abbdda 100644
--- a/src/main/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridge.java
+++ b/src/main/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridge.java
@@ -18,6 +18,7 @@
import io.vertx.codegen.annotations.Fluent;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.AsyncResult;
+import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.net.NetServerOptions;
@@ -49,10 +50,9 @@ static TcpEventBusBridge create(Vertx vertx, BridgeOptions options, NetServerOpt
/**
* Listen on default port 7000
*
- * @return self
+ * @return a future of the result
*/
- @Fluent
- TcpEventBusBridge listen();
+ Future listen();
/**
* Listen on default port 7000 with a handler to report the state of the socket listen operation.
@@ -69,10 +69,9 @@ static TcpEventBusBridge create(Vertx vertx, BridgeOptions options, NetServerOpt
* @param port tcp port
* @param address tcp address to the bind
*
- * @return self
+ * @return a future of the result
*/
- @Fluent
- TcpEventBusBridge listen(int port, String address);
+ Future listen(int port, String address);
/**
* Listen on specific port and bind to specific address
@@ -91,10 +90,9 @@ static TcpEventBusBridge create(Vertx vertx, BridgeOptions options, NetServerOpt
*
* @param port tcp port
*
- * @return self
+ * @return a future of the result
*/
- @Fluent
- TcpEventBusBridge listen(int port);
+ Future listen(int port);
/**
* Listen on specific port
@@ -116,6 +114,8 @@ static TcpEventBusBridge create(Vertx vertx, BridgeOptions options, NetServerOpt
/**
* Close the current socket.
+ *
+ * @return a future of the result
*/
- void close();
+ Future close();
}
diff --git a/src/main/java/io/vertx/ext/eventbus/bridge/tcp/impl/TcpEventBusBridgeImpl.java b/src/main/java/io/vertx/ext/eventbus/bridge/tcp/impl/TcpEventBusBridgeImpl.java
index 9ec01d3..ff2b111 100644
--- a/src/main/java/io/vertx/ext/eventbus/bridge/tcp/impl/TcpEventBusBridgeImpl.java
+++ b/src/main/java/io/vertx/ext/eventbus/bridge/tcp/impl/TcpEventBusBridgeImpl.java
@@ -71,27 +71,19 @@ public TcpEventBusBridgeImpl(Vertx vertx, BridgeOptions options, NetServerOption
server.connectHandler(this::handler);
}
- public TcpEventBusBridgeImpl(Vertx vertx, BridgeOptions options, NetServerOptions netServerOptions) {
- this(vertx, options, netServerOptions, null);
- }
-
-
@Override
- public TcpEventBusBridge listen() {
- server.listen();
- return this;
+ public Future listen() {
+ return server.listen().map(this);
}
@Override
- public TcpEventBusBridge listen(int port) {
- server.listen(port);
- return this;
+ public Future listen(int port) {
+ return server.listen(port).map(this);
}
@Override
- public TcpEventBusBridge listen(int port, String address) {
- server.listen(port, address);
- return this;
+ public Future listen(int port, String address) {
+ return server.listen(port, address).map(this);
}
@Override
@@ -131,8 +123,8 @@ public TcpEventBusBridge listen(int port, Handler
}
private void doSendOrPub(NetSocket socket, String address, JsonObject msg, Map> registry, Map> replies) {
- final JsonObject body = msg.getJsonObject("body");
+ MessageConsumer>> registry, Map> replies) {
+ final Object body = msg.getValue("body");
final JsonObject headers = msg.getJsonObject("headers");
@@ -147,11 +139,11 @@ private void doSendOrPub(NetSocket socket, String address, JsonObject msg, Map> res1) -> {
+ eb.request(address, body, deliveryOptions, (AsyncResult> res1) -> {
if (res1.failed()) {
sendErrFrame(address, replyAddress, (ReplyException) res1.cause(), socket);
} else {
- final Message response = res1.result();
+ final Message> response = res1.result();
final JsonObject responseHeaders = new JsonObject();
// clone the headers from / to
@@ -198,7 +190,7 @@ private void doSendOrPub(NetSocket socket, String address, JsonObject msg, Map res1) -> {
+ registry.put(address, eb.consumer(address, (Message
+ * @return self
+ */
+ public SSLKeyPairCerts createTwoWaySSL() {
+ try {
+ KeyPair serverRSAKeyPair = generateRSAKeyPair(2048);
+ Certificate serverCert = generateSelfSignedCert(SERVER_CERT_SUBJECT, serverRSAKeyPair);
+
+ KeyPair clientRSAKeyPair = generateRSAKeyPair(2048);
+ Certificate clientCert = generateSelfSignedCert(CLIENT_CERT_SUBJECT, clientRSAKeyPair);
+
+ KeyStore serverKeyStore = emptyJKSStore(PASSWORD);
+ serverKeyStore.setKeyEntry("localserver", serverRSAKeyPair.getPrivate(), PASSWORD.toCharArray(), new Certificate[]{serverCert});
+
+ KeyStore serverTrustStore = emptyJKSStore(PASSWORD);
+ serverTrustStore.setCertificateEntry("clientcert", clientCert);
+
+ KeyStore clientKeyStore = emptyJKSStore(PASSWORD);
+ clientKeyStore.setKeyEntry("localclient", clientRSAKeyPair.getPrivate(), PASSWORD.toCharArray(), new Certificate[]{clientCert});
+
+ KeyStore clientTrustStore = emptyJKSStore(PASSWORD);
+ clientTrustStore.setCertificateEntry("servercert", serverCert);
+
+ ByteArrayOutputStream serverKeyStoreOutputStream = new ByteArrayOutputStream(512);
+ serverKeyStore.store(serverKeyStoreOutputStream, PASSWORD.toCharArray());
+ this.serverKeyStore = new JksOptions().setPassword(PASSWORD).setValue(Buffer.buffer(serverKeyStoreOutputStream.toByteArray()));
+
+ ByteArrayOutputStream serverTrustStoreOutputStream = new ByteArrayOutputStream(512);
+ serverTrustStore.store(serverTrustStoreOutputStream, PASSWORD.toCharArray());
+ this.serverTrustStore = new JksOptions().setPassword(PASSWORD).setValue(Buffer.buffer(serverTrustStoreOutputStream.toByteArray()));
+
+ ByteArrayOutputStream clientKeyStoreOutputStream = new ByteArrayOutputStream(512);
+ clientKeyStore.store(clientKeyStoreOutputStream, PASSWORD.toCharArray());
+ this.clientKeyStore = new JksOptions().setPassword(PASSWORD).setValue(Buffer.buffer(clientKeyStoreOutputStream.toByteArray()));
+
+ ByteArrayOutputStream clientTrustStoreOutputStream = new ByteArrayOutputStream(512);
+ clientTrustStore.store(clientTrustStoreOutputStream, PASSWORD.toCharArray());
+ this.clientTrustStore = new JksOptions().setPassword(PASSWORD).setValue(Buffer.buffer(clientTrustStoreOutputStream.toByteArray()));
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot generate SSL key pairs and certificates", e);
+ }
+ return this;
+ }
+
+ // refer to: https://github.com/vert-x3/vertx-config/blob/4.0.0-milestone4/vertx-config-vault/src/test/java/io/vertx/config/vault/utils/Certificates.java#L149
+ private X509Certificate generateSelfSignedCert(String certSub, KeyPair keyPair) throws Exception {
+ final X509v3CertificateBuilder certificateBuilder = new X509v3CertificateBuilder(
+ new org.bouncycastle.asn1.x500.X500Name(certSub),
+ BigInteger.ONE,
+ new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30),
+ new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30)),
+ new X500Name(certSub),
+ SubjectPublicKeyInfo.getInstance(keyPair.getPublic().getEncoded())
+ );
+ final GeneralNames subjectAltNames = new GeneralNames(new GeneralName(GeneralName.iPAddress, "127.0.0.1"));
+ certificateBuilder.addExtension(org.bouncycastle.asn1.x509.Extension.subjectAlternativeName, false, subjectAltNames);
+
+ final AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find("SHA1WithRSAEncryption");
+ final AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
+ final BcContentSignerBuilder signerBuilder = new BcRSAContentSignerBuilder(sigAlgId, digAlgId);
+ final AsymmetricKeyParameter keyp = PrivateKeyFactory.createKey(keyPair.getPrivate().getEncoded());
+ final ContentSigner signer = signerBuilder.build(keyp);
+ final X509CertificateHolder x509CertificateHolder = certificateBuilder.build(signer);
+ final X509Certificate certificate = new JcaX509CertificateConverter().getCertificate(x509CertificateHolder);
+ certificate.checkValidity(new Date());
+ certificate.verify(keyPair.getPublic());
+ return certificate;
+ }
+
+ private KeyPair generateRSAKeyPair(int keySize) throws NoSuchAlgorithmException {
+ final KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
+ keyPairGenerator.initialize(keySize);
+ return keyPairGenerator.genKeyPair();
+ }
+
+ private KeyStore emptyJKSStore(String password) throws Exception {
+ KeyStore ks = KeyStore.getInstance("JKS");
+ ks.load(null, password.toCharArray());
+ return ks;
+ }
+
+ /**
+ * @return the server's keystore options
+ */
+ public JksOptions getServerKeyStore() {
+ return serverKeyStore;
+ }
+
+ /**
+ * @return the server's truststore options
+ */
+ public JksOptions getServerTrustStore() {
+ return serverTrustStore;
+ }
+
+ /**
+ * @return the client's keystore options
+ */
+ public JksOptions getClientKeyStore() {
+ return clientKeyStore;
+ }
+
+ /**
+ * @return the client's truststore options
+ */
+ public JksOptions getClientTrustStore() {
+ return clientTrustStore;
+ }
+}
diff --git a/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeEventTest.java b/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeEventTest.java
index 7f2c826..175c3e8 100644
--- a/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeEventTest.java
+++ b/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeEventTest.java
@@ -17,6 +17,7 @@
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.Message;
+import io.vertx.core.http.ClientAuth;
import io.vertx.core.json.JsonObject;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
@@ -33,24 +34,26 @@
import org.junit.runner.RunWith;
import javax.net.ssl.SSLPeerUnverifiedException;
-import javax.security.cert.X509Certificate;
+import java.security.cert.Certificate;
+import java.security.cert.X509Certificate;
@RunWith(VertxUnitRunner.class)
public class TcpEventBusBridgeEventTest {
+ private static final Logger logger = LoggerFactory.getLogger(TcpEventBusBridgeEventTest.class);
+
private Vertx vertx;
+ private SSLKeyPairCerts sslKeyPairCerts;
+
@Before
public void before(TestContext context) {
vertx = Vertx.vertx();
final Async async = context.async();
-
vertx.eventBus().consumer("hello", (Message msg) -> msg.reply(new JsonObject().put("value", "Hello " + msg.body().getString("value"))));
-
vertx.eventBus().consumer("echo", (Message msg) -> msg.reply(msg.body()));
-
vertx.setPeriodic(1000, __ -> vertx.eventBus().send("ping", new JsonObject().put("value", "hi")));
-
+ sslKeyPairCerts = new SSLKeyPairCerts().createTwoWaySSL();
TcpEventBusBridge bridge = TcpEventBusBridge.create(
vertx,
new BridgeOptions()
@@ -60,28 +63,23 @@ public void before(TestContext context) {
.addOutboundPermitted(new PermittedOptions().setAddress("echo"))
.addOutboundPermitted(new PermittedOptions().setAddress("ping")),
new NetServerOptions()
- .setSsl(true).setTrustStoreOptions(new JksOptions().setPath("server.truststore").setPassword("wibble"))
- .setKeyStoreOptions(new JksOptions().setPath("server.keystore").setPassword("wibble")),
+ .setClientAuth(ClientAuth.REQUEST)
+ .setSsl(true)
+ .setTrustStoreOptions(sslKeyPairCerts.getServerTrustStore())
+ .setKeyStoreOptions(sslKeyPairCerts.getServerKeyStore()),
be -> {
-
- Logger l = LoggerFactory.getLogger(this.getClass().getName());
- l.info("Handled a bridge event " + be.getRawMessage());
+ logger.info("Handled a bridge event " + be.getRawMessage());
if (be.socket().isSsl()) {
try {
- for (X509Certificate c : be.socket().peerCertificateChain()) {
- l.info(c.getSubjectDN().toString());
+ for (Certificate c : be.socket().peerCertificates()) {
+ logger.info(((X509Certificate)c).getSubjectDN().toString());
}
-
} catch (SSLPeerUnverifiedException e) {
- l.warn("Caught SSLPeerUnverifiedException when processing peerCertificateChain ");
- //@fixme should have a test truststore/keystore that validates, the ones i made still throw this
+ throw new RuntimeException("Failed to get peer certificates chain", e);
}
}
-
be.complete(true);
-
});
-
bridge.listen(7000, res -> {
context.assertTrue(res.succeeded());
async.complete();
@@ -96,20 +94,37 @@ public void after(TestContext context) {
@Test
public void testSendVoidMessage(TestContext context) {
// Send a request and get a response
- NetClient client = vertx.createNetClient(new NetClientOptions().setSsl(true).setTrustAll(true)
- .setKeyStoreOptions(new JksOptions().setPath("client.keystore").setPassword("wibble")));
+ NetClient client = vertx.createNetClient(new NetClientOptions()
+ .setSsl(true)
+ .setTrustStoreOptions(sslKeyPairCerts.getClientTrustStore())
+ .setKeyStoreOptions(sslKeyPairCerts.getClientKeyStore()));
final Async async = context.async();
-
vertx.eventBus().consumer("test", (Message msg) -> {
client.close();
async.complete();
});
-
client.connect(7000, "localhost", conn -> {
context.assertFalse(conn.failed());
-
NetSocket socket = conn.result();
+ FrameHelper.sendFrame("send", "test", new JsonObject().put("value", "vert.x"), socket);
+ });
+ }
+ @Test
+ public void testSendVoidMessageTrustAll(TestContext context) {
+ NetClient client = vertx.createNetClient(new NetClientOptions()
+ .setSsl(true)
+ .setTrustAll(true)
+ .setKeyStoreOptions(sslKeyPairCerts.getClientKeyStore())
+ );
+ final Async async = context.async();
+ vertx.eventBus().consumer("test", (Message msg) -> {
+ client.close();
+ async.complete();
+ });
+ client.connect(7000, "localhost", conn -> {
+ context.assertFalse(conn.failed());
+ NetSocket socket = conn.result();
FrameHelper.sendFrame("send", "test", new JsonObject().put("value", "vert.x"), socket);
});
}
diff --git a/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeTest.java b/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeTest.java
index 82ad559..7ef6404 100644
--- a/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeTest.java
+++ b/src/test/java/io/vertx/ext/eventbus/bridge/tcp/TcpEventBusBridgeTest.java
@@ -91,6 +91,24 @@ public void testSendVoidMessage(TestContext context) {
}));
}
+ @Test
+ public void testSendVoidStringMessage(TestContext context) {
+ // Send a request and get a response
+ NetClient client = vertx.createNetClient();
+ final Async async = context.async();
+
+ vertx.eventBus().consumer("test", (Message