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