diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-04-16 13:20:52 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-04-20 08:09:33 +0200 |
commit | 5811beba391baefad41cd6f8f4fa4e3862098813 (patch) | |
tree | 572fc2d609408300d6d4946476d5f2f41d09e96e /tests/data | |
parent | d1a2816b4128faa8ebc50ce93285c7364652856e (diff) |
mqtt: improve the state machine
To handle PUBLISH before SUBACK and more.
Updated the existing tests and added three new ones.
Reported-by: Christoph Krey
Bug: https://curl.haxx.se/mail/lib-2020-04/0021.html
Closes #5246
Diffstat (limited to 'tests/data')
-rw-r--r-- | tests/data/Makefile.inc | 2 | ||||
-rw-r--r-- | tests/data/test1190 | 2 | ||||
-rw-r--r-- | tests/data/test1191 | 2 | ||||
-rw-r--r-- | tests/data/test1192 | 2 | ||||
-rw-r--r-- | tests/data/test1193 | 2 | ||||
-rw-r--r-- | tests/data/test1194 | 59 | ||||
-rw-r--r-- | tests/data/test1195 | 63 | ||||
-rw-r--r-- | tests/data/test1196 | 62 |
8 files changed, 189 insertions, 5 deletions
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 099940410..425a0c02f 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -139,7 +139,7 @@ test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \ \ test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 \ \ -test1190 test1191 test1192 test1193 \ +test1190 test1191 test1192 test1193 test1194 test1195 test1196 \ \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \ test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \ diff --git a/tests/data/test1190 b/tests/data/test1190 index 491f2b843..007a15013 100644 --- a/tests/data/test1190 +++ b/tests/data/test1190 @@ -46,7 +46,7 @@ s/^(.* 00044d5154540402003c000c6375726c).*/$1/ </strippart> <protocol> client CONNECT 18 00044d5154540402003c000c6375726c -server CONACK 2 20020000 +server CONNACK 2 20020000 client SUBSCRIBE 9 000100043131393000 server SUBACK 3 9003000100 server PUBLISH c 300c00043131393068656c6c6f0a diff --git a/tests/data/test1191 b/tests/data/test1191 index fc8c68bb2..a36bc3113 100644 --- a/tests/data/test1191 +++ b/tests/data/test1191 @@ -42,7 +42,7 @@ s/^(.* 00044d5154540402003c000c6375726c).*/$1/ </strippart> <protocol> client CONNECT 18 00044d5154540402003c000c6375726c -server CONACK 2 20020000 +server CONNACK 2 20020000 client PUBLISH f 000431313931736f6d657468696e67 client DISCONNECT 0 e000 </protocol> diff --git a/tests/data/test1192 b/tests/data/test1192 index 92b96c3fd..691c7783f 100644 --- a/tests/data/test1192 +++ b/tests/data/test1192 @@ -46,7 +46,7 @@ s/^(.* 00044d5154540402003c000c6375726c).*/$1/ </strippart> <protocol> client CONNECT 18 00044d5154540402003c000c6375726c -server CONACK 2 20020000 +server CONNACK 2 20020000 client SUBSCRIBE 80a 0001080541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141412f3131393200 server SUBACK 3 9003000100 server PUBLISH 80d 308d10080541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141412f3131393268656c6c6f0a diff --git a/tests/data/test1193 b/tests/data/test1193 index 479ed5fe3..8da9abb21 100644 --- a/tests/data/test1193 +++ b/tests/data/test1193 @@ -64,7 +64,7 @@ s/^(.* 00044d5154540402003c000c6375726c).*/$1/ </strippart> <protocol> client CONNECT 18 00044d5154540402003c000c6375726c -server CONACK 2 20020000 +server CONNACK 2 20020000 client PUBLISH 7c2 000431313933313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839 client DISCONNECT 0 e000 </protocol> diff --git a/tests/data/test1194 b/tests/data/test1194 new file mode 100644 index 000000000..497891add --- /dev/null +++ b/tests/data/test1194 @@ -0,0 +1,59 @@ +<testcase> +<info> +<keywords> +MQTT +MQTT SUBSCRIBE +</keywords> +</info> + +# +# Server-side +<reply> +<data nocheck="yes"> +hello +</data> +<datacheck hex="yes"> +00 04 31 31 39 30 68 65 6c 6c 6f 5b 4c 46 5d 0a +</datacheck> +<servercmd> +PUBLISH-before-SUBACK TRUE +</servercmd> +</reply> + +# +# Client-side +<client> +<features> +mqtt +</features> +<server> +mqtt +</server> +<name> +MQTT SUBSCRIBE with PUBLISH befoire SUBACK +</name> +<command option="binary-trace"> +mqtt://%HOSTIP:%MQTTPORT/1194 +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +# These are hexadecimal protocol dumps from the client +# +# Strip out the random part of the client id from the CONNECT message +# before comparison +<strippart> +s/^(.* 00044d5154540402003c000c6375726c).*/$1/ +</strippart> +<protocol> +client CONNECT 18 00044d5154540402003c000c6375726c +server CONNACK 2 20020000 +client SUBSCRIBE 9 000100043131393400 +server PUBLISH c 300c00043131393468656c6c6f0a +server SUBACK 3 9003000100 +server DISCONNECT 0 e000 +</protocol> +</verify> +</testcase> diff --git a/tests/data/test1195 b/tests/data/test1195 new file mode 100644 index 000000000..0dfaccd53 --- /dev/null +++ b/tests/data/test1195 @@ -0,0 +1,63 @@ +<testcase> +<info> +<keywords> +MQTT +MQTT SUBSCRIBE +</keywords> +</info> + +# +# Server-side +<reply> +<data nocheck="yes"> +hello +</data> +<datacheck hex="yes"> +00 04 31 31 39 30 68 65 6c 6c 6f 5b 4c 46 5d 0a +</datacheck> +<servercmd> +PUBLISH-before-SUBACK TRUE +short-PUBLISH TRUE +</servercmd> +</reply> + +# +# Client-side +<client> +<features> +mqtt +</features> +<server> +mqtt +</server> +<name> +MQTT SUBSCRIBE with short PUBLISH +</name> +<command option="binary-trace"> +mqtt://%HOSTIP:%MQTTPORT/1195 +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +# These are hexadecimal protocol dumps from the client +# +# Strip out the random part of the client id from the CONNECT message +# before comparison +<strippart> +s/^(.* 00044d5154540402003c000c6375726c).*/$1/ +</strippart> +<protocol> +client CONNECT 18 00044d5154540402003c000c6375726c +server CONNACK 2 20020000 +client SUBSCRIBE 9 000100043131393500 +server PUBLISH c 300c00043131393568656c6c +</protocol> + +# 18 is CURLE_PARTIAL_FILE +<errorcode> +18 +</errorcode> +</verify> +</testcase> diff --git a/tests/data/test1196 b/tests/data/test1196 new file mode 100644 index 000000000..c07efd927 --- /dev/null +++ b/tests/data/test1196 @@ -0,0 +1,62 @@ +<testcase> +<info> +<keywords> +MQTT +MQTT SUBSCRIBE +</keywords> +</info> + +# +# Server-side +<reply> +<data nocheck="yes"> +hello +</data> +<datacheck hex="yes"> +00 04 31 31 39 30 68 65 6c 6c 6f 5b 4c 46 5d 0a +</datacheck> + +# error 1 - "Connection Refused, unacceptable protocol version" +<servercmd> +error-CONNACK 1 +</servercmd> +</reply> + +# +# Client-side +<client> +<features> +mqtt +</features> +<server> +mqtt +</server> +<name> +MQTT with error in CONNACK +</name> +<command option="binary-trace"> +mqtt://%HOSTIP:%MQTTPORT/1196 +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +# These are hexadecimal protocol dumps from the client +# +# Strip out the random part of the client id from the CONNECT message +# before comparison +<strippart> +s/^(.* 00044d5154540402003c000c6375726c).*/$1/ +</strippart> +<protocol> +client CONNECT 18 00044d5154540402003c000c6375726c +server CONNACK 2 20020001 +</protocol> + +# 8 is CURLE_WEIRD_SERVER_REPLY +<errorcode> +8 +</errorcode> +</verify> +</testcase> |