Merge pull request #97 from rabbitmq/fix-java-testsuite
java_SUITE: Fetch dependencies using Maven
This commit is contained in:
commit
93e9430f38
|
|
@ -12,8 +12,3 @@ plugins/
|
|||
/xrefr
|
||||
|
||||
rabbitmq_mqtt.d
|
||||
|
||||
# Testsuite artifacts.
|
||||
test/build/
|
||||
test/test_client/
|
||||
test/junit*
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
/build/
|
||||
/lib/
|
||||
|
|
@ -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
|
||||
|
|
@ -7,33 +7,18 @@
|
|||
<property file="build.properties"/>
|
||||
|
||||
<property environment="env"/>
|
||||
<property name="java-amqp-client-path" location="${env.DEPS_DIR}/rabbitmq_java_client" />
|
||||
|
||||
<path id="test.javac.classpath">
|
||||
<!-- cf dist target, infra -->
|
||||
<fileset dir="lib">
|
||||
<include name="**/*.jar"/>
|
||||
</fileset>
|
||||
<fileset dir="test_client">
|
||||
<include name="**/*.jar"/>
|
||||
</fileset>
|
||||
<fileset dir="${java-amqp-client-path}">
|
||||
<include name="**/rabbitmq-client.jar" />
|
||||
</fileset>
|
||||
</path>
|
||||
|
||||
<target name="clean-paho" description="Clean compiled Eclipe Paho Test Client jars" >
|
||||
<ant antfile="test_client/org.eclipse.paho.client.mqttv3/build.xml" useNativeBasedir="true" target="clean"/>
|
||||
</target>
|
||||
|
||||
<target name="clean" >
|
||||
<delete dir="${build.out}"/>
|
||||
</target>
|
||||
|
||||
<target name="build-paho" depends="clean-paho" description="Build the Eclipse Paho Test Client">
|
||||
<ant antfile="test_client/org.eclipse.paho.client.mqttv3/build.xml" useNativeBasedir="true" />
|
||||
</target>
|
||||
|
||||
<target name="detect-ssl">
|
||||
<available property="SSL_AVAILABLE" file="${certs.dir}/client"/>
|
||||
<echo message="certsdir:${certs.dir}" />
|
||||
|
|
@ -96,7 +81,7 @@
|
|||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="test-build" depends="clean,build-paho">
|
||||
<target name="test-build" depends="clean">
|
||||
<mkdir dir="${test.javac.out}"/>
|
||||
|
||||
<javac srcdir="./src"
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.rabbitmq</groupId>
|
||||
<artifactId>amqp-client</artifactId>
|
||||
<version>3.7.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>RabbitMQ MQTT plugin dependencies list</name>
|
||||
<description>Fetches test dependencies only.</description>
|
||||
<url>http://www.rabbitmq.com</url>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
|
||||
<version>1.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.rabbitmq</groupId>
|
||||
<artifactId>amqp-client</artifactId>
|
||||
<version>3.6.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -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) {}
|
||||
}
|
||||
Binary file not shown.
Loading…
Reference in New Issue