From 68eb2259810dbc4c5cbf32e79379b74e60849904 Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Sun, 11 Jan 2015 23:27:20 +0800 Subject: [PATCH 1/5] add tests --- .gitmodules | 3 +++ tests/benchmarks/.placeholder | 0 tests/org.eclipse.paho.mqtt.testing | 1 + 3 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 100644 tests/benchmarks/.placeholder create mode 160000 tests/org.eclipse.paho.mqtt.testing diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..61767a9fb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tests/org.eclipse.paho.mqtt.testing"] + path = tests/org.eclipse.paho.mqtt.testing + url = git://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.testing.git diff --git a/tests/benchmarks/.placeholder b/tests/benchmarks/.placeholder new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.eclipse.paho.mqtt.testing b/tests/org.eclipse.paho.mqtt.testing new file mode 160000 index 000000000..17afdf7fb --- /dev/null +++ b/tests/org.eclipse.paho.mqtt.testing @@ -0,0 +1 @@ +Subproject commit 17afdf7fb8e148f376d63592bbf3dd4ccdf19e84 From 3ca3552452862fa34847c2035143d4ccb4bf37f9 Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Sun, 11 Jan 2015 23:29:50 +0800 Subject: [PATCH 2/5] fix {function_clause,[{emqtt_protocol,make_packet, [7,6] --- apps/emqtt/src/emqtt_protocol.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqtt/src/emqtt_protocol.erl b/apps/emqtt/src/emqtt_protocol.erl index b794bb9fe..e0eab9001 100644 --- a/apps/emqtt/src/emqtt_protocol.erl +++ b/apps/emqtt/src/emqtt_protocol.erl @@ -229,7 +229,7 @@ handle_packet(?DISCONNECT, #mqtt_packet{}, State=#proto_state{peer_name = PeerNa make_packet(Type) when Type >= ?CONNECT andalso Type =< ?DISCONNECT -> #mqtt_packet{ header = #mqtt_packet_header { type = Type } }. -make_packet(PubAck, PacketId) when PubAck >= ?PUBACK andalso PubAck =< ?PUBREC -> +make_packet(PubAck, PacketId) when PubAck >= ?PUBACK andalso PubAck =< ?PUBCOMP -> #mqtt_packet { header = #mqtt_packet_header { type = PubAck}, variable = #mqtt_packet_puback { packet_id = PacketId}}. From 161754871f0c77f10840067e60cab9bf3a803050 Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Sun, 11 Jan 2015 23:53:14 +0800 Subject: [PATCH 3/5] issue#33: QoS of PUBREL packet should be 1 --- apps/emqtt/src/emqtt_protocol.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/emqtt/src/emqtt_protocol.erl b/apps/emqtt/src/emqtt_protocol.erl index e0eab9001..170234791 100644 --- a/apps/emqtt/src/emqtt_protocol.erl +++ b/apps/emqtt/src/emqtt_protocol.erl @@ -230,9 +230,14 @@ make_packet(Type) when Type >= ?CONNECT andalso Type =< ?DISCONNECT -> #mqtt_packet{ header = #mqtt_packet_header { type = Type } }. make_packet(PubAck, PacketId) when PubAck >= ?PUBACK andalso PubAck =< ?PUBCOMP -> - #mqtt_packet { header = #mqtt_packet_header { type = PubAck}, + #mqtt_packet { header = #mqtt_packet_header { type = PubAck, qos = puback_qos(PubAck) }, variable = #mqtt_packet_puback { packet_id = PacketId}}. +puback_qos(?PUBACK) -> ?QOS_0; +puback_qos(?PUBREC) -> ?QOS_0; +puback_qos(?PUBREL) -> ?QOS_1; +puback_qos(?PUBCOMP) -> ?QOS_0; + -spec send_message(Message, State) -> {ok, NewState} when Message :: mqtt_message(), State :: proto_state(), From 28c0aeabd7a758e7c96ce3143624fb542fbe65cb Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Sun, 11 Jan 2015 23:54:41 +0800 Subject: [PATCH 4/5] compile error --- apps/emqtt/src/emqtt_client.erl | 8 +++++--- apps/emqtt/src/emqtt_protocol.erl | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/emqtt/src/emqtt_client.erl b/apps/emqtt/src/emqtt_client.erl index c74d1c606..da9ec98a4 100644 --- a/apps/emqtt/src/emqtt_client.erl +++ b/apps/emqtt/src/emqtt_client.erl @@ -90,9 +90,11 @@ handle_cast(Msg, State) -> handle_info(timeout, State) -> stop({shutdown, timeout}, State); -handle_info({stop, duplicate_id}, State=#state{conn_name=ConnName}) -> - %%TODO: - %lager:error("Shutdown for duplicate clientid:~s, conn:~s", [ClientId, ConnName]), +handle_info({stop, duplicate_id, NewPid}, State=#state{conn_name=ConnName}) -> + %% TODO: to... + %% need transfer data??? + %% emqtt_client:transfer(NewPid, Data), + %% lager:error("Shutdown for duplicate clientid:~s, conn:~s", [ClientId, ConnName]), stop({shutdown, duplicate_id}, State); %%TODO: ok?? diff --git a/apps/emqtt/src/emqtt_protocol.erl b/apps/emqtt/src/emqtt_protocol.erl index 170234791..5230bf596 100644 --- a/apps/emqtt/src/emqtt_protocol.erl +++ b/apps/emqtt/src/emqtt_protocol.erl @@ -236,7 +236,7 @@ make_packet(PubAck, PacketId) when PubAck >= ?PUBACK andalso PubAck =< ?PUBCOMP puback_qos(?PUBACK) -> ?QOS_0; puback_qos(?PUBREC) -> ?QOS_0; puback_qos(?PUBREL) -> ?QOS_1; -puback_qos(?PUBCOMP) -> ?QOS_0; +puback_qos(?PUBCOMP) -> ?QOS_0. -spec send_message(Message, State) -> {ok, NewState} when Message :: mqtt_message(), From 4e14d326e2d503ce475a02e07d7bda8b56c0130a Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Mon, 12 Jan 2015 01:26:17 +0800 Subject: [PATCH 5/5] 1 = Qos when PUBREL received --- apps/emqtt/src/emqtt_packet.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/emqtt/src/emqtt_packet.erl b/apps/emqtt/src/emqtt_packet.erl index f00f3cd29..723064688 100644 --- a/apps/emqtt/src/emqtt_packet.erl +++ b/apps/emqtt/src/emqtt_packet.erl @@ -119,6 +119,7 @@ parse_frame(Bin, #mqtt_packet_header{ type = Type, <> = FrameBin, wrap(Header, #mqtt_packet_puback{packet_id = PacketId}, Rest); {?PUBREL, <>} -> + 1 = Qos, <> = FrameBin, wrap(Header, #mqtt_packet_puback{ packet_id = PacketId }, Rest); {?PUBCOMP, <>} ->