diff --git a/deps/rabbitmq_mqtt/.gitignore b/deps/rabbitmq_mqtt/.gitignore
index 71e4f7acfd..797263436a 100644
--- a/deps/rabbitmq_mqtt/.gitignore
+++ b/deps/rabbitmq_mqtt/.gitignore
@@ -12,8 +12,3 @@ plugins/
/xrefr
rabbitmq_mqtt.d
-
-# Testsuite artifacts.
-test/build/
-test/test_client/
-test/junit*
diff --git a/deps/rabbitmq_mqtt/Makefile b/deps/rabbitmq_mqtt/Makefile
index 7879f653ea..44fb62d9c0 100644
--- a/deps/rabbitmq_mqtt/Makefile
+++ b/deps/rabbitmq_mqtt/Makefile
@@ -2,7 +2,7 @@ PROJECT = rabbitmq_mqtt
DEPS = amqp_client
-TEST_DEPS = rabbit rabbitmq_java_client emqttc ct_helper
+TEST_DEPS = rabbit emqttc ct_helper
dep_ct_helper = git https://github.com/extend/ct_helper.git master
dep_emqttc = git https://github.com/emqtt/emqttc.git master
diff --git a/deps/rabbitmq_mqtt/test/Makefile b/deps/rabbitmq_mqtt/test/Makefile
deleted file mode 100644
index 8b37c4b39f..0000000000
--- a/deps/rabbitmq_mqtt/test/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-UPSTREAM_GIT=https://github.com/eclipse/paho.mqtt.java
-REVISION=00b5b2f99ae8410b7d96d106e080a092c5f92546
-
-JC=javac
-
-TEST_SRC=src
-CHECKOUT_DIR=test_client
-PAHO_JAR_NAME=org.eclipse.paho.client.mqttv3.jar
-PAHO_JAR=$(CHECKOUT_DIR)/org.eclipse.paho.client.mqttv3/$(PAHO_JAR_NAME)
-JUNIT_JAR=../lib/junit.jar
-JAVA_AMQP_DIR=$(DEPS_DIR)/rabbitmq_java_client
-JAVA_AMQP_CLASSES=$(JAVA_AMQP_DIR)/build/classes/
-
-ALL_CLASSES:=$(foreach f,$(shell find src -name '*.class'),'$(f)')
-CP:=$(PAHO_JAR):$(JUNIT_JAR):$(TEST_SRC):$(JAVA_AMQP_CLASSES)
-
-HOSTNAME:=$(shell hostname)
-
-define class_from_path
-$(subst .class,,$(subst src.,,$(subst /,.,$(1))))
-endef
-
-.PHONY: test
-test: build_java_amqp
- ant test \
- -Dhostname=$(HOSTNAME) \
- -Dcerts.dir=$(SSL_CERTS_DIR) \
- -Dmqtt.ssl.port=$(MQTT_SSL_PORT) \
- -Dmqtt.port=$(MQTT_PORT) \
- -Damqp.port=$(AMQP_PORT) \
- -Dbuild.out=$(DATA_DIR)/build
-
-clean:
- ant clean
- rm -rf test_client
-
-
-distclean: clean
- rm -rf $(CHECKOUT_DIR)
-
-$(CHECKOUT_DIR):
- git clone $(UPSTREAM_GIT) $@
- (cd $@ && git checkout $(REVISION)) || rm -rf $@
-
-
-.PHONY: build_java_amqp
-build_java_amqp: $(CHECKOUT_DIR)
- $(MAKE) -C $(JAVA_AMQP_DIR) jar
diff --git a/deps/rabbitmq_mqtt/test/java_SUITE.erl b/deps/rabbitmq_mqtt/test/java_SUITE.erl
index eb011fcd5d..0b3988b85b 100644
--- a/deps/rabbitmq_mqtt/test/java_SUITE.erl
+++ b/deps/rabbitmq_mqtt/test/java_SUITE.erl
@@ -96,18 +96,12 @@ java(Config) ->
MqttPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_mqtt),
MqttSslPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_mqtt_tls),
AmqpPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_amqp),
- DataDir = rabbit_ct_helpers:get_config(Config, priv_dir),
- os:putenv("DATA_DIR", DataDir),
os:putenv("SSL_CERTS_DIR", CertsDir),
os:putenv("MQTT_SSL_PORT", erlang:integer_to_list(MqttSslPort)),
os:putenv("MQTT_PORT", erlang:integer_to_list(MqttPort)),
os:putenv("AMQP_PORT", erlang:integer_to_list(AmqpPort)),
- {ok, _} = rabbit_ct_helpers:make(Config, make_dir(), ["test"]).
-
-
-make_dir() ->
- {Src, _} = filename:find_src(?MODULE),
- filename:dirname(Src).
+ DataDir = rabbit_ct_helpers:get_config(Config, data_dir),
+ {ok, _} = rabbit_ct_helpers:make(Config, DataDir, ["tests"]).
rpc(Config, M, F, A) ->
rabbit_ct_broker_helpers:rpc(Config, 0, M, F, A).
diff --git a/deps/rabbitmq_mqtt/test/java_SUITE_data/.gitignore b/deps/rabbitmq_mqtt/test/java_SUITE_data/.gitignore
new file mode 100644
index 0000000000..8e0bc29029
--- /dev/null
+++ b/deps/rabbitmq_mqtt/test/java_SUITE_data/.gitignore
@@ -0,0 +1,2 @@
+/build/
+/lib/
diff --git a/deps/rabbitmq_mqtt/test/java_SUITE_data/Makefile b/deps/rabbitmq_mqtt/test/java_SUITE_data/Makefile
new file mode 100644
index 0000000000..153f1d18ac
--- /dev/null
+++ b/deps/rabbitmq_mqtt/test/java_SUITE_data/Makefile
@@ -0,0 +1,21 @@
+HOSTNAME := $(shell hostname)
+
+.PHONY: deps tests clean distclean
+
+deps:
+ mkdir -p lib
+ mvn dependency:copy-dependencies -DoutputDirectory=lib
+
+tests: deps
+ ant test \
+ -Dhostname=$(HOSTNAME) \
+ -Dcerts.dir=$(SSL_CERTS_DIR) \
+ -Dmqtt.ssl.port=$(MQTT_SSL_PORT) \
+ -Dmqtt.port=$(MQTT_PORT) \
+ -Damqp.port=$(AMQP_PORT)
+
+clean:
+ ant clean
+
+distclean: clean
+ rm -f lib/*.jar
diff --git a/deps/rabbitmq_mqtt/test/build.properties b/deps/rabbitmq_mqtt/test/java_SUITE_data/build.properties
similarity index 100%
rename from deps/rabbitmq_mqtt/test/build.properties
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/build.properties
diff --git a/deps/rabbitmq_mqtt/test/build.xml b/deps/rabbitmq_mqtt/test/java_SUITE_data/build.xml
similarity index 85%
rename from deps/rabbitmq_mqtt/test/build.xml
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/build.xml
index c3eb7a6f0f..efd455f474 100644
--- a/deps/rabbitmq_mqtt/test/build.xml
+++ b/deps/rabbitmq_mqtt/test/java_SUITE_data/build.xml
@@ -7,33 +7,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -96,7 +81,7 @@
-
+
+
+ 4.0.0
+
+ com.rabbitmq
+ amqp-client
+ 3.7.0-SNAPSHOT
+ jar
+
+ RabbitMQ MQTT plugin dependencies list
+ Fetches test dependencies only.
+ http://www.rabbitmq.com
+
+
+
+ junit
+ junit
+ 4.12
+
+
+ org.eclipse.paho
+ org.eclipse.paho.client.mqttv3
+ 1.1.0
+
+
+ com.rabbitmq
+ amqp-client
+ 3.6.5
+
+
+
diff --git a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/MqttTest.java b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/MqttTest.java
similarity index 94%
rename from deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/MqttTest.java
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/MqttTest.java
index 9d1ed01f95..635f90955f 100644
--- a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/MqttTest.java
+++ b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/MqttTest.java
@@ -29,12 +29,15 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.internal.NetworkModule;
import org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule;
-import org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream;
-import org.eclipse.paho.client.mqttv3.internal.wire.MqttOutputStream;
import org.eclipse.paho.client.mqttv3.internal.wire.MqttPingReq;
+import org.eclipse.paho.client.mqttv3.internal.wire.MqttWireMessage;
import javax.net.SocketFactory;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.InputStream;
import java.io.IOException;
+import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.Socket;
@@ -157,12 +160,38 @@ public class MqttTest extends TestCase implements MqttCallback {
public void testConnectFirst() throws MqttException, IOException, InterruptedException {
NetworkModule networkModule = new TCPNetworkModule(SocketFactory.getDefault(), host, getPort(), "");
networkModule.start();
- MqttInputStream mqttIn = new MqttInputStream (networkModule.getInputStream());
- MqttOutputStream mqttOut = new MqttOutputStream(networkModule.getOutputStream());
+ DataInputStream in = new DataInputStream(networkModule.getInputStream());
+ OutputStream out = networkModule.getOutputStream();
+
+ MqttWireMessage message = new MqttPingReq();
+
try {
- mqttOut.write(new MqttPingReq());
- mqttOut.flush();
- mqttIn.readMqttWireMessage();
+ // ---8<---
+ // Copy/pasted from write() in MqttOutputStream.java.
+ byte[] bytes = message.getHeader();
+ byte[] pl = message.getPayload();
+ out.write(bytes,0,bytes.length);
+
+ int offset = 0;
+ int chunckSize = 1024;
+ while (offset < pl.length) {
+ int length = Math.min(chunckSize, pl.length - offset);
+ out.write(pl, offset, length);
+ offset += chunckSize;
+ }
+ // ---8<---
+
+ // ---8<---
+ // Copy/pasted from flush() in MqttOutputStream.java.
+ out.flush();
+ // ---8<---
+
+ // ---8<---
+ // Copy/pasted from readMqttWireMessage() in MqttInputStream.java.
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ byte first = in.readByte();
+ // ---8<---
+
fail("Error expected if CONNECT is not first packet");
} catch (IOException ignored) {}
}
diff --git a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/rabbit-test.sh b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/rabbit-test.sh
similarity index 100%
rename from deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/rabbit-test.sh
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/rabbit-test.sh
diff --git a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/setup-rabbit-test.sh b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/setup-rabbit-test.sh
similarity index 100%
rename from deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/setup-rabbit-test.sh
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/setup-rabbit-test.sh
diff --git a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/tls/MqttSSLTest.java b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/tls/MqttSSLTest.java
similarity index 100%
rename from deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/tls/MqttSSLTest.java
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/tls/MqttSSLTest.java
diff --git a/deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/tls/MutualAuth.java b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/tls/MutualAuth.java
similarity index 100%
rename from deps/rabbitmq_mqtt/test/src/com/rabbitmq/mqtt/test/tls/MutualAuth.java
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/com/rabbitmq/mqtt/test/tls/MutualAuth.java
diff --git a/deps/rabbitmq_mqtt/test/src/test.config b/deps/rabbitmq_mqtt/test/java_SUITE_data/src/test.config
similarity index 100%
rename from deps/rabbitmq_mqtt/test/src/test.config
rename to deps/rabbitmq_mqtt/test/java_SUITE_data/src/test.config
diff --git a/deps/rabbitmq_mqtt/test/lib/junit.jar b/deps/rabbitmq_mqtt/test/lib/junit.jar
deleted file mode 100644
index 3a7fc266c3..0000000000
Binary files a/deps/rabbitmq_mqtt/test/lib/junit.jar and /dev/null differ