From 41fcd2223f126d21ca38a952ece375f9e5a425a1 Mon Sep 17 00:00:00 2001 From: core Date: Thu, 10 Aug 2023 17:51:29 -0400 Subject: [PATCH] pass 1.1 and 1.2 of the autobahn --- .idea/hornbeam.iml | 1 + Cargo.lock | 10 + Cargo.toml | 3 +- autobahn/client/hornbeam_case_1_1_1.html | 302 + autobahn/client/hornbeam_case_1_1_1.json | 185 + autobahn/client/hornbeam_case_1_1_2.html | 306 + autobahn/client/hornbeam_case_1_1_2.json | 185 + autobahn/client/hornbeam_case_1_1_3.html | 306 + autobahn/client/hornbeam_case_1_1_3.json | 185 + autobahn/client/hornbeam_case_1_1_4.html | 306 + autobahn/client/hornbeam_case_1_1_4.json | 185 + autobahn/client/hornbeam_case_1_1_5.html | 306 + autobahn/client/hornbeam_case_1_1_5.json | 185 + autobahn/client/hornbeam_case_1_1_6.html | 310 + autobahn/client/hornbeam_case_1_1_6.json | 193 + autobahn/client/hornbeam_case_1_1_7.html | 310 + autobahn/client/hornbeam_case_1_1_7.json | 193 + autobahn/client/hornbeam_case_1_1_8.html | 441 ++ autobahn/client/hornbeam_case_1_1_8.json | 714 +++ autobahn/client/hornbeam_case_1_2_1.html | 302 + autobahn/client/hornbeam_case_1_2_1.json | 185 + autobahn/client/hornbeam_case_1_2_2.html | 308 + autobahn/client/hornbeam_case_1_2_2.json | 185 + autobahn/client/hornbeam_case_1_2_3.html | 309 + autobahn/client/hornbeam_case_1_2_3.json | 192 + autobahn/client/hornbeam_case_1_2_4.html | 308 + autobahn/client/hornbeam_case_1_2_4.json | 185 + autobahn/client/hornbeam_case_1_2_5.html | 308 + autobahn/client/hornbeam_case_1_2_5.json | 185 + autobahn/client/hornbeam_case_1_2_6.html | 313 ++ autobahn/client/hornbeam_case_1_2_6.json | 208 + autobahn/client/hornbeam_case_1_2_7.html | 316 ++ autobahn/client/hornbeam_case_1_2_7.json | 209 + autobahn/client/hornbeam_case_1_2_8.html | 444 ++ autobahn/client/hornbeam_case_1_2_8.json | 729 +++ autobahn/client/hornbeam_case_2_1.html | 294 + autobahn/client/hornbeam_case_2_1.json | 151 + autobahn/client/hornbeam_case_2_10.html | 323 ++ autobahn/client/hornbeam_case_2_10.json | 386 ++ autobahn/client/hornbeam_case_2_11.html | 423 ++ autobahn/client/hornbeam_case_2_11.json | 1186 ++++ autobahn/client/hornbeam_case_2_2.html | 296 + autobahn/client/hornbeam_case_2_2.json | 152 + autobahn/client/hornbeam_case_2_3.html | 296 + autobahn/client/hornbeam_case_2_3.json | 152 + autobahn/client/hornbeam_case_2_4.html | 298 + autobahn/client/hornbeam_case_2_4.json | 152 + autobahn/client/hornbeam_case_2_5.html | 300 + autobahn/client/hornbeam_case_2_5.json | 147 + autobahn/client/hornbeam_case_2_6.html | 423 ++ autobahn/client/hornbeam_case_2_6.json | 1160 ++++ autobahn/client/hornbeam_case_2_7.html | 296 + autobahn/client/hornbeam_case_2_7.json | 144 + autobahn/client/hornbeam_case_2_8.html | 297 + autobahn/client/hornbeam_case_2_8.json | 144 + autobahn/client/hornbeam_case_2_9.html | 301 + autobahn/client/hornbeam_case_2_9.json | 176 + autobahn/client/hornbeam_case_3_1.html | 304 + autobahn/client/hornbeam_case_3_1.json | 181 + autobahn/client/hornbeam_case_3_2.html | 314 ++ autobahn/client/hornbeam_case_3_2.json | 252 + autobahn/client/hornbeam_case_3_3.html | 314 ++ autobahn/client/hornbeam_case_3_3.json | 252 + autobahn/client/hornbeam_case_3_4.html | 341 ++ autobahn/client/hornbeam_case_3_4.json | 482 ++ autobahn/client/hornbeam_case_3_5.html | 300 + autobahn/client/hornbeam_case_3_5.json | 152 + autobahn/client/hornbeam_case_3_6.html | 304 + autobahn/client/hornbeam_case_3_6.json | 181 + autobahn/client/hornbeam_case_3_7.html | 294 + autobahn/client/hornbeam_case_3_7.json | 143 + autobahn/client/hornbeam_case_4_1_1.html | 286 + autobahn/client/hornbeam_case_4_1_1.json | 98 + autobahn/client/hornbeam_case_4_1_2.html | 287 + autobahn/client/hornbeam_case_4_1_2.json | 98 + autobahn/client/hornbeam_case_4_1_3.html | 299 + autobahn/client/hornbeam_case_4_1_3.json | 180 + autobahn/client/hornbeam_case_4_1_4.html | 300 + autobahn/client/hornbeam_case_4_1_4.json | 180 + autobahn/client/hornbeam_case_4_1_5.html | 317 ++ autobahn/client/hornbeam_case_4_1_5.json | 315 ++ autobahn/client/hornbeam_case_4_2_1.html | 286 + autobahn/client/hornbeam_case_4_2_1.json | 98 + autobahn/client/hornbeam_case_4_2_2.html | 287 + autobahn/client/hornbeam_case_4_2_2.json | 98 + autobahn/client/hornbeam_case_4_2_3.html | 299 + autobahn/client/hornbeam_case_4_2_3.json | 180 + autobahn/client/hornbeam_case_4_2_4.html | 300 + autobahn/client/hornbeam_case_4_2_4.json | 180 + autobahn/client/hornbeam_case_4_2_5.html | 318 ++ autobahn/client/hornbeam_case_4_2_5.json | 323 ++ autobahn/client/hornbeam_case_5_1.html | 291 + autobahn/client/hornbeam_case_5_1.json | 121 + autobahn/client/hornbeam_case_5_10.html | 292 + autobahn/client/hornbeam_case_5_10.json | 122 + autobahn/client/hornbeam_case_5_11.html | 320 ++ autobahn/client/hornbeam_case_5_11.json | 353 ++ autobahn/client/hornbeam_case_5_12.html | 292 + autobahn/client/hornbeam_case_5_12.json | 122 + autobahn/client/hornbeam_case_5_13.html | 292 + autobahn/client/hornbeam_case_5_13.json | 122 + autobahn/client/hornbeam_case_5_14.html | 318 ++ autobahn/client/hornbeam_case_5_14.json | 337 ++ autobahn/client/hornbeam_case_5_15.html | 304 + autobahn/client/hornbeam_case_5_15.json | 208 + autobahn/client/hornbeam_case_5_16.html | 303 + autobahn/client/hornbeam_case_5_16.json | 209 + autobahn/client/hornbeam_case_5_17.html | 303 + autobahn/client/hornbeam_case_5_17.json | 209 + autobahn/client/hornbeam_case_5_18.html | 310 + autobahn/client/hornbeam_case_5_18.json | 221 + autobahn/client/hornbeam_case_5_19.html | 307 + autobahn/client/hornbeam_case_5_19.json | 195 + autobahn/client/hornbeam_case_5_2.html | 291 + autobahn/client/hornbeam_case_5_2.json | 121 + autobahn/client/hornbeam_case_5_20.html | 300 + autobahn/client/hornbeam_case_5_20.json | 167 + autobahn/client/hornbeam_case_5_3.html | 298 + autobahn/client/hornbeam_case_5_3.json | 163 + autobahn/client/hornbeam_case_5_4.html | 296 + autobahn/client/hornbeam_case_5_4.json | 155 + autobahn/client/hornbeam_case_5_5.html | 318 ++ autobahn/client/hornbeam_case_5_5.json | 323 ++ autobahn/client/hornbeam_case_5_6.html | 303 + autobahn/client/hornbeam_case_5_6.json | 191 + autobahn/client/hornbeam_case_5_7.html | 303 + autobahn/client/hornbeam_case_5_7.json | 191 + autobahn/client/hornbeam_case_5_8.html | 335 ++ autobahn/client/hornbeam_case_5_8.json | 454 ++ autobahn/client/hornbeam_case_5_9.html | 292 + autobahn/client/hornbeam_case_5_9.json | 122 + autobahn/client/hornbeam_case_6_10_1.html | 305 + autobahn/client/hornbeam_case_6_10_1.json | 183 + autobahn/client/hornbeam_case_6_10_2.html | 305 + autobahn/client/hornbeam_case_6_10_2.json | 183 + autobahn/client/hornbeam_case_6_10_3.html | 305 + autobahn/client/hornbeam_case_6_10_3.json | 183 + autobahn/client/hornbeam_case_6_11_1.html | 303 + autobahn/client/hornbeam_case_6_11_1.json | 184 + autobahn/client/hornbeam_case_6_11_2.html | 303 + autobahn/client/hornbeam_case_6_11_2.json | 184 + autobahn/client/hornbeam_case_6_11_3.html | 303 + autobahn/client/hornbeam_case_6_11_3.json | 184 + autobahn/client/hornbeam_case_6_11_4.html | 304 + autobahn/client/hornbeam_case_6_11_4.json | 185 + autobahn/client/hornbeam_case_6_11_5.html | 305 + autobahn/client/hornbeam_case_6_11_5.json | 183 + autobahn/client/hornbeam_case_6_12_1.html | 305 + autobahn/client/hornbeam_case_6_12_1.json | 183 + autobahn/client/hornbeam_case_6_12_2.html | 305 + autobahn/client/hornbeam_case_6_12_2.json | 183 + autobahn/client/hornbeam_case_6_12_3.html | 305 + autobahn/client/hornbeam_case_6_12_3.json | 183 + autobahn/client/hornbeam_case_6_12_4.html | 305 + autobahn/client/hornbeam_case_6_12_4.json | 183 + autobahn/client/hornbeam_case_6_12_5.html | 305 + autobahn/client/hornbeam_case_6_12_5.json | 183 + autobahn/client/hornbeam_case_6_12_6.html | 305 + autobahn/client/hornbeam_case_6_12_6.json | 183 + autobahn/client/hornbeam_case_6_12_7.html | 305 + autobahn/client/hornbeam_case_6_12_7.json | 183 + autobahn/client/hornbeam_case_6_12_8.html | 309 + autobahn/client/hornbeam_case_6_12_8.json | 183 + autobahn/client/hornbeam_case_6_13_1.html | 308 + autobahn/client/hornbeam_case_6_13_1.json | 183 + autobahn/client/hornbeam_case_6_13_2.html | 306 + autobahn/client/hornbeam_case_6_13_2.json | 183 + autobahn/client/hornbeam_case_6_13_3.html | 305 + autobahn/client/hornbeam_case_6_13_3.json | 183 + autobahn/client/hornbeam_case_6_13_4.html | 305 + autobahn/client/hornbeam_case_6_13_4.json | 183 + autobahn/client/hornbeam_case_6_13_5.html | 305 + autobahn/client/hornbeam_case_6_13_5.json | 183 + autobahn/client/hornbeam_case_6_14_1.html | 305 + autobahn/client/hornbeam_case_6_14_1.json | 183 + autobahn/client/hornbeam_case_6_14_10.html | 305 + autobahn/client/hornbeam_case_6_14_10.json | 183 + autobahn/client/hornbeam_case_6_14_2.html | 305 + autobahn/client/hornbeam_case_6_14_2.json | 183 + autobahn/client/hornbeam_case_6_14_3.html | 305 + autobahn/client/hornbeam_case_6_14_3.json | 183 + autobahn/client/hornbeam_case_6_14_4.html | 305 + autobahn/client/hornbeam_case_6_14_4.json | 183 + autobahn/client/hornbeam_case_6_14_5.html | 305 + autobahn/client/hornbeam_case_6_14_5.json | 183 + autobahn/client/hornbeam_case_6_14_6.html | 305 + autobahn/client/hornbeam_case_6_14_6.json | 183 + autobahn/client/hornbeam_case_6_14_7.html | 305 + autobahn/client/hornbeam_case_6_14_7.json | 183 + autobahn/client/hornbeam_case_6_14_8.html | 303 + autobahn/client/hornbeam_case_6_14_8.json | 175 + autobahn/client/hornbeam_case_6_14_9.html | 302 + autobahn/client/hornbeam_case_6_14_9.json | 174 + autobahn/client/hornbeam_case_6_15_1.html | 307 + autobahn/client/hornbeam_case_6_15_1.json | 183 + autobahn/client/hornbeam_case_6_16_1.html | 305 + autobahn/client/hornbeam_case_6_16_1.json | 183 + autobahn/client/hornbeam_case_6_16_2.html | 305 + autobahn/client/hornbeam_case_6_16_2.json | 183 + autobahn/client/hornbeam_case_6_16_3.html | 305 + autobahn/client/hornbeam_case_6_16_3.json | 183 + autobahn/client/hornbeam_case_6_17_1.html | 305 + autobahn/client/hornbeam_case_6_17_1.json | 183 + autobahn/client/hornbeam_case_6_17_2.html | 305 + autobahn/client/hornbeam_case_6_17_2.json | 183 + autobahn/client/hornbeam_case_6_17_3.html | 305 + autobahn/client/hornbeam_case_6_17_3.json | 183 + autobahn/client/hornbeam_case_6_17_4.html | 305 + autobahn/client/hornbeam_case_6_17_4.json | 183 + autobahn/client/hornbeam_case_6_17_5.html | 305 + autobahn/client/hornbeam_case_6_17_5.json | 183 + autobahn/client/hornbeam_case_6_18_1.html | 305 + autobahn/client/hornbeam_case_6_18_1.json | 183 + autobahn/client/hornbeam_case_6_18_2.html | 305 + autobahn/client/hornbeam_case_6_18_2.json | 183 + autobahn/client/hornbeam_case_6_18_3.html | 305 + autobahn/client/hornbeam_case_6_18_3.json | 183 + autobahn/client/hornbeam_case_6_18_4.html | 305 + autobahn/client/hornbeam_case_6_18_4.json | 183 + autobahn/client/hornbeam_case_6_18_5.html | 305 + autobahn/client/hornbeam_case_6_18_5.json | 183 + autobahn/client/hornbeam_case_6_19_1.html | 305 + autobahn/client/hornbeam_case_6_19_1.json | 183 + autobahn/client/hornbeam_case_6_19_2.html | 305 + autobahn/client/hornbeam_case_6_19_2.json | 183 + autobahn/client/hornbeam_case_6_19_3.html | 305 + autobahn/client/hornbeam_case_6_19_3.json | 183 + autobahn/client/hornbeam_case_6_19_4.html | 305 + autobahn/client/hornbeam_case_6_19_4.json | 183 + autobahn/client/hornbeam_case_6_19_5.html | 305 + autobahn/client/hornbeam_case_6_19_5.json | 183 + autobahn/client/hornbeam_case_6_1_1.html | 302 + autobahn/client/hornbeam_case_6_1_1.json | 185 + autobahn/client/hornbeam_case_6_1_2.html | 302 + autobahn/client/hornbeam_case_6_1_2.json | 209 + autobahn/client/hornbeam_case_6_1_3.html | 299 + autobahn/client/hornbeam_case_6_1_3.json | 186 + autobahn/client/hornbeam_case_6_20_1.html | 305 + autobahn/client/hornbeam_case_6_20_1.json | 183 + autobahn/client/hornbeam_case_6_20_2.html | 307 + autobahn/client/hornbeam_case_6_20_2.json | 191 + autobahn/client/hornbeam_case_6_20_3.html | 305 + autobahn/client/hornbeam_case_6_20_3.json | 183 + autobahn/client/hornbeam_case_6_20_4.html | 305 + autobahn/client/hornbeam_case_6_20_4.json | 183 + autobahn/client/hornbeam_case_6_20_5.html | 305 + autobahn/client/hornbeam_case_6_20_5.json | 183 + autobahn/client/hornbeam_case_6_20_6.html | 305 + autobahn/client/hornbeam_case_6_20_6.json | 183 + autobahn/client/hornbeam_case_6_20_7.html | 305 + autobahn/client/hornbeam_case_6_20_7.json | 183 + autobahn/client/hornbeam_case_6_21_1.html | 305 + autobahn/client/hornbeam_case_6_21_1.json | 183 + autobahn/client/hornbeam_case_6_21_2.html | 305 + autobahn/client/hornbeam_case_6_21_2.json | 183 + autobahn/client/hornbeam_case_6_21_3.html | 305 + autobahn/client/hornbeam_case_6_21_3.json | 183 + autobahn/client/hornbeam_case_6_21_4.html | 305 + autobahn/client/hornbeam_case_6_21_4.json | 183 + autobahn/client/hornbeam_case_6_21_5.html | 305 + autobahn/client/hornbeam_case_6_21_5.json | 183 + autobahn/client/hornbeam_case_6_21_6.html | 305 + autobahn/client/hornbeam_case_6_21_6.json | 183 + autobahn/client/hornbeam_case_6_21_7.html | 305 + autobahn/client/hornbeam_case_6_21_7.json | 183 + autobahn/client/hornbeam_case_6_21_8.html | 305 + autobahn/client/hornbeam_case_6_21_8.json | 183 + autobahn/client/hornbeam_case_6_22_1.html | 303 + autobahn/client/hornbeam_case_6_22_1.json | 184 + autobahn/client/hornbeam_case_6_22_10.html | 304 + autobahn/client/hornbeam_case_6_22_10.json | 185 + autobahn/client/hornbeam_case_6_22_11.html | 304 + autobahn/client/hornbeam_case_6_22_11.json | 185 + autobahn/client/hornbeam_case_6_22_12.html | 304 + autobahn/client/hornbeam_case_6_22_12.json | 185 + autobahn/client/hornbeam_case_6_22_13.html | 304 + autobahn/client/hornbeam_case_6_22_13.json | 185 + autobahn/client/hornbeam_case_6_22_14.html | 304 + autobahn/client/hornbeam_case_6_22_14.json | 185 + autobahn/client/hornbeam_case_6_22_15.html | 304 + autobahn/client/hornbeam_case_6_22_15.json | 185 + autobahn/client/hornbeam_case_6_22_16.html | 304 + autobahn/client/hornbeam_case_6_22_16.json | 185 + autobahn/client/hornbeam_case_6_22_17.html | 304 + autobahn/client/hornbeam_case_6_22_17.json | 185 + autobahn/client/hornbeam_case_6_22_18.html | 304 + autobahn/client/hornbeam_case_6_22_18.json | 185 + autobahn/client/hornbeam_case_6_22_19.html | 304 + autobahn/client/hornbeam_case_6_22_19.json | 185 + autobahn/client/hornbeam_case_6_22_2.html | 303 + autobahn/client/hornbeam_case_6_22_2.json | 184 + autobahn/client/hornbeam_case_6_22_20.html | 304 + autobahn/client/hornbeam_case_6_22_20.json | 185 + autobahn/client/hornbeam_case_6_22_21.html | 304 + autobahn/client/hornbeam_case_6_22_21.json | 185 + autobahn/client/hornbeam_case_6_22_22.html | 304 + autobahn/client/hornbeam_case_6_22_22.json | 185 + autobahn/client/hornbeam_case_6_22_23.html | 304 + autobahn/client/hornbeam_case_6_22_23.json | 185 + autobahn/client/hornbeam_case_6_22_24.html | 304 + autobahn/client/hornbeam_case_6_22_24.json | 185 + autobahn/client/hornbeam_case_6_22_25.html | 304 + autobahn/client/hornbeam_case_6_22_25.json | 185 + autobahn/client/hornbeam_case_6_22_26.html | 304 + autobahn/client/hornbeam_case_6_22_26.json | 185 + autobahn/client/hornbeam_case_6_22_27.html | 304 + autobahn/client/hornbeam_case_6_22_27.json | 185 + autobahn/client/hornbeam_case_6_22_28.html | 304 + autobahn/client/hornbeam_case_6_22_28.json | 185 + autobahn/client/hornbeam_case_6_22_29.html | 305 + autobahn/client/hornbeam_case_6_22_29.json | 192 + autobahn/client/hornbeam_case_6_22_3.html | 304 + autobahn/client/hornbeam_case_6_22_3.json | 185 + autobahn/client/hornbeam_case_6_22_30.html | 304 + autobahn/client/hornbeam_case_6_22_30.json | 185 + autobahn/client/hornbeam_case_6_22_31.html | 304 + autobahn/client/hornbeam_case_6_22_31.json | 185 + autobahn/client/hornbeam_case_6_22_32.html | 304 + autobahn/client/hornbeam_case_6_22_32.json | 185 + autobahn/client/hornbeam_case_6_22_33.html | 304 + autobahn/client/hornbeam_case_6_22_33.json | 185 + autobahn/client/hornbeam_case_6_22_34.html | 305 + autobahn/client/hornbeam_case_6_22_34.json | 192 + autobahn/client/hornbeam_case_6_22_4.html | 304 + autobahn/client/hornbeam_case_6_22_4.json | 185 + autobahn/client/hornbeam_case_6_22_5.html | 304 + autobahn/client/hornbeam_case_6_22_5.json | 185 + autobahn/client/hornbeam_case_6_22_6.html | 304 + autobahn/client/hornbeam_case_6_22_6.json | 185 + autobahn/client/hornbeam_case_6_22_7.html | 304 + autobahn/client/hornbeam_case_6_22_7.json | 185 + autobahn/client/hornbeam_case_6_22_8.html | 304 + autobahn/client/hornbeam_case_6_22_8.json | 185 + autobahn/client/hornbeam_case_6_22_9.html | 304 + autobahn/client/hornbeam_case_6_22_9.json | 185 + autobahn/client/hornbeam_case_6_23_1.html | 303 + autobahn/client/hornbeam_case_6_23_1.json | 184 + autobahn/client/hornbeam_case_6_23_2.html | 303 + autobahn/client/hornbeam_case_6_23_2.json | 184 + autobahn/client/hornbeam_case_6_23_3.html | 303 + autobahn/client/hornbeam_case_6_23_3.json | 184 + autobahn/client/hornbeam_case_6_23_4.html | 303 + autobahn/client/hornbeam_case_6_23_4.json | 184 + autobahn/client/hornbeam_case_6_23_5.html | 303 + autobahn/client/hornbeam_case_6_23_5.json | 184 + autobahn/client/hornbeam_case_6_23_6.html | 305 + autobahn/client/hornbeam_case_6_23_6.json | 192 + autobahn/client/hornbeam_case_6_23_7.html | 303 + autobahn/client/hornbeam_case_6_23_7.json | 184 + autobahn/client/hornbeam_case_6_2_1.html | 304 + autobahn/client/hornbeam_case_6_2_1.json | 185 + autobahn/client/hornbeam_case_6_2_2.html | 299 + autobahn/client/hornbeam_case_6_2_2.json | 164 + autobahn/client/hornbeam_case_6_2_3.html | 380 ++ autobahn/client/hornbeam_case_6_2_3.json | 772 +++ autobahn/client/hornbeam_case_6_2_4.html | 326 ++ autobahn/client/hornbeam_case_6_2_4.json | 376 ++ autobahn/client/hornbeam_case_6_3_1.html | 305 + autobahn/client/hornbeam_case_6_3_1.json | 183 + autobahn/client/hornbeam_case_6_3_2.html | 355 ++ autobahn/client/hornbeam_case_6_3_2.json | 577 ++ autobahn/client/hornbeam_case_6_4_1.html | 308 + autobahn/client/hornbeam_case_6_4_1.json | 188 + autobahn/client/hornbeam_case_6_4_2.html | 306 + autobahn/client/hornbeam_case_6_4_2.json | 188 + autobahn/client/hornbeam_case_6_4_3.html | 309 + autobahn/client/hornbeam_case_6_4_3.json | 211 + autobahn/client/hornbeam_case_6_4_4.html | 309 + autobahn/client/hornbeam_case_6_4_4.json | 211 + autobahn/client/hornbeam_case_6_5_1.html | 304 + autobahn/client/hornbeam_case_6_5_1.json | 185 + autobahn/client/hornbeam_case_6_5_2.html | 304 + autobahn/client/hornbeam_case_6_5_2.json | 185 + autobahn/client/hornbeam_case_6_5_3.html | 304 + autobahn/client/hornbeam_case_6_5_3.json | 185 + autobahn/client/hornbeam_case_6_5_4.html | 304 + autobahn/client/hornbeam_case_6_5_4.json | 185 + autobahn/client/hornbeam_case_6_5_5.html | 304 + autobahn/client/hornbeam_case_6_5_5.json | 185 + autobahn/client/hornbeam_case_6_6_1.html | 305 + autobahn/client/hornbeam_case_6_6_1.json | 183 + autobahn/client/hornbeam_case_6_6_10.html | 305 + autobahn/client/hornbeam_case_6_6_10.json | 183 + autobahn/client/hornbeam_case_6_6_11.html | 304 + autobahn/client/hornbeam_case_6_6_11.json | 185 + autobahn/client/hornbeam_case_6_6_2.html | 303 + autobahn/client/hornbeam_case_6_6_2.json | 190 + autobahn/client/hornbeam_case_6_6_3.html | 305 + autobahn/client/hornbeam_case_6_6_3.json | 183 + autobahn/client/hornbeam_case_6_6_4.html | 305 + autobahn/client/hornbeam_case_6_6_4.json | 183 + autobahn/client/hornbeam_case_6_6_5.html | 304 + autobahn/client/hornbeam_case_6_6_5.json | 185 + autobahn/client/hornbeam_case_6_6_6.html | 305 + autobahn/client/hornbeam_case_6_6_6.json | 183 + autobahn/client/hornbeam_case_6_6_7.html | 304 + autobahn/client/hornbeam_case_6_6_7.json | 185 + autobahn/client/hornbeam_case_6_6_8.html | 305 + autobahn/client/hornbeam_case_6_6_8.json | 183 + autobahn/client/hornbeam_case_6_6_9.html | 304 + autobahn/client/hornbeam_case_6_6_9.json | 185 + autobahn/client/hornbeam_case_6_7_1.html | 304 + autobahn/client/hornbeam_case_6_7_1.json | 185 + autobahn/client/hornbeam_case_6_7_2.html | 303 + autobahn/client/hornbeam_case_6_7_2.json | 184 + autobahn/client/hornbeam_case_6_7_3.html | 303 + autobahn/client/hornbeam_case_6_7_3.json | 184 + autobahn/client/hornbeam_case_6_7_4.html | 304 + autobahn/client/hornbeam_case_6_7_4.json | 185 + autobahn/client/hornbeam_case_6_8_1.html | 305 + autobahn/client/hornbeam_case_6_8_1.json | 183 + autobahn/client/hornbeam_case_6_8_2.html | 305 + autobahn/client/hornbeam_case_6_8_2.json | 183 + autobahn/client/hornbeam_case_6_9_1.html | 304 + autobahn/client/hornbeam_case_6_9_1.json | 185 + autobahn/client/hornbeam_case_6_9_2.html | 303 + autobahn/client/hornbeam_case_6_9_2.json | 184 + autobahn/client/hornbeam_case_6_9_3.html | 303 + autobahn/client/hornbeam_case_6_9_3.json | 184 + autobahn/client/hornbeam_case_6_9_4.html | 304 + autobahn/client/hornbeam_case_6_9_4.json | 185 + autobahn/client/hornbeam_case_7_13_1.html | 294 + autobahn/client/hornbeam_case_7_13_1.json | 130 + autobahn/client/hornbeam_case_7_13_2.html | 292 + autobahn/client/hornbeam_case_7_13_2.json | 122 + autobahn/client/hornbeam_case_7_1_1.html | 304 + autobahn/client/hornbeam_case_7_1_1.json | 185 + autobahn/client/hornbeam_case_7_1_2.html | 295 + autobahn/client/hornbeam_case_7_1_2.json | 143 + autobahn/client/hornbeam_case_7_1_3.html | 296 + autobahn/client/hornbeam_case_7_1_3.json | 144 + autobahn/client/hornbeam_case_7_1_4.html | 299 + autobahn/client/hornbeam_case_7_1_4.json | 152 + autobahn/client/hornbeam_case_7_1_5.html | 306 + autobahn/client/hornbeam_case_7_1_5.json | 194 + autobahn/client/hornbeam_case_7_1_6.html | 319 ++ autobahn/client/hornbeam_case_7_1_6.json | 224 + autobahn/client/hornbeam_case_7_3_1.html | 290 + autobahn/client/hornbeam_case_7_3_1.json | 120 + autobahn/client/hornbeam_case_7_3_2.html | 289 + autobahn/client/hornbeam_case_7_3_2.json | 106 + autobahn/client/hornbeam_case_7_3_3.html | 292 + autobahn/client/hornbeam_case_7_3_3.json | 120 + autobahn/client/hornbeam_case_7_3_4.html | 292 + autobahn/client/hornbeam_case_7_3_4.json | 120 + autobahn/client/hornbeam_case_7_3_5.html | 296 + autobahn/client/hornbeam_case_7_3_5.json | 120 + autobahn/client/hornbeam_case_7_3_6.html | 292 + autobahn/client/hornbeam_case_7_3_6.json | 106 + autobahn/client/hornbeam_case_7_5_1.html | 292 + autobahn/client/hornbeam_case_7_5_1.json | 121 + autobahn/client/hornbeam_case_7_7_1.html | 292 + autobahn/client/hornbeam_case_7_7_1.json | 121 + autobahn/client/hornbeam_case_7_7_10.html | 292 + autobahn/client/hornbeam_case_7_7_10.json | 121 + autobahn/client/hornbeam_case_7_7_11.html | 294 + autobahn/client/hornbeam_case_7_7_11.json | 129 + autobahn/client/hornbeam_case_7_7_12.html | 292 + autobahn/client/hornbeam_case_7_7_12.json | 121 + autobahn/client/hornbeam_case_7_7_13.html | 292 + autobahn/client/hornbeam_case_7_7_13.json | 121 + autobahn/client/hornbeam_case_7_7_2.html | 292 + autobahn/client/hornbeam_case_7_7_2.json | 121 + autobahn/client/hornbeam_case_7_7_3.html | 292 + autobahn/client/hornbeam_case_7_7_3.json | 121 + autobahn/client/hornbeam_case_7_7_4.html | 292 + autobahn/client/hornbeam_case_7_7_4.json | 121 + autobahn/client/hornbeam_case_7_7_5.html | 292 + autobahn/client/hornbeam_case_7_7_5.json | 121 + autobahn/client/hornbeam_case_7_7_6.html | 294 + autobahn/client/hornbeam_case_7_7_6.json | 129 + autobahn/client/hornbeam_case_7_7_7.html | 292 + autobahn/client/hornbeam_case_7_7_7.json | 121 + autobahn/client/hornbeam_case_7_7_8.html | 292 + autobahn/client/hornbeam_case_7_7_8.json | 121 + autobahn/client/hornbeam_case_7_7_9.html | 292 + autobahn/client/hornbeam_case_7_7_9.json | 121 + autobahn/client/hornbeam_case_7_9_1.html | 292 + autobahn/client/hornbeam_case_7_9_1.json | 120 + autobahn/client/hornbeam_case_7_9_2.html | 292 + autobahn/client/hornbeam_case_7_9_2.json | 120 + autobahn/client/hornbeam_case_7_9_3.html | 292 + autobahn/client/hornbeam_case_7_9_3.json | 120 + autobahn/client/hornbeam_case_7_9_4.html | 292 + autobahn/client/hornbeam_case_7_9_4.json | 120 + autobahn/client/hornbeam_case_7_9_5.html | 292 + autobahn/client/hornbeam_case_7_9_5.json | 120 + autobahn/client/hornbeam_case_7_9_6.html | 292 + autobahn/client/hornbeam_case_7_9_6.json | 120 + autobahn/client/hornbeam_case_7_9_7.html | 292 + autobahn/client/hornbeam_case_7_9_7.json | 120 + autobahn/client/hornbeam_case_7_9_8.html | 292 + autobahn/client/hornbeam_case_7_9_8.json | 120 + autobahn/client/hornbeam_case_7_9_9.html | 294 + autobahn/client/hornbeam_case_7_9_9.json | 128 + autobahn/client/hornbeam_case_9_1_1.html | 299 + autobahn/client/hornbeam_case_9_1_1.json | 125 + autobahn/client/hornbeam_case_9_1_2.html | 301 + autobahn/client/hornbeam_case_9_1_2.json | 133 + autobahn/client/hornbeam_case_9_1_3.html | 301 + autobahn/client/hornbeam_case_9_1_3.json | 127 + autobahn/client/hornbeam_case_9_1_4.html | 300 + autobahn/client/hornbeam_case_9_1_4.json | 126 + autobahn/client/hornbeam_case_9_1_5.html | 300 + autobahn/client/hornbeam_case_9_1_5.json | 126 + autobahn/client/hornbeam_case_9_1_6.html | 298 + autobahn/client/hornbeam_case_9_1_6.json | 124 + autobahn/client/hornbeam_case_9_2_1.html | 289 + autobahn/client/hornbeam_case_9_2_1.json | 78 + autobahn/client/hornbeam_case_9_2_2.html | 290 + autobahn/client/hornbeam_case_9_2_2.json | 79 + autobahn/client/hornbeam_case_9_2_3.html | 290 + autobahn/client/hornbeam_case_9_2_3.json | 79 + autobahn/client/hornbeam_case_9_2_4.html | 288 + autobahn/client/hornbeam_case_9_2_4.json | 79 + autobahn/client/index.html | 5923 ++++++++++++++++++++ autobahn/client/index.json | 1796 ++++++ autobahn/server.json | 7 + hornbeam-autobahn-client/Cargo.toml | 12 + hornbeam-autobahn-client/src/main.rs | 115 + hornbeam/src/frame/frame_ops.rs | 44 + hornbeam/src/frame/mod.rs | 30 + hornbeam/src/frame/read.rs | 98 +- hornbeam/src/frame/write.rs | 8 + hornbeam/src/handshake_client.rs | 65 +- hornbeam/src/lib.rs | 15 +- hornbeam/src/splittable.rs | 10 + hornbeam/src/stream.rs | 303 +- 528 files changed, 135812 insertions(+), 48 deletions(-) create mode 100644 autobahn/client/hornbeam_case_1_1_1.html create mode 100644 autobahn/client/hornbeam_case_1_1_1.json create mode 100644 autobahn/client/hornbeam_case_1_1_2.html create mode 100644 autobahn/client/hornbeam_case_1_1_2.json create mode 100644 autobahn/client/hornbeam_case_1_1_3.html create mode 100644 autobahn/client/hornbeam_case_1_1_3.json create mode 100644 autobahn/client/hornbeam_case_1_1_4.html create mode 100644 autobahn/client/hornbeam_case_1_1_4.json create mode 100644 autobahn/client/hornbeam_case_1_1_5.html create mode 100644 autobahn/client/hornbeam_case_1_1_5.json create mode 100644 autobahn/client/hornbeam_case_1_1_6.html create mode 100644 autobahn/client/hornbeam_case_1_1_6.json create mode 100644 autobahn/client/hornbeam_case_1_1_7.html create mode 100644 autobahn/client/hornbeam_case_1_1_7.json create mode 100644 autobahn/client/hornbeam_case_1_1_8.html create mode 100644 autobahn/client/hornbeam_case_1_1_8.json create mode 100644 autobahn/client/hornbeam_case_1_2_1.html create mode 100644 autobahn/client/hornbeam_case_1_2_1.json create mode 100644 autobahn/client/hornbeam_case_1_2_2.html create mode 100644 autobahn/client/hornbeam_case_1_2_2.json create mode 100644 autobahn/client/hornbeam_case_1_2_3.html create mode 100644 autobahn/client/hornbeam_case_1_2_3.json create mode 100644 autobahn/client/hornbeam_case_1_2_4.html create mode 100644 autobahn/client/hornbeam_case_1_2_4.json create mode 100644 autobahn/client/hornbeam_case_1_2_5.html create mode 100644 autobahn/client/hornbeam_case_1_2_5.json create mode 100644 autobahn/client/hornbeam_case_1_2_6.html create mode 100644 autobahn/client/hornbeam_case_1_2_6.json create mode 100644 autobahn/client/hornbeam_case_1_2_7.html create mode 100644 autobahn/client/hornbeam_case_1_2_7.json create mode 100644 autobahn/client/hornbeam_case_1_2_8.html create mode 100644 autobahn/client/hornbeam_case_1_2_8.json create mode 100644 autobahn/client/hornbeam_case_2_1.html create mode 100644 autobahn/client/hornbeam_case_2_1.json create mode 100644 autobahn/client/hornbeam_case_2_10.html create mode 100644 autobahn/client/hornbeam_case_2_10.json create mode 100644 autobahn/client/hornbeam_case_2_11.html create mode 100644 autobahn/client/hornbeam_case_2_11.json create mode 100644 autobahn/client/hornbeam_case_2_2.html create mode 100644 autobahn/client/hornbeam_case_2_2.json create mode 100644 autobahn/client/hornbeam_case_2_3.html create mode 100644 autobahn/client/hornbeam_case_2_3.json create mode 100644 autobahn/client/hornbeam_case_2_4.html create mode 100644 autobahn/client/hornbeam_case_2_4.json create mode 100644 autobahn/client/hornbeam_case_2_5.html create mode 100644 autobahn/client/hornbeam_case_2_5.json create mode 100644 autobahn/client/hornbeam_case_2_6.html create mode 100644 autobahn/client/hornbeam_case_2_6.json create mode 100644 autobahn/client/hornbeam_case_2_7.html create mode 100644 autobahn/client/hornbeam_case_2_7.json create mode 100644 autobahn/client/hornbeam_case_2_8.html create mode 100644 autobahn/client/hornbeam_case_2_8.json create mode 100644 autobahn/client/hornbeam_case_2_9.html create mode 100644 autobahn/client/hornbeam_case_2_9.json create mode 100644 autobahn/client/hornbeam_case_3_1.html create mode 100644 autobahn/client/hornbeam_case_3_1.json create mode 100644 autobahn/client/hornbeam_case_3_2.html create mode 100644 autobahn/client/hornbeam_case_3_2.json create mode 100644 autobahn/client/hornbeam_case_3_3.html create mode 100644 autobahn/client/hornbeam_case_3_3.json create mode 100644 autobahn/client/hornbeam_case_3_4.html create mode 100644 autobahn/client/hornbeam_case_3_4.json create mode 100644 autobahn/client/hornbeam_case_3_5.html create mode 100644 autobahn/client/hornbeam_case_3_5.json create mode 100644 autobahn/client/hornbeam_case_3_6.html create mode 100644 autobahn/client/hornbeam_case_3_6.json create mode 100644 autobahn/client/hornbeam_case_3_7.html create mode 100644 autobahn/client/hornbeam_case_3_7.json create mode 100644 autobahn/client/hornbeam_case_4_1_1.html create mode 100644 autobahn/client/hornbeam_case_4_1_1.json create mode 100644 autobahn/client/hornbeam_case_4_1_2.html create mode 100644 autobahn/client/hornbeam_case_4_1_2.json create mode 100644 autobahn/client/hornbeam_case_4_1_3.html create mode 100644 autobahn/client/hornbeam_case_4_1_3.json create mode 100644 autobahn/client/hornbeam_case_4_1_4.html create mode 100644 autobahn/client/hornbeam_case_4_1_4.json create mode 100644 autobahn/client/hornbeam_case_4_1_5.html create mode 100644 autobahn/client/hornbeam_case_4_1_5.json create mode 100644 autobahn/client/hornbeam_case_4_2_1.html create mode 100644 autobahn/client/hornbeam_case_4_2_1.json create mode 100644 autobahn/client/hornbeam_case_4_2_2.html create mode 100644 autobahn/client/hornbeam_case_4_2_2.json create mode 100644 autobahn/client/hornbeam_case_4_2_3.html create mode 100644 autobahn/client/hornbeam_case_4_2_3.json create mode 100644 autobahn/client/hornbeam_case_4_2_4.html create mode 100644 autobahn/client/hornbeam_case_4_2_4.json create mode 100644 autobahn/client/hornbeam_case_4_2_5.html create mode 100644 autobahn/client/hornbeam_case_4_2_5.json create mode 100644 autobahn/client/hornbeam_case_5_1.html create mode 100644 autobahn/client/hornbeam_case_5_1.json create mode 100644 autobahn/client/hornbeam_case_5_10.html create mode 100644 autobahn/client/hornbeam_case_5_10.json create mode 100644 autobahn/client/hornbeam_case_5_11.html create mode 100644 autobahn/client/hornbeam_case_5_11.json create mode 100644 autobahn/client/hornbeam_case_5_12.html create mode 100644 autobahn/client/hornbeam_case_5_12.json create mode 100644 autobahn/client/hornbeam_case_5_13.html create mode 100644 autobahn/client/hornbeam_case_5_13.json create mode 100644 autobahn/client/hornbeam_case_5_14.html create mode 100644 autobahn/client/hornbeam_case_5_14.json create mode 100644 autobahn/client/hornbeam_case_5_15.html create mode 100644 autobahn/client/hornbeam_case_5_15.json create mode 100644 autobahn/client/hornbeam_case_5_16.html create mode 100644 autobahn/client/hornbeam_case_5_16.json create mode 100644 autobahn/client/hornbeam_case_5_17.html create mode 100644 autobahn/client/hornbeam_case_5_17.json create mode 100644 autobahn/client/hornbeam_case_5_18.html create mode 100644 autobahn/client/hornbeam_case_5_18.json create mode 100644 autobahn/client/hornbeam_case_5_19.html create mode 100644 autobahn/client/hornbeam_case_5_19.json create mode 100644 autobahn/client/hornbeam_case_5_2.html create mode 100644 autobahn/client/hornbeam_case_5_2.json create mode 100644 autobahn/client/hornbeam_case_5_20.html create mode 100644 autobahn/client/hornbeam_case_5_20.json create mode 100644 autobahn/client/hornbeam_case_5_3.html create mode 100644 autobahn/client/hornbeam_case_5_3.json create mode 100644 autobahn/client/hornbeam_case_5_4.html create mode 100644 autobahn/client/hornbeam_case_5_4.json create mode 100644 autobahn/client/hornbeam_case_5_5.html create mode 100644 autobahn/client/hornbeam_case_5_5.json create mode 100644 autobahn/client/hornbeam_case_5_6.html create mode 100644 autobahn/client/hornbeam_case_5_6.json create mode 100644 autobahn/client/hornbeam_case_5_7.html create mode 100644 autobahn/client/hornbeam_case_5_7.json create mode 100644 autobahn/client/hornbeam_case_5_8.html create mode 100644 autobahn/client/hornbeam_case_5_8.json create mode 100644 autobahn/client/hornbeam_case_5_9.html create mode 100644 autobahn/client/hornbeam_case_5_9.json create mode 100644 autobahn/client/hornbeam_case_6_10_1.html create mode 100644 autobahn/client/hornbeam_case_6_10_1.json create mode 100644 autobahn/client/hornbeam_case_6_10_2.html create mode 100644 autobahn/client/hornbeam_case_6_10_2.json create mode 100644 autobahn/client/hornbeam_case_6_10_3.html create mode 100644 autobahn/client/hornbeam_case_6_10_3.json create mode 100644 autobahn/client/hornbeam_case_6_11_1.html create mode 100644 autobahn/client/hornbeam_case_6_11_1.json create mode 100644 autobahn/client/hornbeam_case_6_11_2.html create mode 100644 autobahn/client/hornbeam_case_6_11_2.json create mode 100644 autobahn/client/hornbeam_case_6_11_3.html create mode 100644 autobahn/client/hornbeam_case_6_11_3.json create mode 100644 autobahn/client/hornbeam_case_6_11_4.html create mode 100644 autobahn/client/hornbeam_case_6_11_4.json create mode 100644 autobahn/client/hornbeam_case_6_11_5.html create mode 100644 autobahn/client/hornbeam_case_6_11_5.json create mode 100644 autobahn/client/hornbeam_case_6_12_1.html create mode 100644 autobahn/client/hornbeam_case_6_12_1.json create mode 100644 autobahn/client/hornbeam_case_6_12_2.html create mode 100644 autobahn/client/hornbeam_case_6_12_2.json create mode 100644 autobahn/client/hornbeam_case_6_12_3.html create mode 100644 autobahn/client/hornbeam_case_6_12_3.json create mode 100644 autobahn/client/hornbeam_case_6_12_4.html create mode 100644 autobahn/client/hornbeam_case_6_12_4.json create mode 100644 autobahn/client/hornbeam_case_6_12_5.html create mode 100644 autobahn/client/hornbeam_case_6_12_5.json create mode 100644 autobahn/client/hornbeam_case_6_12_6.html create mode 100644 autobahn/client/hornbeam_case_6_12_6.json create mode 100644 autobahn/client/hornbeam_case_6_12_7.html create mode 100644 autobahn/client/hornbeam_case_6_12_7.json create mode 100644 autobahn/client/hornbeam_case_6_12_8.html create mode 100644 autobahn/client/hornbeam_case_6_12_8.json create mode 100644 autobahn/client/hornbeam_case_6_13_1.html create mode 100644 autobahn/client/hornbeam_case_6_13_1.json create mode 100644 autobahn/client/hornbeam_case_6_13_2.html create mode 100644 autobahn/client/hornbeam_case_6_13_2.json create mode 100644 autobahn/client/hornbeam_case_6_13_3.html create mode 100644 autobahn/client/hornbeam_case_6_13_3.json create mode 100644 autobahn/client/hornbeam_case_6_13_4.html create mode 100644 autobahn/client/hornbeam_case_6_13_4.json create mode 100644 autobahn/client/hornbeam_case_6_13_5.html create mode 100644 autobahn/client/hornbeam_case_6_13_5.json create mode 100644 autobahn/client/hornbeam_case_6_14_1.html create mode 100644 autobahn/client/hornbeam_case_6_14_1.json create mode 100644 autobahn/client/hornbeam_case_6_14_10.html create mode 100644 autobahn/client/hornbeam_case_6_14_10.json create mode 100644 autobahn/client/hornbeam_case_6_14_2.html create mode 100644 autobahn/client/hornbeam_case_6_14_2.json create mode 100644 autobahn/client/hornbeam_case_6_14_3.html create mode 100644 autobahn/client/hornbeam_case_6_14_3.json create mode 100644 autobahn/client/hornbeam_case_6_14_4.html create mode 100644 autobahn/client/hornbeam_case_6_14_4.json create mode 100644 autobahn/client/hornbeam_case_6_14_5.html create mode 100644 autobahn/client/hornbeam_case_6_14_5.json create mode 100644 autobahn/client/hornbeam_case_6_14_6.html create mode 100644 autobahn/client/hornbeam_case_6_14_6.json create mode 100644 autobahn/client/hornbeam_case_6_14_7.html create mode 100644 autobahn/client/hornbeam_case_6_14_7.json create mode 100644 autobahn/client/hornbeam_case_6_14_8.html create mode 100644 autobahn/client/hornbeam_case_6_14_8.json create mode 100644 autobahn/client/hornbeam_case_6_14_9.html create mode 100644 autobahn/client/hornbeam_case_6_14_9.json create mode 100644 autobahn/client/hornbeam_case_6_15_1.html create mode 100644 autobahn/client/hornbeam_case_6_15_1.json create mode 100644 autobahn/client/hornbeam_case_6_16_1.html create mode 100644 autobahn/client/hornbeam_case_6_16_1.json create mode 100644 autobahn/client/hornbeam_case_6_16_2.html create mode 100644 autobahn/client/hornbeam_case_6_16_2.json create mode 100644 autobahn/client/hornbeam_case_6_16_3.html create mode 100644 autobahn/client/hornbeam_case_6_16_3.json create mode 100644 autobahn/client/hornbeam_case_6_17_1.html create mode 100644 autobahn/client/hornbeam_case_6_17_1.json create mode 100644 autobahn/client/hornbeam_case_6_17_2.html create mode 100644 autobahn/client/hornbeam_case_6_17_2.json create mode 100644 autobahn/client/hornbeam_case_6_17_3.html create mode 100644 autobahn/client/hornbeam_case_6_17_3.json create mode 100644 autobahn/client/hornbeam_case_6_17_4.html create mode 100644 autobahn/client/hornbeam_case_6_17_4.json create mode 100644 autobahn/client/hornbeam_case_6_17_5.html create mode 100644 autobahn/client/hornbeam_case_6_17_5.json create mode 100644 autobahn/client/hornbeam_case_6_18_1.html create mode 100644 autobahn/client/hornbeam_case_6_18_1.json create mode 100644 autobahn/client/hornbeam_case_6_18_2.html create mode 100644 autobahn/client/hornbeam_case_6_18_2.json create mode 100644 autobahn/client/hornbeam_case_6_18_3.html create mode 100644 autobahn/client/hornbeam_case_6_18_3.json create mode 100644 autobahn/client/hornbeam_case_6_18_4.html create mode 100644 autobahn/client/hornbeam_case_6_18_4.json create mode 100644 autobahn/client/hornbeam_case_6_18_5.html create mode 100644 autobahn/client/hornbeam_case_6_18_5.json create mode 100644 autobahn/client/hornbeam_case_6_19_1.html create mode 100644 autobahn/client/hornbeam_case_6_19_1.json create mode 100644 autobahn/client/hornbeam_case_6_19_2.html create mode 100644 autobahn/client/hornbeam_case_6_19_2.json create mode 100644 autobahn/client/hornbeam_case_6_19_3.html create mode 100644 autobahn/client/hornbeam_case_6_19_3.json create mode 100644 autobahn/client/hornbeam_case_6_19_4.html create mode 100644 autobahn/client/hornbeam_case_6_19_4.json create mode 100644 autobahn/client/hornbeam_case_6_19_5.html create mode 100644 autobahn/client/hornbeam_case_6_19_5.json create mode 100644 autobahn/client/hornbeam_case_6_1_1.html create mode 100644 autobahn/client/hornbeam_case_6_1_1.json create mode 100644 autobahn/client/hornbeam_case_6_1_2.html create mode 100644 autobahn/client/hornbeam_case_6_1_2.json create mode 100644 autobahn/client/hornbeam_case_6_1_3.html create mode 100644 autobahn/client/hornbeam_case_6_1_3.json create mode 100644 autobahn/client/hornbeam_case_6_20_1.html create mode 100644 autobahn/client/hornbeam_case_6_20_1.json create mode 100644 autobahn/client/hornbeam_case_6_20_2.html create mode 100644 autobahn/client/hornbeam_case_6_20_2.json create mode 100644 autobahn/client/hornbeam_case_6_20_3.html create mode 100644 autobahn/client/hornbeam_case_6_20_3.json create mode 100644 autobahn/client/hornbeam_case_6_20_4.html create mode 100644 autobahn/client/hornbeam_case_6_20_4.json create mode 100644 autobahn/client/hornbeam_case_6_20_5.html create mode 100644 autobahn/client/hornbeam_case_6_20_5.json create mode 100644 autobahn/client/hornbeam_case_6_20_6.html create mode 100644 autobahn/client/hornbeam_case_6_20_6.json create mode 100644 autobahn/client/hornbeam_case_6_20_7.html create mode 100644 autobahn/client/hornbeam_case_6_20_7.json create mode 100644 autobahn/client/hornbeam_case_6_21_1.html create mode 100644 autobahn/client/hornbeam_case_6_21_1.json create mode 100644 autobahn/client/hornbeam_case_6_21_2.html create mode 100644 autobahn/client/hornbeam_case_6_21_2.json create mode 100644 autobahn/client/hornbeam_case_6_21_3.html create mode 100644 autobahn/client/hornbeam_case_6_21_3.json create mode 100644 autobahn/client/hornbeam_case_6_21_4.html create mode 100644 autobahn/client/hornbeam_case_6_21_4.json create mode 100644 autobahn/client/hornbeam_case_6_21_5.html create mode 100644 autobahn/client/hornbeam_case_6_21_5.json create mode 100644 autobahn/client/hornbeam_case_6_21_6.html create mode 100644 autobahn/client/hornbeam_case_6_21_6.json create mode 100644 autobahn/client/hornbeam_case_6_21_7.html create mode 100644 autobahn/client/hornbeam_case_6_21_7.json create mode 100644 autobahn/client/hornbeam_case_6_21_8.html create mode 100644 autobahn/client/hornbeam_case_6_21_8.json create mode 100644 autobahn/client/hornbeam_case_6_22_1.html create mode 100644 autobahn/client/hornbeam_case_6_22_1.json create mode 100644 autobahn/client/hornbeam_case_6_22_10.html create mode 100644 autobahn/client/hornbeam_case_6_22_10.json create mode 100644 autobahn/client/hornbeam_case_6_22_11.html create mode 100644 autobahn/client/hornbeam_case_6_22_11.json create mode 100644 autobahn/client/hornbeam_case_6_22_12.html create mode 100644 autobahn/client/hornbeam_case_6_22_12.json create mode 100644 autobahn/client/hornbeam_case_6_22_13.html create mode 100644 autobahn/client/hornbeam_case_6_22_13.json create mode 100644 autobahn/client/hornbeam_case_6_22_14.html create mode 100644 autobahn/client/hornbeam_case_6_22_14.json create mode 100644 autobahn/client/hornbeam_case_6_22_15.html create mode 100644 autobahn/client/hornbeam_case_6_22_15.json create mode 100644 autobahn/client/hornbeam_case_6_22_16.html create mode 100644 autobahn/client/hornbeam_case_6_22_16.json create mode 100644 autobahn/client/hornbeam_case_6_22_17.html create mode 100644 autobahn/client/hornbeam_case_6_22_17.json create mode 100644 autobahn/client/hornbeam_case_6_22_18.html create mode 100644 autobahn/client/hornbeam_case_6_22_18.json create mode 100644 autobahn/client/hornbeam_case_6_22_19.html create mode 100644 autobahn/client/hornbeam_case_6_22_19.json create mode 100644 autobahn/client/hornbeam_case_6_22_2.html create mode 100644 autobahn/client/hornbeam_case_6_22_2.json create mode 100644 autobahn/client/hornbeam_case_6_22_20.html create mode 100644 autobahn/client/hornbeam_case_6_22_20.json create mode 100644 autobahn/client/hornbeam_case_6_22_21.html create mode 100644 autobahn/client/hornbeam_case_6_22_21.json create mode 100644 autobahn/client/hornbeam_case_6_22_22.html create mode 100644 autobahn/client/hornbeam_case_6_22_22.json create mode 100644 autobahn/client/hornbeam_case_6_22_23.html create mode 100644 autobahn/client/hornbeam_case_6_22_23.json create mode 100644 autobahn/client/hornbeam_case_6_22_24.html create mode 100644 autobahn/client/hornbeam_case_6_22_24.json create mode 100644 autobahn/client/hornbeam_case_6_22_25.html create mode 100644 autobahn/client/hornbeam_case_6_22_25.json create mode 100644 autobahn/client/hornbeam_case_6_22_26.html create mode 100644 autobahn/client/hornbeam_case_6_22_26.json create mode 100644 autobahn/client/hornbeam_case_6_22_27.html create mode 100644 autobahn/client/hornbeam_case_6_22_27.json create mode 100644 autobahn/client/hornbeam_case_6_22_28.html create mode 100644 autobahn/client/hornbeam_case_6_22_28.json create mode 100644 autobahn/client/hornbeam_case_6_22_29.html create mode 100644 autobahn/client/hornbeam_case_6_22_29.json create mode 100644 autobahn/client/hornbeam_case_6_22_3.html create mode 100644 autobahn/client/hornbeam_case_6_22_3.json create mode 100644 autobahn/client/hornbeam_case_6_22_30.html create mode 100644 autobahn/client/hornbeam_case_6_22_30.json create mode 100644 autobahn/client/hornbeam_case_6_22_31.html create mode 100644 autobahn/client/hornbeam_case_6_22_31.json create mode 100644 autobahn/client/hornbeam_case_6_22_32.html create mode 100644 autobahn/client/hornbeam_case_6_22_32.json create mode 100644 autobahn/client/hornbeam_case_6_22_33.html create mode 100644 autobahn/client/hornbeam_case_6_22_33.json create mode 100644 autobahn/client/hornbeam_case_6_22_34.html create mode 100644 autobahn/client/hornbeam_case_6_22_34.json create mode 100644 autobahn/client/hornbeam_case_6_22_4.html create mode 100644 autobahn/client/hornbeam_case_6_22_4.json create mode 100644 autobahn/client/hornbeam_case_6_22_5.html create mode 100644 autobahn/client/hornbeam_case_6_22_5.json create mode 100644 autobahn/client/hornbeam_case_6_22_6.html create mode 100644 autobahn/client/hornbeam_case_6_22_6.json create mode 100644 autobahn/client/hornbeam_case_6_22_7.html create mode 100644 autobahn/client/hornbeam_case_6_22_7.json create mode 100644 autobahn/client/hornbeam_case_6_22_8.html create mode 100644 autobahn/client/hornbeam_case_6_22_8.json create mode 100644 autobahn/client/hornbeam_case_6_22_9.html create mode 100644 autobahn/client/hornbeam_case_6_22_9.json create mode 100644 autobahn/client/hornbeam_case_6_23_1.html create mode 100644 autobahn/client/hornbeam_case_6_23_1.json create mode 100644 autobahn/client/hornbeam_case_6_23_2.html create mode 100644 autobahn/client/hornbeam_case_6_23_2.json create mode 100644 autobahn/client/hornbeam_case_6_23_3.html create mode 100644 autobahn/client/hornbeam_case_6_23_3.json create mode 100644 autobahn/client/hornbeam_case_6_23_4.html create mode 100644 autobahn/client/hornbeam_case_6_23_4.json create mode 100644 autobahn/client/hornbeam_case_6_23_5.html create mode 100644 autobahn/client/hornbeam_case_6_23_5.json create mode 100644 autobahn/client/hornbeam_case_6_23_6.html create mode 100644 autobahn/client/hornbeam_case_6_23_6.json create mode 100644 autobahn/client/hornbeam_case_6_23_7.html create mode 100644 autobahn/client/hornbeam_case_6_23_7.json create mode 100644 autobahn/client/hornbeam_case_6_2_1.html create mode 100644 autobahn/client/hornbeam_case_6_2_1.json create mode 100644 autobahn/client/hornbeam_case_6_2_2.html create mode 100644 autobahn/client/hornbeam_case_6_2_2.json create mode 100644 autobahn/client/hornbeam_case_6_2_3.html create mode 100644 autobahn/client/hornbeam_case_6_2_3.json create mode 100644 autobahn/client/hornbeam_case_6_2_4.html create mode 100644 autobahn/client/hornbeam_case_6_2_4.json create mode 100644 autobahn/client/hornbeam_case_6_3_1.html create mode 100644 autobahn/client/hornbeam_case_6_3_1.json create mode 100644 autobahn/client/hornbeam_case_6_3_2.html create mode 100644 autobahn/client/hornbeam_case_6_3_2.json create mode 100644 autobahn/client/hornbeam_case_6_4_1.html create mode 100644 autobahn/client/hornbeam_case_6_4_1.json create mode 100644 autobahn/client/hornbeam_case_6_4_2.html create mode 100644 autobahn/client/hornbeam_case_6_4_2.json create mode 100644 autobahn/client/hornbeam_case_6_4_3.html create mode 100644 autobahn/client/hornbeam_case_6_4_3.json create mode 100644 autobahn/client/hornbeam_case_6_4_4.html create mode 100644 autobahn/client/hornbeam_case_6_4_4.json create mode 100644 autobahn/client/hornbeam_case_6_5_1.html create mode 100644 autobahn/client/hornbeam_case_6_5_1.json create mode 100644 autobahn/client/hornbeam_case_6_5_2.html create mode 100644 autobahn/client/hornbeam_case_6_5_2.json create mode 100644 autobahn/client/hornbeam_case_6_5_3.html create mode 100644 autobahn/client/hornbeam_case_6_5_3.json create mode 100644 autobahn/client/hornbeam_case_6_5_4.html create mode 100644 autobahn/client/hornbeam_case_6_5_4.json create mode 100644 autobahn/client/hornbeam_case_6_5_5.html create mode 100644 autobahn/client/hornbeam_case_6_5_5.json create mode 100644 autobahn/client/hornbeam_case_6_6_1.html create mode 100644 autobahn/client/hornbeam_case_6_6_1.json create mode 100644 autobahn/client/hornbeam_case_6_6_10.html create mode 100644 autobahn/client/hornbeam_case_6_6_10.json create mode 100644 autobahn/client/hornbeam_case_6_6_11.html create mode 100644 autobahn/client/hornbeam_case_6_6_11.json create mode 100644 autobahn/client/hornbeam_case_6_6_2.html create mode 100644 autobahn/client/hornbeam_case_6_6_2.json create mode 100644 autobahn/client/hornbeam_case_6_6_3.html create mode 100644 autobahn/client/hornbeam_case_6_6_3.json create mode 100644 autobahn/client/hornbeam_case_6_6_4.html create mode 100644 autobahn/client/hornbeam_case_6_6_4.json create mode 100644 autobahn/client/hornbeam_case_6_6_5.html create mode 100644 autobahn/client/hornbeam_case_6_6_5.json create mode 100644 autobahn/client/hornbeam_case_6_6_6.html create mode 100644 autobahn/client/hornbeam_case_6_6_6.json create mode 100644 autobahn/client/hornbeam_case_6_6_7.html create mode 100644 autobahn/client/hornbeam_case_6_6_7.json create mode 100644 autobahn/client/hornbeam_case_6_6_8.html create mode 100644 autobahn/client/hornbeam_case_6_6_8.json create mode 100644 autobahn/client/hornbeam_case_6_6_9.html create mode 100644 autobahn/client/hornbeam_case_6_6_9.json create mode 100644 autobahn/client/hornbeam_case_6_7_1.html create mode 100644 autobahn/client/hornbeam_case_6_7_1.json create mode 100644 autobahn/client/hornbeam_case_6_7_2.html create mode 100644 autobahn/client/hornbeam_case_6_7_2.json create mode 100644 autobahn/client/hornbeam_case_6_7_3.html create mode 100644 autobahn/client/hornbeam_case_6_7_3.json create mode 100644 autobahn/client/hornbeam_case_6_7_4.html create mode 100644 autobahn/client/hornbeam_case_6_7_4.json create mode 100644 autobahn/client/hornbeam_case_6_8_1.html create mode 100644 autobahn/client/hornbeam_case_6_8_1.json create mode 100644 autobahn/client/hornbeam_case_6_8_2.html create mode 100644 autobahn/client/hornbeam_case_6_8_2.json create mode 100644 autobahn/client/hornbeam_case_6_9_1.html create mode 100644 autobahn/client/hornbeam_case_6_9_1.json create mode 100644 autobahn/client/hornbeam_case_6_9_2.html create mode 100644 autobahn/client/hornbeam_case_6_9_2.json create mode 100644 autobahn/client/hornbeam_case_6_9_3.html create mode 100644 autobahn/client/hornbeam_case_6_9_3.json create mode 100644 autobahn/client/hornbeam_case_6_9_4.html create mode 100644 autobahn/client/hornbeam_case_6_9_4.json create mode 100644 autobahn/client/hornbeam_case_7_13_1.html create mode 100644 autobahn/client/hornbeam_case_7_13_1.json create mode 100644 autobahn/client/hornbeam_case_7_13_2.html create mode 100644 autobahn/client/hornbeam_case_7_13_2.json create mode 100644 autobahn/client/hornbeam_case_7_1_1.html create mode 100644 autobahn/client/hornbeam_case_7_1_1.json create mode 100644 autobahn/client/hornbeam_case_7_1_2.html create mode 100644 autobahn/client/hornbeam_case_7_1_2.json create mode 100644 autobahn/client/hornbeam_case_7_1_3.html create mode 100644 autobahn/client/hornbeam_case_7_1_3.json create mode 100644 autobahn/client/hornbeam_case_7_1_4.html create mode 100644 autobahn/client/hornbeam_case_7_1_4.json create mode 100644 autobahn/client/hornbeam_case_7_1_5.html create mode 100644 autobahn/client/hornbeam_case_7_1_5.json create mode 100644 autobahn/client/hornbeam_case_7_1_6.html create mode 100644 autobahn/client/hornbeam_case_7_1_6.json create mode 100644 autobahn/client/hornbeam_case_7_3_1.html create mode 100644 autobahn/client/hornbeam_case_7_3_1.json create mode 100644 autobahn/client/hornbeam_case_7_3_2.html create mode 100644 autobahn/client/hornbeam_case_7_3_2.json create mode 100644 autobahn/client/hornbeam_case_7_3_3.html create mode 100644 autobahn/client/hornbeam_case_7_3_3.json create mode 100644 autobahn/client/hornbeam_case_7_3_4.html create mode 100644 autobahn/client/hornbeam_case_7_3_4.json create mode 100644 autobahn/client/hornbeam_case_7_3_5.html create mode 100644 autobahn/client/hornbeam_case_7_3_5.json create mode 100644 autobahn/client/hornbeam_case_7_3_6.html create mode 100644 autobahn/client/hornbeam_case_7_3_6.json create mode 100644 autobahn/client/hornbeam_case_7_5_1.html create mode 100644 autobahn/client/hornbeam_case_7_5_1.json create mode 100644 autobahn/client/hornbeam_case_7_7_1.html create mode 100644 autobahn/client/hornbeam_case_7_7_1.json create mode 100644 autobahn/client/hornbeam_case_7_7_10.html create mode 100644 autobahn/client/hornbeam_case_7_7_10.json create mode 100644 autobahn/client/hornbeam_case_7_7_11.html create mode 100644 autobahn/client/hornbeam_case_7_7_11.json create mode 100644 autobahn/client/hornbeam_case_7_7_12.html create mode 100644 autobahn/client/hornbeam_case_7_7_12.json create mode 100644 autobahn/client/hornbeam_case_7_7_13.html create mode 100644 autobahn/client/hornbeam_case_7_7_13.json create mode 100644 autobahn/client/hornbeam_case_7_7_2.html create mode 100644 autobahn/client/hornbeam_case_7_7_2.json create mode 100644 autobahn/client/hornbeam_case_7_7_3.html create mode 100644 autobahn/client/hornbeam_case_7_7_3.json create mode 100644 autobahn/client/hornbeam_case_7_7_4.html create mode 100644 autobahn/client/hornbeam_case_7_7_4.json create mode 100644 autobahn/client/hornbeam_case_7_7_5.html create mode 100644 autobahn/client/hornbeam_case_7_7_5.json create mode 100644 autobahn/client/hornbeam_case_7_7_6.html create mode 100644 autobahn/client/hornbeam_case_7_7_6.json create mode 100644 autobahn/client/hornbeam_case_7_7_7.html create mode 100644 autobahn/client/hornbeam_case_7_7_7.json create mode 100644 autobahn/client/hornbeam_case_7_7_8.html create mode 100644 autobahn/client/hornbeam_case_7_7_8.json create mode 100644 autobahn/client/hornbeam_case_7_7_9.html create mode 100644 autobahn/client/hornbeam_case_7_7_9.json create mode 100644 autobahn/client/hornbeam_case_7_9_1.html create mode 100644 autobahn/client/hornbeam_case_7_9_1.json create mode 100644 autobahn/client/hornbeam_case_7_9_2.html create mode 100644 autobahn/client/hornbeam_case_7_9_2.json create mode 100644 autobahn/client/hornbeam_case_7_9_3.html create mode 100644 autobahn/client/hornbeam_case_7_9_3.json create mode 100644 autobahn/client/hornbeam_case_7_9_4.html create mode 100644 autobahn/client/hornbeam_case_7_9_4.json create mode 100644 autobahn/client/hornbeam_case_7_9_5.html create mode 100644 autobahn/client/hornbeam_case_7_9_5.json create mode 100644 autobahn/client/hornbeam_case_7_9_6.html create mode 100644 autobahn/client/hornbeam_case_7_9_6.json create mode 100644 autobahn/client/hornbeam_case_7_9_7.html create mode 100644 autobahn/client/hornbeam_case_7_9_7.json create mode 100644 autobahn/client/hornbeam_case_7_9_8.html create mode 100644 autobahn/client/hornbeam_case_7_9_8.json create mode 100644 autobahn/client/hornbeam_case_7_9_9.html create mode 100644 autobahn/client/hornbeam_case_7_9_9.json create mode 100644 autobahn/client/hornbeam_case_9_1_1.html create mode 100644 autobahn/client/hornbeam_case_9_1_1.json create mode 100644 autobahn/client/hornbeam_case_9_1_2.html create mode 100644 autobahn/client/hornbeam_case_9_1_2.json create mode 100644 autobahn/client/hornbeam_case_9_1_3.html create mode 100644 autobahn/client/hornbeam_case_9_1_3.json create mode 100644 autobahn/client/hornbeam_case_9_1_4.html create mode 100644 autobahn/client/hornbeam_case_9_1_4.json create mode 100644 autobahn/client/hornbeam_case_9_1_5.html create mode 100644 autobahn/client/hornbeam_case_9_1_5.json create mode 100644 autobahn/client/hornbeam_case_9_1_6.html create mode 100644 autobahn/client/hornbeam_case_9_1_6.json create mode 100644 autobahn/client/hornbeam_case_9_2_1.html create mode 100644 autobahn/client/hornbeam_case_9_2_1.json create mode 100644 autobahn/client/hornbeam_case_9_2_2.html create mode 100644 autobahn/client/hornbeam_case_9_2_2.json create mode 100644 autobahn/client/hornbeam_case_9_2_3.html create mode 100644 autobahn/client/hornbeam_case_9_2_3.json create mode 100644 autobahn/client/hornbeam_case_9_2_4.html create mode 100644 autobahn/client/hornbeam_case_9_2_4.json create mode 100644 autobahn/client/index.html create mode 100644 autobahn/client/index.json create mode 100644 autobahn/server.json create mode 100644 hornbeam-autobahn-client/Cargo.toml create mode 100644 hornbeam-autobahn-client/src/main.rs create mode 100644 hornbeam/src/frame/frame_ops.rs create mode 100644 hornbeam/src/splittable.rs diff --git a/.idea/hornbeam.iml b/.idea/hornbeam.iml index fc9fd51..533c47b 100644 --- a/.idea/hornbeam.iml +++ b/.idea/hornbeam.iml @@ -2,6 +2,7 @@ + diff --git a/Cargo.lock b/Cargo.lock index 717564f..2d2a6bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -166,6 +166,16 @@ dependencies = [ "url", ] +[[package]] +name = "hornbeam-autobahn-client" +version = "0.1.0" +dependencies = [ + "hornbeam", + "log", + "simple_logger", + "url", +] + [[package]] name = "hornbeam-client" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 0f3942c..ef355d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ "hornbeam", - "hornbeam-client" + "hornbeam-client", + "hornbeam-autobahn-client" ] \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_1.html b/autobahn/client/hornbeam_case_1_1_1.html new file mode 100644 index 0000000..990c329 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_1.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.1 : Pass - 45 ms @ 2023-08-10T21:38:30.222Z

+

Case Description

Send text message with payload 0.

+

Case Expectation

Receive echo'ed text message (with empty payload). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=1&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 8ZtQuhZ+cqD1Hxn3OR5eag==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6/FuWzHFfbTbG8SmcvS+0N6nHec=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
515
818
1821182
Total4196
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d31266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8100
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 803ba5ab54
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3362613561623534
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888275d8a7437630
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3735643861373433
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_1.json b/autobahn/client/hornbeam_case_1_1_1.json new file mode 100644 index 0000000..7e5fea8 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 1, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message with payload 0.", + "droppedByMe": true, + "duration": 45, + "expectation": "Receive echo'ed text message (with empty payload). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=1&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 8ZtQuhZ+cqD1Hxn3OR5eag==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6/FuWzHFfbTbG8SmcvS+0N6nHec=\r\n\r\n", + "id": "1.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "5": 1, + "8": 1, + "182": 1 + }, + "started": "2023-08-10T21:38:30.222Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d31266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8100" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 5, + "803ba5ab54" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "3ba5ab54" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888275d8a7437630" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "75d8a743" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_2.html b/autobahn/client/hornbeam_case_1_1_2.html new file mode 100644 index 0000000..26759af --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_2.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.2 : Pass - 46 ms @ 2023-08-10T21:34:43.235Z

+

Case Description

Send text message message with payload of length 125.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=2&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: z9WNHgj87M/bz1gEBIfM9w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xr25gFQ1HcbkgsC49GEGtwX4eNg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1301130
1821182
Total4321
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1271127
2061206
Total3337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d32266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fd4c51ae14667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e66
+
               7b843e667b843e667b843e667b84 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3463353161653134
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88825b87ba07586f
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3562383762613037
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_2.json b/autobahn/client/hornbeam_case_1_1_2.json new file mode 100644 index 0000000..3aef244 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_2.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 2, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 125.", + "droppedByMe": true, + "duration": 46, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=2&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: z9WNHgj87M/bz1gEBIfM9w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xr25gFQ1HcbkgsC49GEGtwX4eNg=\r\n\r\n", + "id": "1.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "130": 1, + "182": 1 + }, + "started": "2023-08-10T21:34:43.235Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d32266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "817d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 130, + "fd4c51ae14667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b843e667b84 ..." + ] + ], + [ + "RF", + [ + 125, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "4c51ae14" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825b87ba07586f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5b87ba07" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_3.html b/autobahn/client/hornbeam_case_1_1_3.html new file mode 100644 index 0000000..7c25480 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_3.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.3 : Pass - 46 ms @ 2023-08-10T21:34:43.283Z

+

Case Description

Send text message message with payload of length 126.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=3&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3YgMuloJHqB8ZoG0MkfNSA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xFLA1XfeNs2NduUjI4BV+dw4gFY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1331133
1821182
Total4324
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1301130
2061206
Total3340
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d33266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e007e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fe007e98b0778cb29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5d
+
               a6b29a5da6b29a5da6b29a5da6b2 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=126, MASKED=True, MASK=3938623037373863
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88826d09e5a56ee1
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3664303965356135
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_3.json b/autobahn/client/hornbeam_case_1_1_3.json new file mode 100644 index 0000000..86d8ac8 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_3.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 3, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 126.", + "droppedByMe": true, + "duration": 46, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=3&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3YgMuloJHqB8ZoG0MkfNSA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xFLA1XfeNs2NduUjI4BV+dw4gFY=\r\n\r\n", + "id": "1.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "133": 1, + "182": 1 + }, + "started": "2023-08-10T21:34:43.283Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "130": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d33266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "817e007e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 133, + "fe007e98b0778cb29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b29a5da6b2 ..." + ] + ], + [ + "RF", + [ + 126, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "98b0778c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826d09e5a56ee1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6d09e5a5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_4.html b/autobahn/client/hornbeam_case_1_1_4.html new file mode 100644 index 0000000..4b29f8f --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_4.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.4 : Pass - 46 ms @ 2023-08-10T21:34:43.331Z

+

Case Description

Send text message message with payload of length 127.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=4&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7qUQcEnYyx14uAGDAhqnMQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sdMPywW+tFcgMLMoNeY1iQBnEvU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1341134
1821182
Total4325
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1311131
2061206
Total3341
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d34266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=127, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e007f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fe007f58b21d2372983709729837097298370972983709729837097298370972983709729837097298370972983709729837
+
               0972983709729837097298370972 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=127, MASKED=True, MASK=3538623231643233
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88820faf18040c47
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3066616631383034
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_4.json b/autobahn/client/hornbeam_case_1_1_4.json new file mode 100644 index 0000000..4db8892 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 4, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 127.", + "droppedByMe": true, + "duration": 46, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=4&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7qUQcEnYyx14uAGDAhqnMQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sdMPywW+tFcgMLMoNeY1iQBnEvU=\r\n\r\n", + "id": "1.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "134": 1, + "182": 1 + }, + "started": "2023-08-10T21:34:43.331Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "131": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d34266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 127, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 131, + "817e007f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 134, + "fe007f58b21d23729837097298370972983709729837097298370972983709729837097298370972983709729837097298370972983709729837097298370972 ..." + ] + ], + [ + "RF", + [ + 127, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "58b21d23" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820faf18040c47" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0faf1804" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_5.html b/autobahn/client/hornbeam_case_1_1_5.html new file mode 100644 index 0000000..3ac69e7 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_5.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.5 : Pass - 45 ms @ 2023-08-10T21:34:43.379Z

+

Case Description

Send text message message with payload of length 128.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=5&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: NwPkac3M2WPburkjigHm+g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lP2AK1KUHLsHtfaNIIoki1TmLxg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1351135
1821182
Total4326
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1321132
2061206
Total3342
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d35266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=128, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e00802a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fe008035b8ee9e1f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4
+
               b41f92c4b41f92c4b41f92c4b41f ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=128, MASKED=True, MASK=3335623865653965
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882723b8a3671d3
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3732336238613336
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_5.json b/autobahn/client/hornbeam_case_1_1_5.json new file mode 100644 index 0000000..bda0640 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_5.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 5, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 128.", + "droppedByMe": true, + "duration": 45, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=5&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: NwPkac3M2WPburkjigHm+g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lP2AK1KUHLsHtfaNIIoki1TmLxg=\r\n\r\n", + "id": "1.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "135": 1, + "182": 1 + }, + "started": "2023-08-10T21:34:43.379Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "132": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d35266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 128, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 132, + "817e00802a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 135, + "fe008035b8ee9e1f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f92c4b41f ..." + ] + ], + [ + "RF", + [ + 128, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "35b8ee9e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882723b8a3671d3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "723b8a36" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_6.html b/autobahn/client/hornbeam_case_1_1_6.html new file mode 100644 index 0000000..a5bfaba --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_6.html @@ -0,0 +1,310 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.6 : Pass - 210 ms @ 2023-08-10T21:34:43.426Z

+

Case Description

Send text message message with payload of length 65535.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=6&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ZM6TVytTdjXs3llnUx5qEw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1HLcgk5SGTFkjbhW65IrwMwW1zE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
818
1821182
13033113033
23550123550
28960128960
Total565733
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65539165539
Total365749
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d36266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817effff2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 81feffffb4829f1b9ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8
+
               b5319ea8b5319ea8b5319ea8b531 ...
+
006 RX OCTETS: a8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5
+
               319ea8b5319ea8b5319ea8b5319e ...
+
007 RX OCTETS: a8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5
+
               319ea8b5319ea8b5319ea8b5319e ...
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASKED=True, MASK=6234383239663162
+
               **************************************************************** ...
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 88823299620f3171
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3332393936323066
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_6.json b/autobahn/client/hornbeam_case_1_1_6.json new file mode 100644 index 0000000..0d87355 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_6.json @@ -0,0 +1,193 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 6, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65535.", + "droppedByMe": true, + "duration": 210, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=6&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ZM6TVytTdjXs3llnUx5qEw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1HLcgk5SGTFkjbhW65IrwMwW1zE=\r\n\r\n", + "id": "1.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "182": 1, + "13033": 1, + "23550": 1, + "28960": 1 + }, + "started": "2023-08-10T21:34:43.426Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65539": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d36266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65535, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65539, + "817effff2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 13033, + "81feffffb4829f1b9ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b531 ..." + ] + ], + [ + "RO", + [ + 28960, + "a8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319e ..." + ] + ], + [ + "RO", + [ + 23550, + "a8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319ea8b5319e ..." + ] + ], + [ + "RF", + [ + 65535, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "b4829f1b" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823299620f3171" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3299620f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_7.html b/autobahn/client/hornbeam_case_1_1_7.html new file mode 100644 index 0000000..cd4a4b9 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_7.html @@ -0,0 +1,310 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.7 : Pass - 186 ms @ 2023-08-10T21:34:43.638Z

+

Case Description

Send text message message with payload of length 65536.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=7&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: AbPJWedI0oLNOsKRJoc2PQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: N+DShn5P4aUt4MNL7fnAzfiy2Po=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
818
1821182
13033113033
23557123557
28960128960
Total565740
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d37266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 81ff0000000000010000a6e097e68ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc
+
               8ccabdcc8ccabdcc8ccabdcc8cca ...
+
006 RX OCTETS: cc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8c
+
               cabdcc8ccabdcc8ccabdcc8ccabd ...
+
007 RX OCTETS: cc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8c
+
               cabdcc8ccabdcc8ccabdcc8ccabd ...
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=6136653039376536
+
               **************************************************************** ...
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 88826cd234956f3a
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3663643233343935
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_7.json b/autobahn/client/hornbeam_case_1_1_7.json new file mode 100644 index 0000000..be35265 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_7.json @@ -0,0 +1,193 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 7, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65536.", + "droppedByMe": true, + "duration": 186, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=7&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: AbPJWedI0oLNOsKRJoc2PQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: N+DShn5P4aUt4MNL7fnAzfiy2Po=\r\n\r\n", + "id": "1.1.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "182": 1, + "13033": 1, + "23557": 1, + "28960": 1 + }, + "started": "2023-08-10T21:34:43.638Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d37266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65546, + "817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 13033, + "81ff0000000000010000a6e097e68ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8cca ..." + ] + ], + [ + "RO", + [ + 28960, + "cc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabd ..." + ] + ], + [ + "RO", + [ + 23557, + "cc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabdcc8ccabd ..." + ] + ], + [ + "RF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "a6e097e6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826cd234956f3a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6cd23495" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_1_8.html b/autobahn/client/hornbeam_case_1_1_8.html new file mode 100644 index 0000000..93681da --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_8.html @@ -0,0 +1,441 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.1.8 : Pass - 221 ms @ 2023-08-10T21:34:43.826Z

+

Case Description

Send text message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=8&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: rKgzB4gJ/1oEs5OPpeVyMA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yw9ejA/ixcRClqjYTn/8gZQs6qQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
818
1821182
13033113033
23557123557
28960128960
Total565740
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
2061206
7411741
9976564805
Total6865756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d38266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=997, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
006 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
007 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
008 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
009 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
010 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
011 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
012 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
013 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
014 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
015 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
016 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
017 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
018 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
019 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
020 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
021 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
022 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
023 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
024 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
025 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
026 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
027 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
028 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
029 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
030 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
031 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
032 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
033 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
034 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
035 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
036 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
037 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
038 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
039 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
040 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
041 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
042 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
043 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
044 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
045 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
046 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
047 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
048 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
049 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
050 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
051 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
052 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
053 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
054 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
055 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
056 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
057 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
058 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
059 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
060 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
061 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
062 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
063 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
064 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
065 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
066 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
067 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
068 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
069 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
070 RX OCTETS: 81ff00000000000100006a3999064013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c
+
               4013b32c4013b32c4013b32c4013 ...
+
071 RX OCTETS: 2c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c40
+
               13b32c4013b32c4013b32c4013b3 ...
+
072 RX OCTETS: 2c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c40
+
               13b32c4013b32c4013b32c4013b3 ...
+
073 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=3661333939393036
+
               **************************************************************** ...
+
074 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
075 TX OCTETS: 880203e8
+
076 RX OCTETS: 88821bb9ac2a1851
+
077 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3162623961633261
+
               0x03e8
+
078 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_1_8.json b/autobahn/client/hornbeam_case_1_1_8.json new file mode 100644 index 0000000..af56cf6 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_1_8.json @@ -0,0 +1,714 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 8, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65536. Sent out data in chops of 997 octets.", + "droppedByMe": true, + "duration": 221, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=8&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: rKgzB4gJ/1oEs5OPpeVyMA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yw9ejA/ixcRClqjYTn/8gZQs6qQ=\r\n\r\n", + "id": "1.1.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "182": 1, + "13033": 1, + "23557": 1, + "28960": 1 + }, + "started": "2023-08-10T21:34:43.826Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "741": 1, + "997": 65 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d38266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + 997, + false + ], + [ + "TO", + [ + 997, + "817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "KL", + 10 + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 741, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "RO", + [ + 13033, + "81ff00000000000100006a3999064013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013 ..." + ] + ], + [ + "RO", + [ + 28960, + "2c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b3 ..." + ] + ], + [ + "RO", + [ + 23557, + "2c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b32c4013b3 ..." + ] + ], + [ + "RF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "6a399906" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821bb9ac2a1851" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1bb9ac2a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_1.html b/autobahn/client/hornbeam_case_1_2_1.html new file mode 100644 index 0000000..f67914d --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_1.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.1 : Pass - 50 ms @ 2023-08-10T21:50:14.264Z

+

Case Description

Send binary message with payload 0.

+

Case Expectation

Receive echo'ed binary message (with empty payload). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', True)]}

+ Observed:
[('message', u'', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=9&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: fufORqKLRWBkchTEpZ//fw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: si3gyJPybvxZaPWvLfV4hGqXc6I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
515
818
1821182
Total4196
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d39266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a
+
               206c6f63616c686f73743a393030 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8200
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: 80835c4ea0
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3833356334656130
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882b0fa3880b312
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6230666133383830
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_1.json b/autobahn/client/hornbeam_case_1_2_1.json new file mode 100644 index 0000000..11a0c93 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 9, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message with payload 0.", + "droppedByMe": true, + "duration": 50, + "expectation": "Receive echo'ed binary message (with empty payload). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=9&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: fufORqKLRWBkchTEpZ//fw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: si3gyJPybvxZaPWvLfV4hGqXc6I=\r\n\r\n", + "id": "1.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "5": 1, + "8": 1, + "182": 1 + }, + "started": "2023-08-10T21:50:14.264Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 182, + "474554202f72756e436173653f636173653d39266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a393030 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8200" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 5, + "80835c4ea0" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 2, + true, + 0, + true, + "835c4ea0" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b0fa3880b312" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b0fa3880" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_2.html b/autobahn/client/hornbeam_case_1_2_2.html new file mode 100644 index 0000000..cbef4fb --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_2.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.2 : Pass - 45 ms @ 2023-08-10T21:50:01.474Z

+

Case Description

Send binary message message with payload of length 125.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=10&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: oiyDZcPSYQdiZO4iY0jD/g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Mp2byzQvJa8YPCvDUKdFAbyYC0A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1301130
1831183
Total4322
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1271127
2061206
Total3337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3130266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: fdd78216df297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce82129
+
               7ce821297ce821297ce821297ce8 ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=6437383231366466
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882d35fe008d0b7
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6433356665303038
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_2.json b/autobahn/client/hornbeam_case_1_2_2.json new file mode 100644 index 0000000..fa0f490 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_2.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 10, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 125.", + "droppedByMe": true, + "duration": 45, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=10&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: oiyDZcPSYQdiZO4iY0jD/g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Mp2byzQvJa8YPCvDUKdFAbyYC0A=\r\n\r\n", + "id": "1.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "130": 1, + "183": 1 + }, + "started": "2023-08-10T21:50:01.474Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3130266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "827dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 130, + "fdd78216df297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce821297ce8 ..." + ] + ], + [ + "RF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "d78216df" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d35fe008d0b7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d35fe008" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_3.html b/autobahn/client/hornbeam_case_1_2_3.html new file mode 100644 index 0000000..d5335e9 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_3.html @@ -0,0 +1,309 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.3 : Pass - 46 ms @ 2023-08-10T21:50:15.981Z

+

Case Description

Send binary message message with payload of length 126.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=11&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: HIiWGgjeSsuymeVEOakkGg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mJvzE42uquhrnSXJ2AEL3sb+zv4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
122
717
1331133
1831183
Total5325
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1301130
2061206
Total3340
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3131266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: fe007e74ca70108a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348e
+
               ee8a348eee8a348eee8a348eee8a ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=126, MASKED=True, MASK=3734636137303130
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88
+
011 RX OCTETS: 8271fd267d7215
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3731666432363764
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_3.json b/autobahn/client/hornbeam_case_1_2_3.json new file mode 100644 index 0000000..f684e40 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_3.json @@ -0,0 +1,192 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 11, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 126.", + "droppedByMe": true, + "duration": 46, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=11&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: HIiWGgjeSsuymeVEOakkGg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mJvzE42uquhrnSXJ2AEL3sb+zv4=\r\n\r\n", + "id": "1.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 1, + "133": 1, + "183": 1 + }, + "started": "2023-08-10T21:50:15.981Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "130": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3131266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "827e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 133, + "fe007e74ca70108a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a348eee8a ..." + ] + ], + [ + "RF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "74ca7010" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "8271fd267d7215" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "71fd267d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_4.html b/autobahn/client/hornbeam_case_1_2_4.html new file mode 100644 index 0000000..69590a7 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_4.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.4 : Pass - 45 ms @ 2023-08-10T21:50:17.419Z

+

Case Description

Send binary message message with payload of length 127.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=12&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: x9sGt7Ra7Cgp1MhR/r1GZQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nuarYDdk2rGNFBnLkjXiaa2FsTs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1341134
1831183
Total4326
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1311131
2061206
Total3341
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3132266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=127, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e007ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: fe007f0b971d2ef569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3
+
               d0f569e3d0f569e3d0f569e3d0f5 ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=127, MASKED=True, MASK=3062393731643265
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888274556dde77bd
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3734353536646465
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_4.json b/autobahn/client/hornbeam_case_1_2_4.json new file mode 100644 index 0000000..18ff822 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 12, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 127.", + "droppedByMe": true, + "duration": 45, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=12&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: x9sGt7Ra7Cgp1MhR/r1GZQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nuarYDdk2rGNFBnLkjXiaa2FsTs=\r\n\r\n", + "id": "1.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "134": 1, + "183": 1 + }, + "started": "2023-08-10T21:50:17.419Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "131": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3132266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 127, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 131, + "827e007ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 134, + "fe007f0b971d2ef569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f569e3d0f5 ..." + ] + ], + [ + "RF", + [ + 127, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "0b971d2e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888274556dde77bd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "74556dde" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_5.html b/autobahn/client/hornbeam_case_1_2_5.html new file mode 100644 index 0000000..02403a5 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_5.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.5 : Pass - 47 ms @ 2023-08-10T21:50:18.645Z

+

Case Description

Send binary message message with payload of length 128.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=13&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: sSxXOg9j8EtrgbU9pPdKMQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CcQCqtOjUoSmMzWfNXYKrtfZU0o=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
1351135
1831183
Total4327
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1321132
2061206
Total3342
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3133266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=128, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e0080fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: fe0080dd20fa3423de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04
+
               ca23de04ca23de04ca23de04ca23 ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=128, MASKED=True, MASK=6464323066613334
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882ab89565ea861
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6162383935363565
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_5.json b/autobahn/client/hornbeam_case_1_2_5.json new file mode 100644 index 0000000..3405a5b --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_5.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 13, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 128.", + "droppedByMe": true, + "duration": 47, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=13&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: sSxXOg9j8EtrgbU9pPdKMQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CcQCqtOjUoSmMzWfNXYKrtfZU0o=\r\n\r\n", + "id": "1.2.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "135": 1, + "183": 1 + }, + "started": "2023-08-10T21:50:18.645Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "132": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3133266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 128, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 132, + "827e0080fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 135, + "fe0080dd20fa3423de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23de04ca23 ..." + ] + ], + [ + "RF", + [ + 128, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "dd20fa34" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ab89565ea861" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ab89565e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_6.html b/autobahn/client/hornbeam_case_1_2_6.html new file mode 100644 index 0000000..16a5793 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_6.html @@ -0,0 +1,313 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.6 : Pass - 697 ms @ 2023-08-10T21:50:19.986Z

+

Case Description

Send binary message message with payload of length 65535.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=14&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: e2QrAiPgcBmXVRkkeh9d/A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dLZOCuHohoAAQIJkfAG0mxz4uy0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
122
313
414
717
1831183
65535165535
Total765734
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65539165539
Total365749
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3134266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827efffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: feffff
+
007 RX OCTETS: 075c9f68
+
008 RX OCTETS: f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a2
+
               6196f9a26196f9a26196f9a26196 ...
+
009 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASKED=True, MASK=3037356339663638
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
010 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
011 TX OCTETS: 880203e8
+
012 RX OCTETS: 88
+
013 RX OCTETS: 82d7f1a1a7d419
+
014 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6437663161316137
+
               0x03e8
+
015 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_6.json b/autobahn/client/hornbeam_case_1_2_6.json new file mode 100644 index 0000000..47618a0 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_6.json @@ -0,0 +1,208 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 14, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65535.", + "droppedByMe": true, + "duration": 697, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=14&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: e2QrAiPgcBmXVRkkeh9d/A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dLZOCuHohoAAQIJkfAG0mxz4uy0=\r\n\r\n", + "id": "1.2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "3": 1, + "4": 1, + "7": 1, + "183": 1, + "65535": 1 + }, + "started": "2023-08-10T21:50:19.986Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65539": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3134266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65535, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65539, + "827efffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 3, + "feffff" + ] + ], + [ + "RO", + [ + 4, + "075c9f68" + ] + ], + [ + "RO", + [ + 65535, + "f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196f9a26196 ..." + ] + ], + [ + "RF", + [ + 65535, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "075c9f68" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82d7f1a1a7d419" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d7f1a1a7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_7.html b/autobahn/client/hornbeam_case_1_2_7.html new file mode 100644 index 0000000..eab69e9 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_7.html @@ -0,0 +1,316 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.7 : Pass - 395 ms @ 2023-08-10T21:50:25.996Z

+

Case Description

Send binary message message with payload of length 65536.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=15&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: iYAXal+ZimcI1/tBfycLbA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3CImKonfnvV1KiqXyURmVcycPi0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + +
Chop SizeCountOctets
111
818
919
1831183
14480114480
22100122100
28960128960
Total765741
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3135266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 82
+
006 RX OCTETS: ff0000000000010000
+
007 RX OCTETS: b04d7f9f4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb3
+
               81614eb381614eb381614eb38161 ...
+
008 RX OCTETS: 4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb3
+
               81614eb381614eb381614eb38161 ...
+
009 RX OCTETS: 4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb3
+
               81614eb381614eb381614eb38161 ...
+
010 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=6230346437663966
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
011 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
012 TX OCTETS: 880203e8
+
013 RX OCTETS: 88822f7294632c9a
+
014 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3266373239343633
+
               0x03e8
+
015 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_7.json b/autobahn/client/hornbeam_case_1_2_7.json new file mode 100644 index 0000000..f9e0257 --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_7.json @@ -0,0 +1,209 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 15, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65536.", + "droppedByMe": true, + "duration": 395, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=15&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: iYAXal+ZimcI1/tBfycLbA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3CImKonfnvV1KiqXyURmVcycPi0=\r\n\r\n", + "id": "1.2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "183": 1, + "14480": 1, + "22100": 1, + "28960": 1 + }, + "started": "2023-08-10T21:50:25.996Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3135266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65546, + "827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 9, + "ff0000000000010000" + ] + ], + [ + "RO", + [ + 14480, + "b04d7f9f4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb38161 ..." + ] + ], + [ + "RO", + [ + 28960, + "4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb38161 ..." + ] + ], + [ + "RO", + [ + 22100, + "4eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb381614eb38161 ..." + ] + ], + [ + "RF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "b04d7f9f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822f7294632c9a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2f729463" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_1_2_8.html b/autobahn/client/hornbeam_case_1_2_8.html new file mode 100644 index 0000000..8760b9b --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_8.html @@ -0,0 +1,444 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 1.2.8 : Pass - 602 ms @ 2023-08-10T21:50:27.791Z

+

Case Description

Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=16&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: g5kh38oUi1Haxhu7GBEYdQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1rSbC+g816LUKhwMvCE+Wx9wpMY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
122
414
717
919
1831183
65536165536
Total765741
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
2061206
7411741
9976564805
Total6865756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3136266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=997, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
006 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
007 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
008 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
009 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
010 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
011 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
012 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
013 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
014 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
015 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
016 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
017 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
018 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
019 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
020 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
021 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
022 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
023 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
024 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
025 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
026 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
027 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
028 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
029 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
030 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
031 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
032 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
033 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
034 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
035 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
036 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
037 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
038 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
039 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
040 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
041 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
042 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
043 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
044 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
045 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
046 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
047 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
048 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
049 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
050 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
051 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
052 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
053 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
054 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
055 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
056 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
057 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
058 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
059 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
060 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
061 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
062 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
063 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
064 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
065 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
066 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
067 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
068 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
069 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
070 RX OCTETS: 82
+
071 RX OCTETS: ff0000000000010000
+
072 RX OCTETS: 5e5b0afda0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5
+
               f403a0a5f403a0a5f403a0a5f403 ...
+
073 RX OCTETS: a0a5f403
+
074 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=3565356230616664
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
075 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
076 TX OCTETS: 880203e8
+
077 RX OCTETS: 88
+
078 RX OCTETS: 82a8c15babab29
+
079 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6138633135626162
+
               0x03e8
+
080 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_1_2_8.json b/autobahn/client/hornbeam_case_1_2_8.json new file mode 100644 index 0000000..787d76b --- /dev/null +++ b/autobahn/client/hornbeam_case_1_2_8.json @@ -0,0 +1,729 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 16, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.", + "droppedByMe": true, + "duration": 602, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=16&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: g5kh38oUi1Haxhu7GBEYdQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1rSbC+g816LUKhwMvCE+Wx9wpMY=\r\n\r\n", + "id": "1.2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "4": 1, + "7": 1, + "9": 1, + "183": 1, + "65536": 1 + }, + "started": "2023-08-10T21:50:27.791Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "741": 1, + "997": 65 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3136266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + 997, + false + ], + [ + "TO", + [ + 997, + "827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "KL", + 10 + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 741, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "RO", + [ + 1, + "82" + ] + ], + [ + "RO", + [ + 9, + "ff0000000000010000" + ] + ], + [ + "RO", + [ + 65536, + "5e5b0afda0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403a0a5f403 ..." + ] + ], + [ + "RO", + [ + 4, + "a0a5f403" + ] + ], + [ + "RF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "5e5b0afd" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82a8c15babab29" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a8c15bab" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_1.html b/autobahn/client/hornbeam_case_2_1.html new file mode 100644 index 0000000..9a7c111 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_1.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.1 : Fail - 1003 ms @ 2023-08-10T21:34:46.065Z

+

Case Description

Send ping without payload.

+

Case Expectation

Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=17&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vj/We7f3hyDFhuUh6scgUw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: SqLhgDY51qpJMDSXNu171gLf3Sk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
224
2061206
Total3210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3137266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8900
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 CLOSING CONNECTION
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8800
+
008 RX OCTETS: 888040a9ed6e
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3430613965643665
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_1.json b/autobahn/client/hornbeam_case_2_1.json new file mode 100644 index 0000000..b435162 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_1.json @@ -0,0 +1,151 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 17, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping without payload.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=17&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vj/We7f3hyDFhuUh6scgUw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: SqLhgDY51qpJMDSXNu171gLf3Sk=\r\n\r\n", + "id": "2.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:46.065Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3137266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "TI", + 1 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "888040a9ed6e" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "40a9ed6e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_10.html b/autobahn/client/hornbeam_case_2_10.html new file mode 100644 index 0000000..511c59b --- /dev/null +++ b/autobahn/client/hornbeam_case_2_10.html @@ -0,0 +1,323 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.10 : Fail - 3004 ms @ 2023-08-10T21:34:54.113Z

+

Case Description

Send 10 Pings with payload.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=26&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Kow5QeQcvdvFtugq1BH2mQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8POiMXTKXGfiexlm6d8hoA/tDfI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
1110110
2061206
Total12318
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
910
Total11
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3236266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-0
+
003 TX OCTETS: 89097061796c6f61642d30
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-1
+
005 TX OCTETS: 89097061796c6f61642d31
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-2
+
007 TX OCTETS: 89097061796c6f61642d32
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-3
+
009 TX OCTETS: 89097061796c6f61642d33
+
010 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-4
+
011 TX OCTETS: 89097061796c6f61642d34
+
012 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-5
+
013 TX OCTETS: 89097061796c6f61642d35
+
014 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-6
+
015 TX OCTETS: 89097061796c6f61642d36
+
016 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-7
+
017 TX OCTETS: 89097061796c6f61642d37
+
018 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-8
+
019 TX OCTETS: 89097061796c6f61642d38
+
020 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-9
+
021 TX OCTETS: 89097061796c6f61642d39
+
022 CLOSE CONNECTION AFTER 3.000000 sec
+
023 CLOSING CONNECTION
+
024 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
025 TX OCTETS: 8800
+
026 RX OCTETS: 8880239c02a4
+
027 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3233396330326134
+
028 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_10.json b/autobahn/client/hornbeam_case_2_10.json new file mode 100644 index 0000000..d40d977 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_10.json @@ -0,0 +1,386 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 26, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 10 Pings with payload.", + "droppedByMe": true, + "duration": 3004, + "expectation": "Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=26&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Kow5QeQcvdvFtugq1BH2mQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8POiMXTKXGfiexlm6d8hoA/tDfI=\r\n\r\n", + "id": "2.10", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:54.113Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 10 + }, + "txOctetStats": { + "2": 1, + "11": 10, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3236266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "payload-0" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d30" + ], + false + ], + [ + "TF", + [ + 9, + "payload-1" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d31" + ], + false + ], + [ + "TF", + [ + 9, + "payload-2" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d32" + ], + false + ], + [ + "TF", + [ + 9, + "payload-3" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d33" + ], + false + ], + [ + "TF", + [ + 9, + "payload-4" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d34" + ], + false + ], + [ + "TF", + [ + 9, + "payload-5" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d35" + ], + false + ], + [ + "TF", + [ + 9, + "payload-6" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d36" + ], + false + ], + [ + "TF", + [ + 9, + "payload-7" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d37" + ], + false + ], + [ + "TF", + [ + 9, + "payload-8" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d38" + ], + false + ], + [ + "TF", + [ + 9, + "payload-9" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d39" + ], + false + ], + [ + "TI", + 3 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "8880239c02a4" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "239c02a4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_11.html b/autobahn/client/hornbeam_case_2_11.html new file mode 100644 index 0000000..ad805fc --- /dev/null +++ b/autobahn/client/hornbeam_case_2_11.html @@ -0,0 +1,423 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.11 : Fail - 3004 ms @ 2023-08-10T21:34:57.118Z

+

Case Description

Send 10 Pings with payload. Send out octets in octet-wise chops.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=27&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CqDP2JS6VLKQiqPDk1rmtg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1s+Zltac/uOyGZTv+nnKnxCHRvI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
1110110
212
2061206
Total112318
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
910
Total11
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3237266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-0
+
003 TX OCTETS: 89
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-1
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-2
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-3
+
007 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-4
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-5
+
009 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-6
+
010 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-7
+
011 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-8
+
012 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-9
+
013 CLOSE CONNECTION AFTER 3.000000 sec
+
014 TX OCTETS: 09
+
015 TX OCTETS: 70
+
016 TX OCTETS: 61
+
017 TX OCTETS: 79
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 6f
+
020 TX OCTETS: 61
+
021 TX OCTETS: 64
+
022 TX OCTETS: 2d
+
023 TX OCTETS: 30
+
024 TX OCTETS: 89
+
025 TX OCTETS: 09
+
026 TX OCTETS: 70
+
027 TX OCTETS: 61
+
028 TX OCTETS: 79
+
029 TX OCTETS: 6c
+
030 TX OCTETS: 6f
+
031 TX OCTETS: 61
+
032 TX OCTETS: 64
+
033 TX OCTETS: 2d
+
034 TX OCTETS: 31
+
035 TX OCTETS: 89
+
036 TX OCTETS: 09
+
037 TX OCTETS: 70
+
038 TX OCTETS: 61
+
039 TX OCTETS: 79
+
040 TX OCTETS: 6c
+
041 TX OCTETS: 6f
+
042 TX OCTETS: 61
+
043 TX OCTETS: 64
+
044 TX OCTETS: 2d
+
045 TX OCTETS: 32
+
046 TX OCTETS: 89
+
047 TX OCTETS: 09
+
048 TX OCTETS: 70
+
049 TX OCTETS: 61
+
050 TX OCTETS: 79
+
051 TX OCTETS: 6c
+
052 TX OCTETS: 6f
+
053 TX OCTETS: 61
+
054 TX OCTETS: 64
+
055 TX OCTETS: 2d
+
056 TX OCTETS: 33
+
057 TX OCTETS: 89
+
058 TX OCTETS: 09
+
059 TX OCTETS: 70
+
060 TX OCTETS: 61
+
061 TX OCTETS: 79
+
062 TX OCTETS: 6c
+
063 TX OCTETS: 6f
+
064 TX OCTETS: 61
+
065 TX OCTETS: 64
+
066 TX OCTETS: 2d
+
067 TX OCTETS: 34
+
068 TX OCTETS: 89
+
069 TX OCTETS: 09
+
070 TX OCTETS: 70
+
071 TX OCTETS: 61
+
072 TX OCTETS: 79
+
073 TX OCTETS: 6c
+
074 TX OCTETS: 6f
+
075 TX OCTETS: 61
+
076 TX OCTETS: 64
+
077 TX OCTETS: 2d
+
078 TX OCTETS: 35
+
079 TX OCTETS: 89
+
080 TX OCTETS: 09
+
081 TX OCTETS: 70
+
082 TX OCTETS: 61
+
083 TX OCTETS: 79
+
084 TX OCTETS: 6c
+
085 TX OCTETS: 6f
+
086 TX OCTETS: 61
+
087 TX OCTETS: 64
+
088 TX OCTETS: 2d
+
089 TX OCTETS: 36
+
090 TX OCTETS: 89
+
091 TX OCTETS: 09
+
092 TX OCTETS: 70
+
093 TX OCTETS: 61
+
094 TX OCTETS: 79
+
095 TX OCTETS: 6c
+
096 TX OCTETS: 6f
+
097 TX OCTETS: 61
+
098 TX OCTETS: 64
+
099 TX OCTETS: 2d
+
100 TX OCTETS: 37
+
101 TX OCTETS: 89
+
102 TX OCTETS: 09
+
103 TX OCTETS: 70
+
104 TX OCTETS: 61
+
105 TX OCTETS: 79
+
106 TX OCTETS: 6c
+
107 TX OCTETS: 6f
+
108 TX OCTETS: 61
+
109 TX OCTETS: 64
+
110 TX OCTETS: 2d
+
111 TX OCTETS: 38
+
112 TX OCTETS: 89
+
113 TX OCTETS: 09
+
114 TX OCTETS: 70
+
115 TX OCTETS: 61
+
116 TX OCTETS: 79
+
117 TX OCTETS: 6c
+
118 TX OCTETS: 6f
+
119 TX OCTETS: 61
+
120 TX OCTETS: 64
+
121 TX OCTETS: 2d
+
122 TX OCTETS: 39
+
123 CLOSING CONNECTION
+
124 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
125 TX OCTETS: 8800
+
126 RX OCTETS: 8880ac1cf067
+
127 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=6163316366303637
+
128 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_11.json b/autobahn/client/hornbeam_case_2_11.json new file mode 100644 index 0000000..e860f4f --- /dev/null +++ b/autobahn/client/hornbeam_case_2_11.json @@ -0,0 +1,1186 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 27, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 10 Pings with payload. Send out octets in octet-wise chops.", + "droppedByMe": true, + "duration": 3004, + "expectation": "Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=27&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CqDP2JS6VLKQiqPDk1rmtg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1s+Zltac/uOyGZTv+nnKnxCHRvI=\r\n\r\n", + "id": "2.11", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:57.118Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 10 + }, + "txOctetStats": { + "1": 110, + "2": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3237266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "payload-0" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TF", + [ + 9, + "payload-1" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-2" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-3" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-4" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-5" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-6" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-7" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-8" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-9" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 3 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "30" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "33" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "34" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "35" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "36" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "37" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "38" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "39" + ], + true + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "8880ac1cf067" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "ac1cf067" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_2.html b/autobahn/client/hornbeam_case_2_2.html new file mode 100644 index 0000000..f87c16e --- /dev/null +++ b/autobahn/client/hornbeam_case_2_2.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.2 : Fail - 1003 ms @ 2023-08-10T21:34:47.070Z

+

Case Description

Send ping with small text payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'Hello, world!')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=18&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +3B8o21xS/5WvytvxYQMmg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 9xZBt2h2Nlh2TTHydTCGDDbBw8s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15115
2061206
Total3223
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3138266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 890d48656c6c6f2c20776f726c6421
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 CLOSING CONNECTION
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8800
+
008 RX OCTETS: 8880cb2a0e77
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=6362326130653737
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_2.json b/autobahn/client/hornbeam_case_2_2.json new file mode 100644 index 0000000..f8be748 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_2.json @@ -0,0 +1,152 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 18, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with small text payload.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "Hello, world!" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=18&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +3B8o21xS/5WvytvxYQMmg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 9xZBt2h2Nlh2TTHydTCGDDbBw8s=\r\n\r\n", + "id": "2.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:47.070Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3138266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "890d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TI", + 1 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "8880cb2a0e77" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "cb2a0e77" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_3.html b/autobahn/client/hornbeam_case_2_3.html new file mode 100644 index 0000000..a3586f2 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_3.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.3 : Fail - 1003 ms @ 2023-08-10T21:34:48.075Z

+

Case Description

Send ping with small binary (non UTF-8) payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', '0x00fffefdfcfb00ff')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=19&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vvhmRaFay8Xz4hu76hdlMA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: uV22gjd/ZxhuS7M+yqyM2grIvFE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
10110
2061206
Total3218
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3139266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x00fffefdfcfb00ff
+
003 TX OCTETS: 890800fffefdfcfb00ff
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 CLOSING CONNECTION
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8800
+
008 RX OCTETS: 88803726da1b
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3337323664613162
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_3.json b/autobahn/client/hornbeam_case_2_3.json new file mode 100644 index 0000000..d8606c6 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_3.json @@ -0,0 +1,152 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 19, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with small binary (non UTF-8) payload.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0x00fffefdfcfb00ff" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=19&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vvhmRaFay8Xz4hu76hdlMA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: uV22gjd/ZxhuS7M+yqyM2grIvFE=\r\n\r\n", + "id": "2.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:48.075Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "10": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3139266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0x00fffefdfcfb00ff" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "890800fffefdfcfb00ff" + ], + false + ], + [ + "TI", + 1 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "88803726da1b" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "3726da1b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_4.html b/autobahn/client/hornbeam_case_2_4.html new file mode 100644 index 0000000..2529b92 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_4.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.4 : Fail - 1003 ms @ 2023-08-10T21:34:49.081Z

+

Case Description

Send ping with binary payload of 125 octets.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=20&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: yGdig6lW7KovBm07y6ihdA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7qE4+GStoWBAiDOUstVGKZ5Or6Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
1271127
2061206
Total3335
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3230266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 897dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 CLOSING CONNECTION
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8800
+
008 RX OCTETS: 8880d584bfe7
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=6435383462666537
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_4.json b/autobahn/client/hornbeam_case_2_4.json new file mode 100644 index 0000000..faa49e1 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_4.json @@ -0,0 +1,152 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 20, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 125 octets.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=20&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: yGdig6lW7KovBm07y6ihdA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7qE4+GStoWBAiDOUstVGKZ5Or6Q=\r\n\r\n", + "id": "2.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:49.081Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3230266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "897dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "TI", + 1 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "8880d584bfe7" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "d584bfe7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_5.html b/autobahn/client/hornbeam_case_2_5.html new file mode 100644 index 0000000..9d616ee --- /dev/null +++ b/autobahn/client/hornbeam_case_2_5.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.5 : Pass - 1003 ms @ 2023-08-10T21:34:50.086Z

+

Case Description

Send ping with binary payload of 126 octets.

+

Case Expectation

Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=21&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5e0gG5mCIev1qcA6hHXz1Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xhrE7D+ZfluuL2AdymQ0xHg1BCI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
18118
1831183
Total2201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
1301130
2061206
Total3350
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3231266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 897e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 FAILING CONNECTION
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
007 TX OCTETS: 880c03e9476f696e672041776179
+
008 RX OCTETS: 888cc04e44e0c3a7038fa92023c081392599
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6330346534346530
+
               0x03e9476f696e672041776179
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_5.json b/autobahn/client/hornbeam_case_2_5.json new file mode 100644 index 0000000..c796f80 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_5.json @@ -0,0 +1,147 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "FAILED", + "case": 21, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 126 octets.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=21&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5e0gG5mCIev1qcA6hHXz1Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xhrE7D+ZfluuL2AdymQ0xHg1BCI=\r\n\r\n", + "id": "2.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:50.086Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "14": 1, + "130": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3231266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "897e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cc04e44e0c3a7038fa92023c081392599" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "c04e44e0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_6.html b/autobahn/client/hornbeam_case_2_6.html new file mode 100644 index 0000000..e7d80b1 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_6.html @@ -0,0 +1,423 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.6 : Fail - 2003 ms @ 2023-08-10T21:34:51.092Z

+

Case Description

Send ping with binary payload of 125 octets, send in octet-wise chops.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=22&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DcA1OU4m1cAZjXEWecDtuw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IGGc7B6DozJE0Dw2ABEeABGvDAE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
1127127
212
2061206
Total129335
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3232266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 89
+
004 CLOSE CONNECTION AFTER 2.000000 sec
+
005 TX OCTETS: 7d
+
006 TX OCTETS: fe
+
007 TX OCTETS: fe
+
008 TX OCTETS: fe
+
009 TX OCTETS: fe
+
010 TX OCTETS: fe
+
011 TX OCTETS: fe
+
012 TX OCTETS: fe
+
013 TX OCTETS: fe
+
014 TX OCTETS: fe
+
015 TX OCTETS: fe
+
016 TX OCTETS: fe
+
017 TX OCTETS: fe
+
018 TX OCTETS: fe
+
019 TX OCTETS: fe
+
020 TX OCTETS: fe
+
021 TX OCTETS: fe
+
022 TX OCTETS: fe
+
023 TX OCTETS: fe
+
024 TX OCTETS: fe
+
025 TX OCTETS: fe
+
026 TX OCTETS: fe
+
027 TX OCTETS: fe
+
028 TX OCTETS: fe
+
029 TX OCTETS: fe
+
030 TX OCTETS: fe
+
031 TX OCTETS: fe
+
032 TX OCTETS: fe
+
033 TX OCTETS: fe
+
034 TX OCTETS: fe
+
035 TX OCTETS: fe
+
036 TX OCTETS: fe
+
037 TX OCTETS: fe
+
038 TX OCTETS: fe
+
039 TX OCTETS: fe
+
040 TX OCTETS: fe
+
041 TX OCTETS: fe
+
042 TX OCTETS: fe
+
043 TX OCTETS: fe
+
044 TX OCTETS: fe
+
045 TX OCTETS: fe
+
046 TX OCTETS: fe
+
047 TX OCTETS: fe
+
048 TX OCTETS: fe
+
049 TX OCTETS: fe
+
050 TX OCTETS: fe
+
051 TX OCTETS: fe
+
052 TX OCTETS: fe
+
053 TX OCTETS: fe
+
054 TX OCTETS: fe
+
055 TX OCTETS: fe
+
056 TX OCTETS: fe
+
057 TX OCTETS: fe
+
058 TX OCTETS: fe
+
059 TX OCTETS: fe
+
060 TX OCTETS: fe
+
061 TX OCTETS: fe
+
062 TX OCTETS: fe
+
063 TX OCTETS: fe
+
064 TX OCTETS: fe
+
065 TX OCTETS: fe
+
066 TX OCTETS: fe
+
067 TX OCTETS: fe
+
068 TX OCTETS: fe
+
069 TX OCTETS: fe
+
070 TX OCTETS: fe
+
071 TX OCTETS: fe
+
072 TX OCTETS: fe
+
073 TX OCTETS: fe
+
074 TX OCTETS: fe
+
075 TX OCTETS: fe
+
076 TX OCTETS: fe
+
077 TX OCTETS: fe
+
078 TX OCTETS: fe
+
079 TX OCTETS: fe
+
080 TX OCTETS: fe
+
081 TX OCTETS: fe
+
082 TX OCTETS: fe
+
083 TX OCTETS: fe
+
084 TX OCTETS: fe
+
085 TX OCTETS: fe
+
086 TX OCTETS: fe
+
087 TX OCTETS: fe
+
088 TX OCTETS: fe
+
089 TX OCTETS: fe
+
090 TX OCTETS: fe
+
091 TX OCTETS: fe
+
092 TX OCTETS: fe
+
093 TX OCTETS: fe
+
094 TX OCTETS: fe
+
095 TX OCTETS: fe
+
096 TX OCTETS: fe
+
097 TX OCTETS: fe
+
098 TX OCTETS: fe
+
099 TX OCTETS: fe
+
100 TX OCTETS: fe
+
101 TX OCTETS: fe
+
102 TX OCTETS: fe
+
103 TX OCTETS: fe
+
104 TX OCTETS: fe
+
105 TX OCTETS: fe
+
106 TX OCTETS: fe
+
107 TX OCTETS: fe
+
108 TX OCTETS: fe
+
109 TX OCTETS: fe
+
110 TX OCTETS: fe
+
111 TX OCTETS: fe
+
112 TX OCTETS: fe
+
113 TX OCTETS: fe
+
114 TX OCTETS: fe
+
115 TX OCTETS: fe
+
116 TX OCTETS: fe
+
117 TX OCTETS: fe
+
118 TX OCTETS: fe
+
119 TX OCTETS: fe
+
120 TX OCTETS: fe
+
121 TX OCTETS: fe
+
122 TX OCTETS: fe
+
123 TX OCTETS: fe
+
124 TX OCTETS: fe
+
125 TX OCTETS: fe
+
126 TX OCTETS: fe
+
127 TX OCTETS: fe
+
128 TX OCTETS: fe
+
129 TX OCTETS: fe
+
130 TX OCTETS: fe
+
131 CLOSING CONNECTION
+
132 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
133 TX OCTETS: 8800
+
134 RX OCTETS: 88806b342ca2
+
135 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3662333432636132
+
136 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_6.json b/autobahn/client/hornbeam_case_2_6.json new file mode 100644 index 0000000..048b76b --- /dev/null +++ b/autobahn/client/hornbeam_case_2_6.json @@ -0,0 +1,1160 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 22, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 125 octets, send in octet-wise chops.", + "droppedByMe": true, + "duration": 2003, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=22&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DcA1OU4m1cAZjXEWecDtuw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IGGc7B6DozJE0Dw2ABEeABGvDAE=\r\n\r\n", + "id": "2.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:51.092Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "1": 127, + "2": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3232266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TI", + 2 + ], + [ + "TO", + [ + 1, + "7d" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "88806b342ca2" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "6b342ca2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_7.html b/autobahn/client/hornbeam_case_2_7.html new file mode 100644 index 0000000..2d1fb61 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_7.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.7 : Pass - 3 ms @ 2023-08-10T21:34:53.097Z

+

Case Description

Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=23&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: k9hZRgTq8LMYYNbFsjTeyA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3iSPcTDjJFI0jzdMThDt4gPL+30=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1831183
Total2191
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3233266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8a00
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 888217709e8e1498
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137373039653865
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_7.json b/autobahn/client/hornbeam_case_2_7.json new file mode 100644 index 0000000..9e30587 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_7.json @@ -0,0 +1,144 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 23, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.", + "droppedByMe": true, + "duration": 3, + "expectation": "Nothing.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=23&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: k9hZRgTq8LMYYNbFsjTeyA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3iSPcTDjJFI0jzdMThDt4gPL+30=\r\n\r\n", + "id": "2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:53.097Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "10": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3233266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8a00" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 8, + "888217709e8e1498" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "17709e8e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_8.html b/autobahn/client/hornbeam_case_2_8.html new file mode 100644 index 0000000..b3fc6cd --- /dev/null +++ b/autobahn/client/hornbeam_case_2_8.html @@ -0,0 +1,297 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.8 : Pass - 3 ms @ 2023-08-10T21:34:53.103Z

+

Case Description

Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=24&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CpEyXVX27jPVH6YCytoR5g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yubR+3HPQpXiYBilu0s4YmRzwR4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1831183
Total2191
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
26126
2061206
Total3236
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3234266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               unsolicited pong payload
+
003 TX OCTETS: 8a18756e736f6c69636974656420706f6e67207061796c6f6164
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 888247169f8f44fe
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3437313639663866
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_8.json b/autobahn/client/hornbeam_case_2_8.json new file mode 100644 index 0000000..b1f617d --- /dev/null +++ b/autobahn/client/hornbeam_case_2_8.json @@ -0,0 +1,144 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 24, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.", + "droppedByMe": true, + "duration": 3, + "expectation": "Nothing.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=24&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CpEyXVX27jPVH6YCytoR5g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yubR+3HPQpXiYBilu0s4YmRzwR4=\r\n\r\n", + "id": "2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:53.103Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "10": 1 + }, + "txOctetStats": { + "4": 1, + "26": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3234266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "unsolicited pong payload" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "8a18756e736f6c69636974656420706f6e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 8, + "888247169f8f44fe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "47169f8f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_2_9.html b/autobahn/client/hornbeam_case_2_9.html new file mode 100644 index 0000000..41e1b1f --- /dev/null +++ b/autobahn/client/hornbeam_case_2_9.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 2.9 : Fail - 1003 ms @ 2023-08-10T21:34:53.108Z

+

Case Description

Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.

+

Case Expectation

Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'ping payload')]}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=25&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: d6Fz5tXUtgzaqNpXlrj9lQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RoZ709KxSsD6veNx2bx/IdGQJ9Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
14114
26126
2061206
Total4248
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
81
91
101
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3235266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               unsolicited pong payload
+
003 TX OCTETS: 8a18756e736f6c69636974656420706f6e67207061796c6f6164
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ping payload
+
005 TX OCTETS: 890c70696e67207061796c6f6164
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 CLOSING CONNECTION
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
009 TX OCTETS: 8800
+
010 RX OCTETS: 88803a2ab7dd
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3361326162376464
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_2_9.json b/autobahn/client/hornbeam_case_2_9.json new file mode 100644 index 0000000..e1a02a7 --- /dev/null +++ b/autobahn/client/hornbeam_case_2_9.json @@ -0,0 +1,176 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 25, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=25&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: d6Fz5tXUtgzaqNpXlrj9lQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RoZ709KxSsD6veNx2bx/IdGQJ9Y=\r\n\r\n", + "id": "2.9", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:34:53.108Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1, + "10": 1 + }, + "txOctetStats": { + "2": 1, + "14": 1, + "26": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3235266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "unsolicited pong payload" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "8a18756e736f6c69636974656420706f6e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + false + ], + [ + "TI", + 1 + ], + [ + "TIE" + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "RO", + [ + 6, + "88803a2ab7dd" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "3a2ab7dd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_1.html b/autobahn/client/hornbeam_case_3_1.html new file mode 100644 index 0000000..74b2bc5 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.1 : Fail - 1002 ms @ 2023-08-10T21:35:00.124Z

+

Case Description

Send small text message with RSV = 1.

+

Case Expectation

The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=28&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: YqgNkj69EEVgGWrwmU/d3A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /Zh8XfVWYBfrEnsfL1FtLsEd5L0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
18236
1831183
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
15115
2061206
Total3235
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3238266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=1, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 910d48656c6c6f2c20776f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8dd346f2b89b239ed4bc6ad2cfbc349edcf2
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6433343666326238
+
               Hello, world!
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ca1234c13a2ca0b7cc84d2b33e0542d6a
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6131323334633133
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_1.json b/autobahn/client/hornbeam_case_3_1.json new file mode 100644 index 0000000..242d326 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_1.json @@ -0,0 +1,181 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 28, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send small text message with RSV = 1.", + "droppedByMe": true, + "duration": 1002, + "expectation": "The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=28&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: YqgNkj69EEVgGWrwmU/d3A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /Zh8XfVWYBfrEnsfL1FtLsEd5L0=\r\n\r\n", + "id": "3.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 2, + "183": 1 + }, + "started": "2023-08-10T21:35:00.124Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3238266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 1, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "910d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 18, + "8dd346f2b89b239ed4bc6ad2cfbc349edcf2" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "d346f2b8" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ca1234c13a2ca0b7cc84d2b33e0542d6a" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "a1234c13" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_2.html b/autobahn/client/hornbeam_case_3_2.html new file mode 100644 index 0000000..53e5ddc --- /dev/null +++ b/autobahn/client/hornbeam_case_3_2.html @@ -0,0 +1,314 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.2 : Fail - 1003 ms @ 2023-08-10T21:35:01.128Z

+

Case Description

Send small text message, then send again with RSV = 2, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False), ('message', u'Hello, world!', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=29&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: TF1XyW3Pz2T5tqUGE4Qn2Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: w5easVyCDxSPHhF9wVyfT8Ca6Vc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
37137
1831183
Total4239
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
14114
15230
2061206
Total5252
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
12
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3239266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=2, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: a10d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 81
+
010 RX OCTETS: 8d0c120c99447760f5633e2cee636060fd2d818dddcc68f495a90498b2e04883b2be0490fc
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3063313230633939
+
               Hello, world!
+
012 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6464636336386634
+
               Hello, world!
+
013 FAILING CONNECTION
+
014 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
015 TX OCTETS: 880c03e9476f696e672041776179
+
016 RX OCTETS: 888c53f4cde9501d8a863a9aaac91283ac90
+
017 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3533663463646539
+
               0x03e9476f696e672041776179
+
018 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_2.json b/autobahn/client/hornbeam_case_3_2.json new file mode 100644 index 0000000..9b2d800 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_2.json @@ -0,0 +1,252 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 29, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 2, then send Ping.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=29&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: TF1XyW3Pz2T5tqUGE4Qn2Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: w5easVyCDxSPHhF9wVyfT8Ca6Vc=\r\n\r\n", + "id": "3.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "Hello, world!", + false + ], + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 2, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "37": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:01.128Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "14": 1, + "15": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3239266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 2, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "a10d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 37, + "8d0c120c99447760f5633e2cee636060fd2d818dddcc68f495a90498b2e04883b2be0490fc" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "0c120c99" + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "ddcc68f4" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c53f4cde9501d8a863a9aaac91283ac90" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "53f4cde9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_3.html b/autobahn/client/hornbeam_case_3_3.html new file mode 100644 index 0000000..788ba10 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_3.html @@ -0,0 +1,314 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.3 : Fail - 1002 ms @ 2023-08-10T21:35:02.133Z

+

Case Description

Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False), ('message', u'Hello, world!', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=30&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 8gjTePJbHbHRcTw6bJbE9w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WLUK+R5JIm/apAZOOiJaoMSQJi8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
37137
1831183
Total4239
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
14114
15230
2061206
Total5252
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
12
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3330266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=3, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: b10d48656c6c6f2c20776f726c6421
+
008 TX OCTETS: 8900
+
009 RX OCTETS: 81
+
010 RX OCTETS: 8dbdee7e1af58b1276d2c25e6dd29c127e9c818d765789f13e32e59d197ba9861925e59557
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6264656537653161
+
               Hello, world!
+
012 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3736353738396631
+
               Hello, world!
+
013 FAILING CONNECTION
+
014 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
015 TX OCTETS: 880c03e9476f696e672041776179
+
016 RX OCTETS: 888cb673cf56b59a8839df1da876f704ae2f
+
017 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6236373363663536
+
               0x03e9476f696e672041776179
+
018 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_3.json b/autobahn/client/hornbeam_case_3_3.json new file mode 100644 index 0000000..c50d1c4 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_3.json @@ -0,0 +1,252 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 30, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.", + "droppedByMe": true, + "duration": 1002, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=30&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 8gjTePJbHbHRcTw6bJbE9w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WLUK+R5JIm/apAZOOiJaoMSQJi8=\r\n\r\n", + "id": "3.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "Hello, world!", + false + ], + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 2, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "37": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:02.133Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "14": 1, + "15": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3330266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 3, + null, + null, + null, + true + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "b10d48656c6c6f2c20776f726c6421" + ], + true + ], + [ + "TO", + [ + 2, + "8900" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 37, + "8dbdee7e1af58b1276d2c25e6dd29c127e9c818d765789f13e32e59d197ba9861925e59557" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "bdee7e1a" + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "765789f1" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cb673cf56b59a8839df1da876f704ae2f" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "b673cf56" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_4.html b/autobahn/client/hornbeam_case_3_4.html new file mode 100644 index 0000000..129561f --- /dev/null +++ b/autobahn/client/hornbeam_case_3_4.html @@ -0,0 +1,341 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.4 : Fail - 1003 ms @ 2023-08-10T21:35:03.137Z

+

Case Description

Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False), ('message', u'Hello, world!', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=31&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: dp7WZ5wnC4rHMJA/tgLGIA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aAmnsEzsNUfy3nF7aRQkEA8xrMU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
18118
19238
1831183
Total4239
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
13232
14114
2061206
Total34252
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
12
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3331266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=4, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: c1
+
022 TX OCTETS: 0d
+
023 TX OCTETS: 48
+
024 TX OCTETS: 65
+
025 RX OCTETS: 818dc37157f18b143b9dac5d7786ac033b95e2
+
026 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6333373135376631
+
               Hello, world!
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6c
+
029 TX OCTETS: 6f
+
030 TX OCTETS: 2c
+
031 TX OCTETS: 20
+
032 TX OCTETS: 77
+
033 TX OCTETS: 6f
+
034 TX OCTETS: 72
+
035 TX OCTETS: 6c
+
036 TX OCTETS: 64
+
037 TX OCTETS: 21
+
038 TX OCTETS: 89
+
039 TX OCTETS: 00
+
040 RX OCTETS: 818d6b2ff793234a9bff0403d7e4045d9bf74a
+
041 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3662326666373933
+
               Hello, world!
+
042 FAILING CONNECTION
+
043 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
044 TX OCTETS: 880c03e9476f696e672041776179
+
045 RX OCTETS: 888c8188e4608261a30fe8e68340c0ff8519
+
046 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3831383865343630
+
               0x03e9476f696e672041776179
+
047 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_4.json b/autobahn/client/hornbeam_case_3_4.json new file mode 100644 index 0000000..baf6660 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_4.json @@ -0,0 +1,482 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 31, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.", + "droppedByMe": true, + "duration": 1003, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=31&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: dp7WZ5wnC4rHMJA/tgLGIA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aAmnsEzsNUfy3nF7aRQkEA8xrMU=\r\n\r\n", + "id": "3.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "Hello, world!", + false + ], + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 2, + "8": 1 + }, + "rxOctetStats": { + "18": 1, + "19": 2, + "183": 1 + }, + "started": "2023-08-10T21:35:03.137Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "1": 32, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3331266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 4, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "c1" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "RO", + [ + 19, + "818dc37157f18b143b9dac5d7786ac033b95e2" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "c37157f1" + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "00" + ], + true + ], + [ + "RO", + [ + 19, + "818d6b2ff793234a9bff0403d7e4045d9bf74a" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "6b2ff793" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c8188e4608261a30fe8e68340c0ff8519" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "8188e460" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_5.html b/autobahn/client/hornbeam_case_3_5.html new file mode 100644 index 0000000..d09303b --- /dev/null +++ b/autobahn/client/hornbeam_case_3_5.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.5 : Pass - 44 ms @ 2023-08-10T21:35:04.142Z

+

Case Description

Send small binary message with RSV = 5.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=32&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 9ohr07Qn6Jkv6/ut8EcTuA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VhvsmDR99sZALI27wmyJWEpiEiM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonencountered invalid UTF-8 while processing text message at payload octet index 1The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
13113
1831183
Total3197
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
10110
84184
2061206
Total3300
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3332266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=5, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x00fffefdfcfb00ff
+
003 TX OCTETS: d20800fffefdfcfb00ff
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 88975aec3497a512c96ba1eccb
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=82, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ef656e636f756e746572656420696e76616c6964205554462d38207768696c652070726f63657373696e672074657874
+
               206d65737361676520617420706179 ...
+
008 TX OCTETS: 885203ef656e636f756e746572656420696e76616c6964205554462d38207768696c652070726f63657373696e6720746578
+
               74206d6573736167652061742070 ...
+
009 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3937356165633334
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_5.json b/autobahn/client/hornbeam_case_3_5.json new file mode 100644 index 0000000..f966525 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_5.json @@ -0,0 +1,152 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "FAILED", + "case": 32, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send small binary message with RSV = 5.", + "droppedByMe": true, + "duration": 44, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=32&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 9ohr07Qn6Jkv6/ut8EcTuA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VhvsmDR99sZALI27wmyJWEpiEiM=\r\n\r\n", + "id": "3.5", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": "encountered invalid UTF-8 while processing text message at payload octet index 1", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "13": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:04.142Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "10": 1, + "84": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3332266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0x00fffefdfcfb00ff" + ], + 2, + true, + 5, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "d20800fffefdfcfb00ff" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 13, + "88975aec3497a512c96ba1eccb" + ] + ], + [ + "TF", + [ + 82, + "0x03ef656e636f756e746572656420696e76616c6964205554462d38207768696c652070726f63657373696e672074657874206d65737361676520617420706179 ..." + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 84, + "885203ef656e636f756e746572656420696e76616c6964205554462d38207768696c652070726f63657373696e672074657874206d6573736167652061742070 ..." + ], + false + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "975aec34" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_6.html b/autobahn/client/hornbeam_case_3_6.html new file mode 100644 index 0000000..433d4ab --- /dev/null +++ b/autobahn/client/hornbeam_case_3_6.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.6 : Fail - 1003 ms @ 2023-08-10T21:35:04.189Z

+

Case Description

Send Ping with RSV = 6.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=33&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: RZzLsvFUxrEPiln/rPHU6Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1L2jKUaU3MFErrAUFw1xqVRembo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
18236
1831183
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
15115
2061206
Total3235
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3333266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=6, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: e20d48656c6c6f2c20776f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8dc660bfe08e05d38ca94c9f97a912d384e7
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6336363062666530
+
               Hello, world!
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cba213ad7b9c87db8d34f5df7fb565bae
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6261323133616437
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_6.json b/autobahn/client/hornbeam_case_3_6.json new file mode 100644 index 0000000..3031929 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_6.json @@ -0,0 +1,181 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 33, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send Ping with RSV = 6.", + "droppedByMe": true, + "duration": 1003, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=33&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: RZzLsvFUxrEPiln/rPHU6Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1L2jKUaU3MFErrAUFw1xqVRembo=\r\n\r\n", + "id": "3.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 2, + "183": 1 + }, + "started": "2023-08-10T21:35:04.189Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3333266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 2, + true, + 6, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "e20d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 18, + "8dc660bfe08e05d38ca94c9f97a912d384e7" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "c660bfe0" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cba213ad7b9c87db8d34f5df7fb565bae" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ba213ad7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_3_7.html b/autobahn/client/hornbeam_case_3_7.html new file mode 100644 index 0000000..3430c67 --- /dev/null +++ b/autobahn/client/hornbeam_case_3_7.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 3.7 : Pass - 3 ms @ 2023-08-10T21:35:05.194Z

+

Case Description

Send Close with RSV = 7.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=34&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CZDLv2QuYZH/hFwktO2kEA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: N+I+7rmN3soZJAZVf8TlVrki3hk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1831183
Total2189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
82
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3334266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=7, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: f800
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8880fd29fbf7
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=6664323966626637
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_3_7.json b/autobahn/client/hornbeam_case_3_7.json new file mode 100644 index 0000000..bb29bcf --- /dev/null +++ b/autobahn/client/hornbeam_case_3_7.json @@ -0,0 +1,143 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 34, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Close with RSV = 7.", + "droppedByMe": true, + "duration": 3, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=34&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CZDLv2QuYZH/hFwktO2kEA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: N+I+7rmN3soZJAZVf8TlVrki3hk=\r\n\r\n", + "id": "3.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.194Z", + "trafficStats": null, + "txFrameStats": { + "8": 2 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3334266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 7, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "f800" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 6, + "8880fd29fbf7" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "fd29fbf7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_1_1.html b/autobahn/client/hornbeam_case_4_1_1.html new file mode 100644 index 0000000..b297700 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_1.html @@ -0,0 +1,286 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.1.1 : Pass - 2 ms @ 2023-08-10T21:35:05.199Z

+

Case Description

Send frame with reserved non-control Opcode = 3.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=35&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: svks6Gtcfaz1a2Togfyemw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BDxi/D4ZQa9ec6HPSTymWdgPeh0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
31
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3335266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=3, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8300
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_1_1.json b/autobahn/client/hornbeam_case_4_1_1.json new file mode 100644 index 0000000..685a17d --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_1.json @@ -0,0 +1,98 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 35, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved non-control Opcode = 3.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=35&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: svks6Gtcfaz1a2Togfyemw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BDxi/D4ZQa9ec6HPSTymWdgPeh0=\r\n\r\n", + "id": "4.1.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.199Z", + "trafficStats": null, + "txFrameStats": { + "3": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3335266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 3, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8300" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_1_2.html b/autobahn/client/hornbeam_case_4_1_2.html new file mode 100644 index 0000000..616133d --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_2.html @@ -0,0 +1,287 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.1.2 : Pass - 2 ms @ 2023-08-10T21:35:05.205Z

+

Case Description

Send frame with reserved non-control Opcode = 4 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=36&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: c/E5teCd22avk2hafenpqA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UMxp3lzEfRYRiKcTI3RDNDFQxEQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
25125
2061206
Total2231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
41
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3336266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=4, FIN=True, RSV=0, PAYLOAD-LEN=23, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               reserved opcode payload
+
003 TX OCTETS: 84177265736572766564206f70636f6465207061796c6f6164
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_1_2.json b/autobahn/client/hornbeam_case_4_1_2.json new file mode 100644 index 0000000..b278a2f --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_2.json @@ -0,0 +1,98 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 36, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved non-control Opcode = 4 and non-empty payload.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=36&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: c/E5teCd22avk2hafenpqA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UMxp3lzEfRYRiKcTI3RDNDFQxEQ=\r\n\r\n", + "id": "4.1.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.205Z", + "trafficStats": null, + "txFrameStats": { + "4": 1 + }, + "txOctetStats": { + "25": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3336266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 23, + "reserved opcode payload" + ], + 4, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 25, + "84177265736572766564206f70636f6465207061796c6f6164" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_1_3.html b/autobahn/client/hornbeam_case_4_1_3.html new file mode 100644 index 0000000..b645bb1 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_3.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.1.3 : Pass - 2 ms @ 2023-08-10T21:35:05.209Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=37&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: w+fAy01nPSrtcRfYnTrRVA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: KyK+SWnzaxPPEd7OoGDLA6jrCr8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
1831183
Total2202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
224
15115
2061206
Total4225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
51
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3337266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=5, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8500
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818dce08f567866d990ba124d510a17a9903ef
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6365303866353637
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_1_3.json b/autobahn/client/hornbeam_case_4_1_3.json new file mode 100644 index 0000000..4432c83 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_3.json @@ -0,0 +1,180 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 37, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.", + "droppedByMe": false, + "duration": 2, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=37&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: w+fAy01nPSrtcRfYnTrRVA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: KyK+SWnzaxPPEd7OoGDLA6jrCr8=\r\n\r\n", + "id": "4.1.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.209Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "5": 1, + "9": 1 + }, + "txOctetStats": { + "2": 2, + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3337266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 5, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8500" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818dce08f567866d990ba124d510a17a9903ef" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "ce08f567" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_1_4.html b/autobahn/client/hornbeam_case_4_1_4.html new file mode 100644 index 0000000..83570f5 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_4.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.1.4 : Pass - 3 ms @ 2023-08-10T21:35:05.213Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=38&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: H2Iup27g/uO87gswLW7L5w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WUAuTdZcoVR+C8AX2ZdMyZ5dlgI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
1831183
Total2202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
61
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3338266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=6, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 860d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818ddc20d0529445bc3eb30cf025b352bc36fd
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6463323064303532
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_1_4.json b/autobahn/client/hornbeam_case_4_1_4.json new file mode 100644 index 0000000..f9196d0 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_4.json @@ -0,0 +1,180 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 38, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 3, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=38&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: H2Iup27g/uO87gswLW7L5w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WUAuTdZcoVR+C8AX2ZdMyZ5dlgI=\r\n\r\n", + "id": "4.1.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.213Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "6": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3338266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 6, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "860d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818ddc20d0529445bc3eb30cf025b352bc36fd" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "dc20d052" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_1_5.html b/autobahn/client/hornbeam_case_4_1_5.html new file mode 100644 index 0000000..44f4cb0 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_5.html @@ -0,0 +1,317 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.1.5 : Pass - 7 ms @ 2023-08-10T21:35:05.218Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=39&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Pe6K4fXcdMVElcNFENckLw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: gsMylNBTCZwL2nGdnFLPieMhE+s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
18118
1831183
Total3202
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11919
2061206
Total20225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
71
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3339266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=7, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: 87
+
022 RX OCTETS: 81
+
023 TX OCTETS: 0d
+
024 RX OCTETS: 8d88584877c03d241be7746800e72a2413a9
+
025 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3838353834383737
+
               Hello, world!
+
026 TX OCTETS: 48
+
027 TX OCTETS: 65
+
028 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_1_5.json b/autobahn/client/hornbeam_case_4_1_5.json new file mode 100644 index 0000000..08b6b12 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_1_5.json @@ -0,0 +1,315 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 39, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 7, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=39&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Pe6K4fXcdMVElcNFENckLw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: gsMylNBTCZwL2nGdnFLPieMhE+s=\r\n\r\n", + "id": "4.1.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.218Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "7": 1, + "9": 1 + }, + "txOctetStats": { + "1": 19, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3339266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 7, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "87" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "RO", + [ + 18, + "8d88584877c03d241be7746800e72a2413a9" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "88584877" + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_2_1.html b/autobahn/client/hornbeam_case_4_2_1.html new file mode 100644 index 0000000..a245b29 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_1.html @@ -0,0 +1,286 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.2.1 : Pass - 1 ms @ 2023-08-10T21:35:05.226Z

+

Case Description

Send frame with reserved control Opcode = 11.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=40&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: TnK86ikI/IYj5wEKeR1vlg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EILsN2EhenOURYhvhnSjAzJaqIM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
111
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3430266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=11, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8b00
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_2_1.json b/autobahn/client/hornbeam_case_4_2_1.json new file mode 100644 index 0000000..5cb696f --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_1.json @@ -0,0 +1,98 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 40, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved control Opcode = 11.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=40&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: TnK86ikI/IYj5wEKeR1vlg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EILsN2EhenOURYhvhnSjAzJaqIM=\r\n\r\n", + "id": "4.2.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.226Z", + "trafficStats": null, + "txFrameStats": { + "11": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3430266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 11, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8b00" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_2_2.html b/autobahn/client/hornbeam_case_4_2_2.html new file mode 100644 index 0000000..93e9c94 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_2.html @@ -0,0 +1,287 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.2.2 : Pass - 1 ms @ 2023-08-10T21:35:05.229Z

+

Case Description

Send frame with reserved control Opcode = 12 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=41&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ZDW2zsi0iTuX88ZZzv0abQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 39Lmrwo+GXyKpcWH+FfG2eGFtlE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
25125
2061206
Total2231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
121
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3431266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=12, FIN=True, RSV=0, PAYLOAD-LEN=23, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               reserved opcode payload
+
003 TX OCTETS: 8c177265736572766564206f70636f6465207061796c6f6164
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_2_2.json b/autobahn/client/hornbeam_case_4_2_2.json new file mode 100644 index 0000000..493feae --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_2.json @@ -0,0 +1,98 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 41, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved control Opcode = 12 and non-empty payload.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=41&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ZDW2zsi0iTuX88ZZzv0abQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 39Lmrwo+GXyKpcWH+FfG2eGFtlE=\r\n\r\n", + "id": "4.2.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.229Z", + "trafficStats": null, + "txFrameStats": { + "12": 1 + }, + "txOctetStats": { + "25": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3431266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 23, + "reserved opcode payload" + ], + 12, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 25, + "8c177265736572766564206f70636f6465207061796c6f6164" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_2_3.html b/autobahn/client/hornbeam_case_4_2_3.html new file mode 100644 index 0000000..0a28c5b --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_3.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.2.3 : Pass - 1 ms @ 2023-08-10T21:35:05.231Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 13, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=42&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: BCFPNZN/In/JQcXsqju6Lg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mXoDmCQsQz25V0XOihwZSGbe92Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
1831183
Total2202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
224
15115
2061206
Total4225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
131
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3432266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=13, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8d00
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818dfe4ceb32b629875e9160cb45913e8756df
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6665346365623332
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_2_3.json b/autobahn/client/hornbeam_case_4_2_3.json new file mode 100644 index 0000000..9208b2d --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_3.json @@ -0,0 +1,180 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 42, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 13, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=42&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: BCFPNZN/In/JQcXsqju6Lg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mXoDmCQsQz25V0XOihwZSGbe92Y=\r\n\r\n", + "id": "4.2.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.231Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "13": 1 + }, + "txOctetStats": { + "2": 2, + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3432266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 13, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8d00" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818dfe4ceb32b629875e9160cb45913e8756df" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "fe4ceb32" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_2_4.html b/autobahn/client/hornbeam_case_4_2_4.html new file mode 100644 index 0000000..69a99d1 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_4.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.2.4 : Pass - 2 ms @ 2023-08-10T21:35:05.233Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=43&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: AadrbgfT47BDZov8x/IBQQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: d2bL6N2Y59ocglQ0GgsY0bPPb1M=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
1831183
Total2202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
141
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3433266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=14, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 8e0d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818df93d2edfb15842b396110ea8964f42bbd8
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6639336432656466
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_2_4.json b/autobahn/client/hornbeam_case_4_2_4.json new file mode 100644 index 0000000..b377120 --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_4.json @@ -0,0 +1,180 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 43, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 2, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=43&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: AadrbgfT47BDZov8x/IBQQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: d2bL6N2Y59ocglQ0GgsY0bPPb1M=\r\n\r\n", + "id": "4.2.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.233Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "14": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3433266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 14, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "8e0d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818df93d2edfb15842b396110ea8964f42bbd8" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "f93d2edf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_4_2_5.html b/autobahn/client/hornbeam_case_4_2_5.html new file mode 100644 index 0000000..98ff4ec --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_5.html @@ -0,0 +1,318 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 4.2.5 : Pass - 2 ms @ 2023-08-10T21:35:05.236Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=44&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 0EziuaAzyfZIG6rBvywqMA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sNYEKUFFR+HT+DV8+L5PrmzKpmE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
18118
1831183
Total3202
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12020
2061206
Total21226
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
151
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3434266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=15, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: 8f
+
022 TX OCTETS: 0d
+
023 TX OCTETS: 48
+
024 RX OCTETS: 81
+
025 TX OCTETS: 65
+
026 RX OCTETS: 8d1fe05f045785336870cc7f73709233603e
+
027 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3166653035663034
+
               Hello, world!
+
028 TX OCTETS: 6c
+
029 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_4_2_5.json b/autobahn/client/hornbeam_case_4_2_5.json new file mode 100644 index 0000000..1e9446b --- /dev/null +++ b/autobahn/client/hornbeam_case_4_2_5.json @@ -0,0 +1,323 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 44, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 2, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=44&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 0EziuaAzyfZIG6rBvywqMA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sNYEKUFFR+HT+DV8+L5PrmzKpmE=\r\n\r\n", + "id": "4.2.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.236Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "15": 1 + }, + "txOctetStats": { + "1": 20, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3434266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 15, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "8f" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "RO", + [ + 18, + "8d1fe05f045785336870cc7f73709233603e" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "1fe05f04" + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_1.html b/autobahn/client/hornbeam_case_5_1.html new file mode 100644 index 0000000..29cbb76 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_1.html @@ -0,0 +1,291 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.1 : Pass - 1 ms @ 2023-08-10T21:35:05.239Z

+

Case Description

Send Ping fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=45&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: QVBlPXz72YbdDCkBgeetWA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XJCz+WUoaygpddANMI5shPj4fgo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3435266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0909667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_1.json b/autobahn/client/hornbeam_case_5_1.json new file mode 100644 index 0000000..4e0d603 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_1.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 45, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Ping fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "Connection is failed immediately, since control message MUST NOT be fragmented.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=45&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: QVBlPXz72YbdDCkBgeetWA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XJCz+WUoaygpddANMI5shPj4fgo=\r\n\r\n", + "id": "5.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.239Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "9": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3435266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 9, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0909667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_10.html b/autobahn/client/hornbeam_case_5_10.html new file mode 100644 index 0000000..9517e29 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_10.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.10 : Pass - 1 ms @ 2023-08-10T21:35:05.273Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=54&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 4/jVl7xj5m/V4HZrt89R8Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ovZ+iK0w71hD/T62BUhcy3LMxp8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3534266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               non-continuation payload
+
003 TX OCTETS: 80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_10.json b/autobahn/client/hornbeam_case_5_10.json new file mode 100644 index 0000000..6ed843a --- /dev/null +++ b/autobahn/client/hornbeam_case_5_10.json @@ -0,0 +1,122 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 54, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=54&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 4/jVl7xj5m/V4HZrt89R8Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ovZ+iK0w71hD/T62BUhcy3LMxp8=\r\n\r\n", + "id": "5.10", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.273Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3534266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 26, + "80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_11.html b/autobahn/client/hornbeam_case_5_11.html new file mode 100644 index 0000000..4d703c8 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_11.html @@ -0,0 +1,320 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.11 : Pass - 2 ms @ 2023-08-10T21:35:05.276Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=55&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: dvMm42Nksb9kmcdtMKSi1A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LGq7tLjXYs2VgaH40TODLDkcekI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
13131
2061206
Total32237
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3535266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 80
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 18
+
007 TX OCTETS: 6e
+
008 TX OCTETS: 6f
+
009 TX OCTETS: 6e
+
010 TX OCTETS: 2d
+
011 TX OCTETS: 63
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 69
+
016 TX OCTETS: 6e
+
017 TX OCTETS: 75
+
018 TX OCTETS: 61
+
019 TX OCTETS: 74
+
020 TX OCTETS: 69
+
021 TX OCTETS: 6f
+
022 TX OCTETS: 6e
+
023 TX OCTETS: 20
+
024 TX OCTETS: 70
+
025 TX OCTETS: 61
+
026 TX OCTETS: 79
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6f
+
029 TX OCTETS: 61
+
030 TX OCTETS: 64
+
031 TX OCTETS: 81
+
032 TX OCTETS: 0d
+
033 TX OCTETS: 48
+
034 TX OCTETS: 65
+
035 TX OCTETS: 6c
+
036 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_11.json b/autobahn/client/hornbeam_case_5_11.json new file mode 100644 index 0000000..dbefe05 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_11.json @@ -0,0 +1,353 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 55, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=55&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: dvMm42Nksb9kmcdtMKSi1A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LGq7tLjXYs2VgaH40TODLDkcekI=\r\n\r\n", + "id": "5.11", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.276Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "1": 31, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3535266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "18" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "63" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "75" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_12.html b/autobahn/client/hornbeam_case_5_12.html new file mode 100644 index 0000000..08532a9 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_12.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.12 : Pass - 4 ms @ 2023-08-10T21:35:05.280Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=56&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 9v3N9QEKGhJsNLxMFlJo+A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IdeJ4TJXQw4HFVdE86Qwn2D/1So=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3536266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_12.json b/autobahn/client/hornbeam_case_5_12.json new file mode 100644 index 0000000..e0dc769 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_12.json @@ -0,0 +1,122 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 56, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.", + "droppedByMe": false, + "duration": 4, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=56&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 9v3N9QEKGhJsNLxMFlJo+A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IdeJ4TJXQw4HFVdE86Qwn2D/1So=\r\n\r\n", + "id": "5.12", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.280Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3536266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_13.html b/autobahn/client/hornbeam_case_5_13.html new file mode 100644 index 0000000..b6c03d1 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_13.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.13 : Pass - 1 ms @ 2023-08-10T21:35:05.286Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=57&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: zPqLO+0d5p3sHzDbcCqTfA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: luj4vDPupPEdUpGDkXw9uAJWqd4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3537266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               non-continuation payload
+
003 TX OCTETS: 00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_13.json b/autobahn/client/hornbeam_case_5_13.json new file mode 100644 index 0000000..adf4add --- /dev/null +++ b/autobahn/client/hornbeam_case_5_13.json @@ -0,0 +1,122 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 57, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=57&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: zPqLO+0d5p3sHzDbcCqTfA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: luj4vDPupPEdUpGDkXw9uAJWqd4=\r\n\r\n", + "id": "5.13", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.286Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3537266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 26, + "00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_14.html b/autobahn/client/hornbeam_case_5_14.html new file mode 100644 index 0000000..099a1fe --- /dev/null +++ b/autobahn/client/hornbeam_case_5_14.html @@ -0,0 +1,318 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.14 : Pass - 2 ms @ 2023-08-10T21:35:05.288Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=58&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: iCpqLbjHkwPCEMgudsqS8Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PwB5oOMi5HN3LmtfswrZViWchZQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12929
2061206
Total30235
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3538266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 00
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 18
+
007 TX OCTETS: 6e
+
008 TX OCTETS: 6f
+
009 TX OCTETS: 6e
+
010 TX OCTETS: 2d
+
011 TX OCTETS: 63
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 69
+
016 TX OCTETS: 6e
+
017 TX OCTETS: 75
+
018 TX OCTETS: 61
+
019 TX OCTETS: 74
+
020 TX OCTETS: 69
+
021 TX OCTETS: 6f
+
022 TX OCTETS: 6e
+
023 TX OCTETS: 20
+
024 TX OCTETS: 70
+
025 TX OCTETS: 61
+
026 TX OCTETS: 79
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6f
+
029 TX OCTETS: 61
+
030 TX OCTETS: 64
+
031 TX OCTETS: 81
+
032 TX OCTETS: 0d
+
033 TX OCTETS: 48
+
034 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_14.json b/autobahn/client/hornbeam_case_5_14.json new file mode 100644 index 0000000..2aef102 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_14.json @@ -0,0 +1,337 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 58, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=58&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: iCpqLbjHkwPCEMgudsqS8Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PwB5oOMi5HN3LmtfswrZViWchZQ=\r\n\r\n", + "id": "5.14", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.288Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "1": 29, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3538266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "00" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "18" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "63" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "75" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_15.html b/autobahn/client/hornbeam_case_5_15.html new file mode 100644 index 0000000..8c95860 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_15.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.15 : Fail - 2 ms @ 2023-08-10T21:35:05.293Z

+

Case Description

Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=59&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: y+F9MKWDZwCl0HIKH78pKg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: f0fadNuVRXMvOPIiXk4K2cft2os=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11444
2061206
Total5250
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
02
12
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3539266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 0009667261676d656e7433
+
008 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment4
+
009 TX OCTETS: 8109667261676d656e7434
+
010 FAIL CONNECTION AFTER 1.000000 sec
+
011 RX OCTETS: 81
+
012 RX OCTETS: 897c2cad361a5ecc511149c3424d
+
013 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3763326361643336
+
               fragment1
+
014 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_15.json b/autobahn/client/hornbeam_case_5_15.json new file mode 100644 index 0000000..0e4a32e --- /dev/null +++ b/autobahn/client/hornbeam_case_5_15.json @@ -0,0 +1,208 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 59, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=59&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: y+F9MKWDZwCl0HIKH78pKg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: f0fadNuVRXMvOPIiXk4K2cft2os=\r\n\r\n", + "id": "5.15", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.293Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 2 + }, + "txOctetStats": { + "11": 4, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3539266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment4" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109667261676d656e7434" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "897c2cad361a5ecc511149c3424d" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "7c2cad36" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_16.html b/autobahn/client/hornbeam_case_5_16.html new file mode 100644 index 0000000..3f4ebcd --- /dev/null +++ b/autobahn/client/hornbeam_case_5_16.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.16 : Pass - 1 ms @ 2023-08-10T21:35:05.295Z

+

Case Description

Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=60&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: zJ0l7LM3062uLXpKtuF4/A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PCcKhTCN0ZU9qPMhB0JrlD6TKiU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11666
2061206
Total7272
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
04
12
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3630266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0009667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0109667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 8009667261676d656e7433
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
009 TX OCTETS: 0009667261676d656e7431
+
010 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
011 TX OCTETS: 0109667261676d656e7432
+
012 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
013 TX OCTETS: 8009667261676d656e7433
+
014 FAIL CONNECTION AFTER 1.000000 sec
+
015 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_16.json b/autobahn/client/hornbeam_case_5_16.json new file mode 100644 index 0000000..4eebdef --- /dev/null +++ b/autobahn/client/hornbeam_case_5_16.json @@ -0,0 +1,209 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 60, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=60&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: zJ0l7LM3062uLXpKtuF4/A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PCcKhTCN0ZU9qPMhB0JrlD6TKiU=\r\n\r\n", + "id": "5.16", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.295Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 2 + }, + "txOctetStats": { + "11": 6, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3630266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_17.html b/autobahn/client/hornbeam_case_5_17.html new file mode 100644 index 0000000..e1e4438 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_17.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.17 : Pass - 1 ms @ 2023-08-10T21:35:05.298Z

+

Case Description

Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=61&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: wGU51YvLjhH9MrFaQHGFfw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7DWYl6VCZkse3i8pegyyDB/kIn0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11666
2061206
Total7272
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
04
12
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3631266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 8009667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0109667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 8009667261676d656e7433
+
008 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
009 TX OCTETS: 8009667261676d656e7431
+
010 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
011 TX OCTETS: 0109667261676d656e7432
+
012 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
013 TX OCTETS: 8009667261676d656e7433
+
014 FAIL CONNECTION AFTER 1.000000 sec
+
015 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_17.json b/autobahn/client/hornbeam_case_5_17.json new file mode 100644 index 0000000..6af2800 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_17.json @@ -0,0 +1,209 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 61, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=61&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: wGU51YvLjhH9MrFaQHGFfw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7DWYl6VCZkse3i8pegyyDB/kIn0=\r\n\r\n", + "id": "5.17", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.298Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 2 + }, + "txOctetStats": { + "11": 6, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3631266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_18.html b/autobahn/client/hornbeam_case_5_18.html new file mode 100644 index 0000000..74a3edb --- /dev/null +++ b/autobahn/client/hornbeam_case_5_18.html @@ -0,0 +1,310 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.18 : Fail - 1003 ms @ 2023-08-10T21:35:05.301Z

+

Case Description

Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.

+

Case Expectation

The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'fragment1', False), ('message', u'fragment2', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=62&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 772EjRxSyNGZwXRbYydBZg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zwckq1sqZ/RK5p3onAoZ676d1bs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
29129
1831183
Total4231
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
11222
14114
2061206
Total4242
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3632266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8109667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 81
+
008 RX OCTETS: 89de6d7655b81f1732b3081821ef8189b35bfcf0d5299d97de3e928481
+
009 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6465366437363535
+
               fragment1
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6233356266636630
+
               fragment2
+
011 FAILING CONNECTION
+
012 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
013 TX OCTETS: 880c03e9476f696e672041776179
+
014 RX OCTETS: 888c9044701893ad3777f92a1738d1331161
+
015 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3930343437303138
+
               0x03e9476f696e672041776179
+
016 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_18.json b/autobahn/client/hornbeam_case_5_18.json new file mode 100644 index 0000000..5f56d61 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_18.json @@ -0,0 +1,221 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 62, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.", + "droppedByMe": true, + "duration": 1003, + "expectation": "The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=62&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 772EjRxSyNGZwXRbYydBZg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zwckq1sqZ/RK5p3onAoZ676d1bs=\r\n\r\n", + "id": "5.18", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "fragment1", + false + ], + [ + "message", + "fragment2", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 2, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "29": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.301Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1 + }, + "txOctetStats": { + "11": 2, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3632266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 29, + "89de6d7655b81f1732b3081821ef8189b35bfcf0d5299d97de3e928481" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "de6d7655" + ], + [ + "RF", + [ + 9, + "fragment2" + ], + 1, + true, + 0, + true, + "b35bfcf0" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c9044701893ad3777f92a1738d1331161" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "90447018" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_19.html b/autobahn/client/hornbeam_case_5_19.html new file mode 100644 index 0000000..d8aed01 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_19.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.19 : Fail - 3 ms @ 2023-08-10T21:35:06.307Z

+

Case Description

A fragmented text message is sent in multiple frames. After + sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s, + then we send 2 more text fragments, another Ping and then the final text fragment. + Everything is legal.

+

Case Expectation

The peer immediately answers the first Ping before + it has received the last text message fragment. The peer pong's back the Ping's + payload exactly, and echo's the payload of the fragmented message back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=63&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: lE4MKWYqZ/141sAC/vfzFA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: E59Rf2hwPndGs41abYrcdguNOUw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11333
2061206
Total4239
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3633266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0009667261676d656e7432
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               pongme 1!
+
007 TX OCTETS: 8909706f6e676d65203121
+
008 DELAY 1.000000 sec for TAG None
+
009 RX OCTETS: 81
+
010 RX OCTETS: 8939b2e50c5fc0846b54d78b7808
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3339623265353063
+
               fragment1
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_19.json b/autobahn/client/hornbeam_case_5_19.json new file mode 100644 index 0000000..36701fc --- /dev/null +++ b/autobahn/client/hornbeam_case_5_19.json @@ -0,0 +1,195 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 63, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "A fragmented text message is sent in multiple frames. After\n sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s,\n then we send 2 more text fragments, another Ping and then the final text fragment.\n Everything is legal.", + "droppedByMe": false, + "duration": 3, + "expectation": "The peer immediately answers the first Ping before\n it has received the last text message fragment. The peer pong's back the Ping's\n payload exactly, and echo's the payload of the fragmented message back to us.", + "expected": { + "OK": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=63&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: lE4MKWYqZ/141sAC/vfzFA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: E59Rf2hwPndGs41abYrcdguNOUw=\r\n\r\n", + "id": "5.19", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.307Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "9": 1 + }, + "txOctetStats": { + "11": 3, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3633266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "pongme 1!" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203121" + ], + false + ], + [ + "CT", + 1, + null + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8939b2e50c5fc0846b54d78b7808" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "39b2e50c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_2.html b/autobahn/client/hornbeam_case_5_2.html new file mode 100644 index 0000000..ee6922f --- /dev/null +++ b/autobahn/client/hornbeam_case_5_2.html @@ -0,0 +1,291 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.2 : Pass - 2 ms @ 2023-08-10T21:35:05.242Z

+

Case Description

Send Pong fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=46&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: RF77UDsDBmCOZscEdhL2Ag==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wo8Jfl62sCavxiu+tqJfGNq4+7M=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3436266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0a09667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_2.json b/autobahn/client/hornbeam_case_5_2.json new file mode 100644 index 0000000..2bad7b7 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_2.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 46, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Pong fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 2, + "expectation": "Connection is failed immediately, since control message MUST NOT be fragmented.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=46&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: RF77UDsDBmCOZscEdhL2Ag==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wo8Jfl62sCavxiu+tqJfGNq4+7M=\r\n\r\n", + "id": "5.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.242Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "10": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3436266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 10, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0a09667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_20.html b/autobahn/client/hornbeam_case_5_20.html new file mode 100644 index 0000000..a232d3b --- /dev/null +++ b/autobahn/client/hornbeam_case_5_20.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.20 : Fail - 2 ms @ 2023-08-10T21:35:06.312Z

+

Case Description

Same as Case 5.19, but send all frames with SYNC = True. + Note, this does not change the octets sent in any way, only how the stream + is chopped up on the wire.

+

Case Expectation

Same as Case 5.19. Implementations must be agnostic to how + octet stream is chopped up on wire (must be TCP clean).

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)]}

+ Observed:
[] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=64&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +4se/18MOLuuKeKThOii0A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bXy5WU3CTi/9l8seKog21COFKjA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
111
1831183
Total2184
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11333
2061206
Total4239
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3634266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               pongme 1!
+
006 DELAY 1.000000 sec for TAG None
+
007 TX OCTETS: 0009667261676d656e7432
+
008 TX OCTETS: 8909706f6e676d65203121
+
009 RX OCTETS: 81
+
010 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_20.json b/autobahn/client/hornbeam_case_5_20.json new file mode 100644 index 0000000..c98859e --- /dev/null +++ b/autobahn/client/hornbeam_case_5_20.json @@ -0,0 +1,167 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 64, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 5.19, but send all frames with SYNC = True.\n Note, this does not change the octets sent in any way, only how the stream\n is chopped up on the wire.", + "droppedByMe": false, + "duration": 2, + "expectation": "Same as Case 5.19. Implementations must be agnostic to how\n octet stream is chopped up on wire (must be TCP clean).", + "expected": { + "OK": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=64&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +4se/18MOLuuKeKThOii0A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bXy5WU3CTi/9l8seKog21COFKjA=\r\n\r\n", + "id": "5.20", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": {}, + "rxOctetStats": { + "1": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.312Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "9": 1 + }, + "txOctetStats": { + "11": 3, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3634266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "pongme 1!" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "CT", + 1, + null + ], + [ + "TO", + [ + 11, + "0009667261676d656e7432" + ], + true + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203121" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_3.html b/autobahn/client/hornbeam_case_5_3.html new file mode 100644 index 0000000..bcc50f9 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_3.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.3 : Fail - 1 ms @ 2023-08-10T21:35:05.246Z

+

Case Description

Send text Message fragmented into 2 fragments.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=47&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: NMad3XzkDOtgeZVCUTlIVA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: W4VEfI9hYFbSvuP5+s2ShCpFr0I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3437266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 81
+
008 RX OCTETS: 8958aac7e63ed8a68135cfa99269
+
009 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3538616163376536
+
               fragment1
+
010 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_3.json b/autobahn/client/hornbeam_case_5_3.json new file mode 100644 index 0000000..bde57fe --- /dev/null +++ b/autobahn/client/hornbeam_case_5_3.json @@ -0,0 +1,163 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 47, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=47&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: NMad3XzkDOtgeZVCUTlIVA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: W4VEfI9hYFbSvuP5+s2ShCpFr0I=\r\n\r\n", + "id": "5.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.246Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3437266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8958aac7e63ed8a68135cfa99269" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "58aac7e6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_4.html b/autobahn/client/hornbeam_case_5_4.html new file mode 100644 index 0000000..827f3fc --- /dev/null +++ b/autobahn/client/hornbeam_case_5_4.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.4 : Fail - 2 ms @ 2023-08-10T21:35:05.249Z

+

Case Description

Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=48&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jlwc35PgV0cR8w6CfzJ6VA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LLBGsjU7OU2FMATbbu20o2mkEm0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
15115
1831183
Total2198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3438266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
005 CLOSE CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 8009667261676d656e7432
+
007 RX OCTETS: 8189af9bcdb5c9e9acd2c2fea3c19e
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6166396263646235
+
               fragment1
+
009 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_4.json b/autobahn/client/hornbeam_case_5_4.json new file mode 100644 index 0000000..9ccd086 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_4.json @@ -0,0 +1,155 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 48, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=48&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jlwc35PgV0cR8w6CfzJ6VA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LLBGsjU7OU2FMATbbu20o2mkEm0=\r\n\r\n", + "id": "5.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "15": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.249Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3438266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + true + ], + [ + "RO", + [ + 15, + "8189af9bcdb5c9e9acd2c2fea3c19e" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "af9bcdb5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_5.html b/autobahn/client/hornbeam_case_5_5.html new file mode 100644 index 0000000..e1b768c --- /dev/null +++ b/autobahn/client/hornbeam_case_5_5.html @@ -0,0 +1,318 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.5 : Fail - 3 ms @ 2023-08-10T21:35:05.256Z

+

Case Description

Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=49&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: pGZL0Kt3SQxzygkjhyD/pg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FP1REXVCCgVc9Ij1k7W05E64J1M=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12222
2061206
Total23228
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3439266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment1
+
003 TX OCTETS: 01
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment2
+
005 CLOSE CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 09
+
007 TX OCTETS: 66
+
008 TX OCTETS: 72
+
009 TX OCTETS: 61
+
010 TX OCTETS: 67
+
011 TX OCTETS: 6d
+
012 TX OCTETS: 65
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 31
+
016 TX OCTETS: 80
+
017 TX OCTETS: 09
+
018 TX OCTETS: 66
+
019 TX OCTETS: 72
+
020 RX OCTETS: 81
+
021 TX OCTETS: 61
+
022 RX OCTETS: 8926dbaa8040a9cbe74bbec4f417
+
023 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3236646261613830
+
               fragment1
+
024 TX OCTETS: 67
+
025 TX OCTETS: 6d
+
026 TX OCTETS: 65
+
027 TX OCTETS: 6e
+
028 TX OCTETS: 74
+
029 TX OCTETS: 32
+
030 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_5.json b/autobahn/client/hornbeam_case_5_5.json new file mode 100644 index 0000000..329f5ed --- /dev/null +++ b/autobahn/client/hornbeam_case_5_5.json @@ -0,0 +1,323 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 49, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.", + "droppedByMe": false, + "duration": 3, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=49&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: pGZL0Kt3SQxzygkjhyD/pg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FP1REXVCCgVc9Ij1k7W05E64J1M=\r\n\r\n", + "id": "5.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.256Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "1": 22, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3439266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "01" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "RO", + [ + 14, + "8926dbaa8040a9cbe74bbec4f417" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "26dbaa80" + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_6.html b/autobahn/client/hornbeam_case_5_6.html new file mode 100644 index 0000000..2b6940b --- /dev/null +++ b/autobahn/client/hornbeam_case_5_6.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.6 : Fail - 2 ms @ 2023-08-10T21:35:05.261Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=50&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: U+49PIxE9Q1Xd2j5GdioEw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Neir5aFA9m6y4Tz8cT2uPy3kOss=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
11222
14114
2061206
Total4242
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3530266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ping payload
+
005 TX OCTETS: 890c70696e67207061796c6f6164
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
007 TX OCTETS: 8009667261676d656e7432
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 81
+
010 RX OCTETS: 89da959b39bce7fa5eb7f0f54deb
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6461393539623339
+
               fragment1
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_6.json b/autobahn/client/hornbeam_case_5_6.json new file mode 100644 index 0000000..6e2d291 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_6.json @@ -0,0 +1,191 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 50, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between.", + "droppedByMe": false, + "duration": 2, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=50&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: U+49PIxE9Q1Xd2j5GdioEw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Neir5aFA9m6y4Tz8cT2uPy3kOss=\r\n\r\n", + "id": "5.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.261Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "9": 1 + }, + "txOctetStats": { + "11": 2, + "14": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3530266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89da959b39bce7fa5eb7f0f54deb" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "da959b39" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_7.html b/autobahn/client/hornbeam_case_5_7.html new file mode 100644 index 0000000..edf4564 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_7.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.7 : Fail - 2 ms @ 2023-08-10T21:35:05.264Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=51&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: K+eTPiJDNook4ulgvG2AZQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Xm8y2OcMPAb2IPTOAWsBwSCC7UU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
11222
14114
2061206
Total4242
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3531266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               ping payload
+
005 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 890c70696e67207061796c6f6164
+
008 TX OCTETS: 8009667261676d656e7432
+
009 RX OCTETS: 81
+
010 RX OCTETS: 89669bc78000e9a6e70bfea9f457
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3636396263373830
+
               fragment1
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_7.json b/autobahn/client/hornbeam_case_5_7.json new file mode 100644 index 0000000..296c122 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_7.json @@ -0,0 +1,191 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 51, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=51&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: K+eTPiJDNook4ulgvG2AZQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Xm8y2OcMPAb2IPTOAWsBwSCC7UU=\r\n\r\n", + "id": "5.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.264Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "9": 1 + }, + "txOctetStats": { + "11": 2, + "14": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3531266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + true + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89669bc78000e9a6e70bfea9f457" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "669bc780" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_8.html b/autobahn/client/hornbeam_case_5_8.html new file mode 100644 index 0000000..20fafb3 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_8.html @@ -0,0 +1,335 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.8 : Fail - 3 ms @ 2023-08-10T21:35:05.267Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=52&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +GNNGzLjF1nLy77IC5/9+A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cpw7SjrmekNqr50GAmYZTzYiJ98=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
14114
1831183
Total3198
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
13636
2061206
Total37242
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3532266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment1
+
003 TX OCTETS: 01
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               ping payload
+
005 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment2
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 09
+
008 TX OCTETS: 66
+
009 TX OCTETS: 72
+
010 TX OCTETS: 61
+
011 TX OCTETS: 67
+
012 TX OCTETS: 6d
+
013 TX OCTETS: 65
+
014 TX OCTETS: 6e
+
015 TX OCTETS: 74
+
016 TX OCTETS: 31
+
017 TX OCTETS: 89
+
018 TX OCTETS: 0c
+
019 TX OCTETS: 70
+
020 RX OCTETS: 81
+
021 TX OCTETS: 69
+
022 RX OCTETS: 89a9f30ffbcf816e9cc496618f98
+
023 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6139663330666662
+
               fragment1
+
024 TX OCTETS: 6e
+
025 TX OCTETS: 67
+
026 TX OCTETS: 20
+
027 TX OCTETS: 70
+
028 TX OCTETS: 61
+
029 TX OCTETS: 79
+
030 TX OCTETS: 6c
+
031 TX OCTETS: 6f
+
032 TX OCTETS: 61
+
033 TX OCTETS: 64
+
034 TX OCTETS: 80
+
035 TX OCTETS: 09
+
036 TX OCTETS: 66
+
037 TX OCTETS: 72
+
038 TX OCTETS: 61
+
039 TX OCTETS: 67
+
040 TX OCTETS: 6d
+
041 TX OCTETS: 65
+
042 TX OCTETS: 6e
+
043 TX OCTETS: 74
+
044 TX OCTETS: 32
+
045 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_8.json b/autobahn/client/hornbeam_case_5_8.json new file mode 100644 index 0000000..5d0e825 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_8.json @@ -0,0 +1,454 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 52, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.", + "droppedByMe": false, + "duration": 3, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=52&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +GNNGzLjF1nLy77IC5/9+A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cpw7SjrmekNqr50GAmYZTzYiJ98=\r\n\r\n", + "id": "5.8", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:05.267Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "9": 1 + }, + "txOctetStats": { + "1": 36, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3532266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "01" + ], + true + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "0c" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "RO", + [ + 14, + "89a9f30ffbcf816e9cc496618f98" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "a9f30ffb" + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_5_9.html b/autobahn/client/hornbeam_case_5_9.html new file mode 100644 index 0000000..d45517e --- /dev/null +++ b/autobahn/client/hornbeam_case_5_9.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 5.9 : Pass - 1 ms @ 2023-08-10T21:35:05.271Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=53&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: y4Aq7CcG75pp8Cc7NmkAtg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PPKi/yPpPJ0NlYxR4+SEvCGO7Ew=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1831183
Total1183
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3533266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_5_9.json b/autobahn/client/hornbeam_case_5_9.json new file mode 100644 index 0000000..2909321 --- /dev/null +++ b/autobahn/client/hornbeam_case_5_9.json @@ -0,0 +1,122 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 53, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=53&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: y4Aq7CcG75pp8Cc7NmkAtg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PPKi/yPpPJ0NlYxR4+SEvCGO7Ew=\r\n\r\n", + "id": "5.9", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "183": 1 + }, + "started": "2023-08-10T21:35:05.271Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3533266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_10_1.html b/autobahn/client/hornbeam_case_6_10_1.html new file mode 100644 index 0000000..7802f79 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.10.1 : Fail - 503 ms @ 2023-08-10T21:35:18.357Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=104&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: V7Ft5nW1zy8V/5fVWA0xiA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XZfArhwS2nSp7oYPdk+yWCH5DN4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313034266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf7bfbfbf
+
003 TX OCTETS: 8104f7bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c781efe4897a143a7c7a311f7c5f141f5
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3738316566653438
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cee5453cfedbd14a0873a34efaf2332b6
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6565353435336366
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_10_1.json b/autobahn/client/hornbeam_case_6_10_1.json new file mode 100644 index 0000000..69864a8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 104, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=104&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: V7Ft5nW1zy8V/5fVWA0xiA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XZfArhwS2nSp7oYPdk+yWCH5DN4=\r\n\r\n", + "id": "6.10.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:18.357Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313034266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf7bfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f7bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c781efe4897a143a7c7a311f7c5f141f5" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "781efe48" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cee5453cfedbd14a0873a34efaf2332b6" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ee5453cf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_10_2.html b/autobahn/client/hornbeam_case_6_10_2.html new file mode 100644 index 0000000..3377b4a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.10.2 : Fail - 503 ms @ 2023-08-10T21:35:18.862Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=105&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jkE8RD7zAXxxC/gkJC/THg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iszqPoZEz1njz0AqJC6PVPD5qDc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313035266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfbbfbfbfbf
+
003 TX OCTETS: 8105fbbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f2b6e453cc4d1f8d394d3aa839681fa81c4d1f8
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3262366534353363
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c548ec9a457678ecb3de0ae8415f9a8dd
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3534386563396134
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_10_2.json b/autobahn/client/hornbeam_case_6_10_2.json new file mode 100644 index 0000000..4414a98 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 105, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=105&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jkE8RD7zAXxxC/gkJC/THg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iszqPoZEz1njz0AqJC6PVPD5qDc=\r\n\r\n", + "id": "6.10.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:18.862Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313035266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfbbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fbbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f2b6e453cc4d1f8d394d3aa839681fa81c4d1f8" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "2b6e453c" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c548ec9a457678ecb3de0ae8415f9a8dd" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "548ec9a4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_10_3.html b/autobahn/client/hornbeam_case_6_10_3.html new file mode 100644 index 0000000..f9b05d6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.10.3 : Fail - 503 ms @ 2023-08-10T21:35:19.366Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=106&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DMmN+qIONZ52fZXHR/XhyQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8NnkxY1puLHUACInzWvxPncA1Gw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313036266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfdbfbfbfbfbf
+
003 TX OCTETS: 8106fdbfbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92f33b99841c84246b4c86763b4ed426391c84246b4c86
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6633336239393834
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c238c1219206555764ae2753962fb7360
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3233386331323139
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_10_3.json b/autobahn/client/hornbeam_case_6_10_3.json new file mode 100644 index 0000000..d514698 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_10_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 106, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=106&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DMmN+qIONZ52fZXHR/XhyQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8NnkxY1puLHUACInzWvxPncA1Gw=\r\n\r\n", + "id": "6.10.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:19.366Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313036266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfdbfbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fdbfbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92f33b99841c84246b4c86763b4ed426391c84246b4c86" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "f33b9984" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c238c1219206555764ae2753962fb7360" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "238c1219" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_11_1.html b/autobahn/client/hornbeam_case_6_11_1.html new file mode 100644 index 0000000..aa30cbb --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.11.1 : Pass - 45 ms @ 2023-08-10T21:35:19.872Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ud7ff', False)]}

+ Observed:
[('message', u'\ud7ff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=107&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: H0oKLa+3KJawYMD0NXOZ4Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cGZJT6vaI6y2Miq2aZ8GChZsZfs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313037266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ퟿
+
003 TX OCTETS: 8103ed9fbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83cda740932038ff
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6364613734303933
+
               ퟿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882404164d443a9
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3430343136346434
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_11_1.json b/autobahn/client/hornbeam_case_6_11_1.json new file mode 100644 index 0000000..d5172d8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_1.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 107, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud7ff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=107&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: H0oKLa+3KJawYMD0NXOZ4Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cGZJT6vaI6y2Miq2aZ8GChZsZfs=\r\n\r\n", + "id": "6.11.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud7ff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:19.872Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313037266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ud7ff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103ed9fbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83cda740932038ff" + ] + ], + [ + "RF", + [ + 3, + "\ud7ff" + ], + 1, + true, + 0, + true, + "cda74093" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882404164d443a9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "404164d4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_11_2.html b/autobahn/client/hornbeam_case_6_11_2.html new file mode 100644 index 0000000..b190f99 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.11.2 : Pass - 45 ms @ 2023-08-10T21:35:19.918Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ue000', False)]}

+ Observed:
[('message', u'\ue000', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=108&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: lZUGqwak7zwtuL8pswD2iw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FPJk6BoiEdBBXmpXfB/9A0nWJEk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313038266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103ee8080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83e0e8dc120e685c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6530653864633132
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88828a25b5d989cd
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3861323562356439
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_11_2.json b/autobahn/client/hornbeam_case_6_11_2.json new file mode 100644 index 0000000..aa3fc43 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_2.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 108, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ue000", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=108&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: lZUGqwak7zwtuL8pswD2iw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FPJk6BoiEdBBXmpXfB/9A0nWJEk=\r\n\r\n", + "id": "6.11.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ue000", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:19.918Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313038266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ue000" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103ee8080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83e0e8dc120e685c" + ] + ], + [ + "RF", + [ + 3, + "\ue000" + ], + 1, + true, + 0, + true, + "e0e8dc12" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828a25b5d989cd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8a25b5d9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_11_3.html b/autobahn/client/hornbeam_case_6_11_3.html new file mode 100644 index 0000000..9bc30bb --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.11.3 : Pass - 46 ms @ 2023-08-10T21:35:19.964Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffd', False)]}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=109&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CfHG481j/LYp25uBF29nsA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +Aq/FuF2FcvgHTYSL2h/74qo8LM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313039266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               �
+
003 TX OCTETS: 8103efbfbd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83b2cc7ae95d73c7
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6232636337616539
+
               �
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882442d540b47c5
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3434326435343062
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_11_3.json b/autobahn/client/hornbeam_case_6_11_3.json new file mode 100644 index 0000000..da772aa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_3.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 109, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffd", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=109&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CfHG481j/LYp25uBF29nsA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +Aq/FuF2FcvgHTYSL2h/74qo8LM=\r\n\r\n", + "id": "6.11.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:19.964Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313039266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbd" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83b2cc7ae95d73c7" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "b2cc7ae9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882442d540b47c5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "442d540b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_11_4.html b/autobahn/client/hornbeam_case_6_11_4.html new file mode 100644 index 0000000..c6afb1c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_4.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.11.4 : Pass - 45 ms @ 2023-08-10T21:35:20.011Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=110&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: MCOJ9nEDCee1IaKoa7llEg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zxLRY+e+UOBeKAXafr4EIZrhtYQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313130266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84a2a95fcf5626e070
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6132613935666366
+
               ô¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88821d9b87361e73
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3164396238373336
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_11_4.json b/autobahn/client/hornbeam_case_6_11_4.json new file mode 100644 index 0000000..1d1b558 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 110, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=110&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: MCOJ9nEDCee1IaKoa7llEg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zxLRY+e+UOBeKAXafr4EIZrhtYQ=\r\n\r\n", + "id": "6.11.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:20.011Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313130266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84a2a95fcf5626e070" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "a2a95fcf" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821d9b87361e73" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1d9b8736" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_11_5.html b/autobahn/client/hornbeam_case_6_11_5.html new file mode 100644 index 0000000..47a7a62 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.11.5 : Fail - 502 ms @ 2023-08-10T21:35:20.058Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=111&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Pfm/jKCiEECAHS3PTaZR+w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: c1xArClhy0qBrkyUwzzcDw3saRA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313131266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf4908080
+
003 TX OCTETS: 8104f4908080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c6230c6b78d8f7b58dd8d2908dfdf790a
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3632333063366237
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c0f8c668d0c6521e266e201ad4efb07f4
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3066386336363864
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_11_5.json b/autobahn/client/hornbeam_case_6_11_5.json new file mode 100644 index 0000000..1d634c8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_11_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 111, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=111&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Pfm/jKCiEECAHS3PTaZR+w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: c1xArClhy0qBrkyUwzzcDw3saRA=\r\n\r\n", + "id": "6.11.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:20.058Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313131266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf4908080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f4908080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c6230c6b78d8f7b58dd8d2908dfdf790a" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "6230c6b7" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c0f8c668d0c6521e266e201ad4efb07f4" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "0f8c668d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_1.html b/autobahn/client/hornbeam_case_6_12_1.html new file mode 100644 index 0000000..2972ec6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.1 : Fail - 503 ms @ 2023-08-10T21:35:20.562Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=112&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: R7eAVEwWVNxVeSI7YJWJWg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: gqmh/18By1EL93pA2LDmDnQc76s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313132266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80
+
003 TX OCTETS: 810180
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 835d11358bb2ae88
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3564313133353862
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ce8a2171eeb4b507181cc703ea9d57667
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6538613231373165
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_1.json b/autobahn/client/hornbeam_case_6_12_1.json new file mode 100644 index 0000000..7ae99e7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 112, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=112&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: R7eAVEwWVNxVeSI7YJWJWg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: gqmh/18By1EL93pA2LDmDnQc76s=\r\n\r\n", + "id": "6.12.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:20.562Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313132266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0x80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "810180" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "835d11358bb2ae88" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "5d11358b" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ce8a2171eeb4b507181cc703ea9d57667" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "e8a2171e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_2.html b/autobahn/client/hornbeam_case_6_12_2.html new file mode 100644 index 0000000..03b49e7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.2 : Fail - 503 ms @ 2023-08-10T21:35:21.067Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=113&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: VHFIEPX2SHQ3oEJt3Zi3sw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HPYxYAiYiGWYzteg62F2X4xMrZY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313133266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbf
+
003 TX OCTETS: 8101bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83e4d61e290b69a3
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6534643631653239
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ccf1b67a8ccf220c7a67500888e6c06d1
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6366316236376138
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_2.json b/autobahn/client/hornbeam_case_6_12_2.json new file mode 100644 index 0000000..a276e79 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 113, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=113&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: VHFIEPX2SHQ3oEJt3Zi3sw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HPYxYAiYiGWYzteg62F2X4xMrZY=\r\n\r\n", + "id": "6.12.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:21.067Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313133266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101bf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83e4d61e290b69a3" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "e4d61e29" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ccf1b67a8ccf220c7a67500888e6c06d1" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "cf1b67a8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_3.html b/autobahn/client/hornbeam_case_6_12_3.html new file mode 100644 index 0000000..f6aa09a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.3 : Fail - 503 ms @ 2023-08-10T21:35:21.573Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=114&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: j2Zwa8Cu8f12ymzmHdkirQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YO2oZGu9jsKq9NuhsQYhmjikgfE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
11111
18118
1841184
Total4214
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313134266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf
+
003 TX OCTETS: 810280bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 860d16b27be2a90f94b2ab
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASKED=True, MASK=3064313662323762
+
               ��
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ccd9032a0ce7975cfa4fe55808ce753d9
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6364393033326130
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_3.json b/autobahn/client/hornbeam_case_6_12_3.json new file mode 100644 index 0000000..2c70af1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 114, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=114&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: j2Zwa8Cu8f12ymzmHdkirQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YO2oZGu9jsKq9NuhsQYhmjikgfE=\r\n\r\n", + "id": "6.12.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "11": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:21.573Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313134266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "810280bf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 11, + "860d16b27be2a90f94b2ab" + ] + ], + [ + "RF", + [ + 6, + "\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "0d16b27b" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ccd9032a0ce7975cfa4fe55808ce753d9" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "cd9032a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_4.html b/autobahn/client/hornbeam_case_6_12_4.html new file mode 100644 index 0000000..de2f8e0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.4 : Fail - 503 ms @ 2023-08-10T21:35:22.079Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=115&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 48SAajQpMC9ZS5loHVDGRw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xgYrWvytIISThRepC704bcSaGaQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313135266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80
+
003 TX OCTETS: 810380bf80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89de1287e931ad3a0661af685663
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6465313238376539
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cf7e79397f40ed4f89e89f4b7b690f2ee
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6637653739333937
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_4.json b/autobahn/client/hornbeam_case_6_12_4.json new file mode 100644 index 0000000..41c2c34 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 115, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=115&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 48SAajQpMC9ZS5loHVDGRw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xgYrWvytIISThRepC704bcSaGaQ=\r\n\r\n", + "id": "6.12.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:22.079Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313135266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0x80bf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "810380bf80" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89de1287e931ad3a0661af685663" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "de1287e9" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cf7e79397f40ed4f89e89f4b7b690f2ee" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "f7e79397" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_5.html b/autobahn/client/hornbeam_case_6_12_5.html new file mode 100644 index 0000000..2881a55 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.5 : Fail - 503 ms @ 2023-08-10T21:35:22.584Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=116&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: uoOdwVjH1u9BwuiMOiZQuQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ivxBuYXqruwfOsCsiy8MBiGHc4w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313136266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf
+
003 TX OCTETS: 810480bf80bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c0ee0b77de15f0a92b15d58c2b30f08c0
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3065653062373764
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ccc96a02ccf7fe743a5f8c70c8de1c155
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6363393661303263
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_5.json b/autobahn/client/hornbeam_case_6_12_5.json new file mode 100644 index 0000000..8fae726 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 116, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=116&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: uoOdwVjH1u9BwuiMOiZQuQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ivxBuYXqruwfOsCsiy8MBiGHc4w=\r\n\r\n", + "id": "6.12.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:22.584Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313136266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0x80bf80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "810480bf80bf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c0ee0b77de15f0a92b15d58c2b30f08c0" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "0ee0b77d" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ccc96a02ccf7fe743a5f8c70c8de1c155" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "cc96a02c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_6.html b/autobahn/client/hornbeam_case_6_12_6.html new file mode 100644 index 0000000..4579680 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.6 : Fail - 503 ms @ 2023-08-10T21:35:23.090Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=117&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7FcUan+6g2KYNpWCEno51g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UEB90PGPqChfVrjfkMRm6AkPOfg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313137266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf80
+
003 TX OCTETS: 810580bf80bf80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f284c1289c7f3af6697f1fd3695a3ad34c7f3af
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3238346331323839
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c0b6a99a70883dec86204fe874a1df8de
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3062366139396137
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_6.json b/autobahn/client/hornbeam_case_6_12_6.json new file mode 100644 index 0000000..1c3248b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_6.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 117, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=117&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7FcUan+6g2KYNpWCEno51g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UEB90PGPqChfVrjfkMRm6AkPOfg=\r\n\r\n", + "id": "6.12.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:23.090Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313137266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0x80bf80bf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "810580bf80bf80" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f284c1289c7f3af6697f1fd3695a3ad34c7f3af" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "284c1289" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c0b6a99a70883dec86204fe874a1df8de" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "0b6a99a7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_7.html b/autobahn/client/hornbeam_case_6_12_7.html new file mode 100644 index 0000000..9720819 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_7.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.7 : Fail - 503 ms @ 2023-08-10T21:35:23.595Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=118&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 4JvdX+ZElo2yU7fQAnFkbQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IETHWWcnRAXhLUJwABy38yPEO34=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313138266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf80bf
+
003 TX OCTETS: 810680bf80bf80bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 925ccc8ea1b373334ee371611ee123311cb373334ee371
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3563636338656131
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c3ff071003c19366f569e16207e871079
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3366663037313030
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_7.json b/autobahn/client/hornbeam_case_6_12_7.json new file mode 100644 index 0000000..126a6d2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_7.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 118, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=118&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 4JvdX+ZElo2yU7fQAnFkbQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IETHWWcnRAXhLUJwABy38yPEO34=\r\n\r\n", + "id": "6.12.7", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:23.595Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313138266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0x80bf80bf80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "810680bf80bf80bf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "925ccc8ea1b373334ee371611ee123311cb373334ee371" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "5ccc8ea1" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c3ff071003c19366f569e16207e871079" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "3ff07100" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_12_8.html b/autobahn/client/hornbeam_case_6_12_8.html new file mode 100644 index 0000000..0f2a10b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_8.html @@ -0,0 +1,309 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.12.8 : Fail - 503 ms @ 2023-08-10T21:35:24.102Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', '0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ...', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=119&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: NPW3AmE69fIRrLr0i8JuEQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: l0xHjKQVi4rPDJjwR3PMs18o4XU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
1841184
1961196
Total4399
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
65165
2061206
Total3285
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313139266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=63, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0
+
               b1b2b3b4b5b6b7b8b9babbbcbdbe ...
+
003 TX OCTETS: 813f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf
+
               b0b1b2b3b4b5b6b7b8b9babbbcbd ...
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fe00bd85ab42f36a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad
+
               4c3844fd4e6a14ff1c3a16ad4c38 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=189, MASKED=True, MASK=3835616234326633
+
               0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef
+
               bfbdefbfbdefbfbdefbfbdefbfbdef ...
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ce458364ae7b171258d36516aa52f5733
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6534353833363461
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_12_8.json b/autobahn/client/hornbeam_case_6_12_8.json new file mode 100644 index 0000000..0b9b6c0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_12_8.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 119, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=119&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: NPW3AmE69fIRrLr0i8JuEQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: l0xHjKQVi4rPDJjwR3PMs18o4XU=\r\n\r\n", + "id": "6.12.8", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ...", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "184": 1, + "196": 1 + }, + "started": "2023-08-10T21:35:24.102Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "65": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313139266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 63, + "0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65, + "813f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbd ..." + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 196, + "fe00bd85ab42f36a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c3844fd4e6a14ff1c3a16ad4c38 ..." + ] + ], + [ + "RF", + [ + 189, + "0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ..." + ], + 1, + true, + 0, + true, + "85ab42f3" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ce458364ae7b171258d36516aa52f5733" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "e458364a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_13_1.html b/autobahn/client/hornbeam_case_6_13_1.html new file mode 100644 index 0000000..ffe7c1e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_1.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.13.1 : Fail - 503 ms @ 2023-08-10T21:35:24.607Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ...', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=120&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: rSIPjMlFQhgtqd34SSJszg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vnXcOkBILUfMS1btDeL8bfx1Q9Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
1291129
1841184
Total4332
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
64164
2061206
Total3284
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313230266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=62, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d8
+
               20d920da20db20dc20dd20de20 ...
+
003 TX OCTETS: 813ec020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720
+
               d820d920da20db20dc20dd20de20 ...
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: fc17a59c20f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f8
+
               1a2100f81a2100f81a2100f81a21 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=124, MASKED=True, MASK=3137613539633230
+
               � � � � � � � � � � � � � � � �  ...
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cb4af129bb74655f4ddc175bbf5d873e2
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6234616631323962
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_13_1.json b/autobahn/client/hornbeam_case_6_13_1.json new file mode 100644 index 0000000..b63667e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 120, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=120&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: rSIPjMlFQhgtqd34SSJszg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vnXcOkBILUfMS1btDeL8bfx1Q9Q=\r\n\r\n", + "id": "6.13.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ...", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "129": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:24.607Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "64": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313230266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 62, + "0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20 ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 64, + "813ec020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20 ..." + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 129, + "fc17a59c20f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a2100f81a21 ..." + ] + ], + [ + "RF", + [ + 124, + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ..." + ], + 1, + true, + 0, + true, + "17a59c20" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cb4af129bb74655f4ddc175bbf5d873e2" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "b4af129b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_13_2.html b/autobahn/client/hornbeam_case_6_13_2.html new file mode 100644 index 0000000..976a769 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_2.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.13.2 : Fail - 503 ms @ 2023-08-10T21:35:25.112Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=121&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: NHdEAJxTzL5dpwK2AmM9Ig==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yQoJh9HIG6Ls0rRMlJqGRIRRTKY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
65165
1841184
Total4268
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
32132
2061206
Total3252
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313231266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=30, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20
+
003 TX OCTETS: 811ee020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: bcd0f33cdb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f
+
               4c81fb3f4c81fb3f4c81fb3f4c81 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=60, MASKED=True, MASK=6430663333636462
+
               � � � � � � � � � � � � � � �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c6b745c2e689d1b41021a3b0e2a033d57
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3662373435633265
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_13_2.json b/autobahn/client/hornbeam_case_6_13_2.json new file mode 100644 index 0000000..8808f58 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 121, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=121&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: NHdEAJxTzL5dpwK2AmM9Ig==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yQoJh9HIG6Ls0rRMlJqGRIRRTKY=\r\n\r\n", + "id": "6.13.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "65": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:25.112Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "32": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313231266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 30, + "0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 32, + "811ee020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 65, + "bcd0f33cdb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81fb3f4c81 ..." + ] + ], + [ + "RF", + [ + 60, + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd " + ], + 1, + true, + 0, + true, + "d0f33cdb" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c6b745c2e689d1b41021a3b0e2a033d57" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "6b745c2e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_13_3.html b/autobahn/client/hornbeam_case_6_13_3.html new file mode 100644 index 0000000..dc51e74 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.13.3 : Fail - 503 ms @ 2023-08-10T21:35:25.618Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=122&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Ozrwmk1cEOPvIy11tyJC1g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fwD8nsah7Gk/88C17yqejQt4taM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
33133
1841184
Total4236
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
16116
2061206
Total3236
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313232266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf020f120f220f320f420f520f620
+
003 TX OCTETS: 810ef020f120f220f320f420f520f620
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9cff114ab010aef79010aef79010aef79010aef79010aef79010aef79010aef790
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=28, MASKED=True, MASK=6666313134616230
+
               � � � � � � �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c779e855e7477c2311ef0e27e36e9e427
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3737396538353565
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_13_3.json b/autobahn/client/hornbeam_case_6_13_3.json new file mode 100644 index 0000000..bc10509 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 122, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=122&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Ozrwmk1cEOPvIy11tyJC1g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fwD8nsah7Gk/88C17yqejQt4taM=\r\n\r\n", + "id": "6.13.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd ", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "33": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:25.618Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "16": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313232266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "0xf020f120f220f320f420f520f620" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "810ef020f120f220f320f420f520f620" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 33, + "9cff114ab010aef79010aef79010aef79010aef79010aef79010aef79010aef790" + ] + ], + [ + "RF", + [ + 28, + "\ufffd \ufffd \ufffd \ufffd \ufffd \ufffd \ufffd " + ], + 1, + true, + 0, + true, + "ff114ab0" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c779e855e7477c2311ef0e27e36e9e427" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "779e855e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_13_4.html b/autobahn/client/hornbeam_case_6_13_4.html new file mode 100644 index 0000000..2a9f8ac --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.13.4 : Fail - 503 ms @ 2023-08-10T21:35:26.124Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd \ufffd \ufffd ', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=123&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: eCMBkJSTDNcvm0eJCyK/4Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: R6oZuLnl7s7MZxv2dENasITQ040=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313233266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf820f920fa20
+
003 TX OCTETS: 8106f820f920fa20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8ca0f19ff44f4e22d44f4e22d44f4e22d4
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6130663139666634
+
               � � �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c733f25c970d662a61a5142e9324844b0
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3733336632356339
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_13_4.json b/autobahn/client/hornbeam_case_6_13_4.json new file mode 100644 index 0000000..0dd1244 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 123, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=123&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: eCMBkJSTDNcvm0eJCyK/4Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: R6oZuLnl7s7MZxv2dENasITQ040=\r\n\r\n", + "id": "6.13.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd \ufffd \ufffd ", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:26.124Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313233266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xf820f920fa20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106f820f920fa20" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8ca0f19ff44f4e22d44f4e22d44f4e22d4" + ] + ], + [ + "RF", + [ + 12, + "\ufffd \ufffd \ufffd " + ], + 1, + true, + 0, + true, + "a0f19ff4" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c733f25c970d662a61a5142e9324844b0" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "733f25c9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_13_5.html b/autobahn/client/hornbeam_case_6_13_5.html new file mode 100644 index 0000000..2e9ddb7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.13.5 : Fail - 503 ms @ 2023-08-10T21:35:26.630Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd ', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=124&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +JYXMmfgtrh8FO4J1HKyFA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: s+6nLcad3hxIhh51/ELlECcE+s8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
919
18118
1841184
Total4212
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313234266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc20
+
003 TX OCTETS: 8102fc20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84e17db87b0ec2055b
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6531376462383762
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c2716964724ffd1284e78f1676661f73e
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3237313639363437
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_13_5.json b/autobahn/client/hornbeam_case_6_13_5.json new file mode 100644 index 0000000..cafbe0c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_13_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 124, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=124&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +JYXMmfgtrh8FO4J1HKyFA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: s+6nLcad3hxIhh51/ELlECcE+s8=\r\n\r\n", + "id": "6.13.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd ", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "9": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:26.630Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313234266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xfc20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102fc20" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84e17db87b0ec2055b" + ] + ], + [ + "RF", + [ + 4, + "\ufffd " + ], + 1, + true, + 0, + true, + "e17db87b" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c2716964724ffd1284e78f1676661f73e" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "27169647" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_1.html b/autobahn/client/hornbeam_case_6_14_1.html new file mode 100644 index 0000000..df3512a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.1 : Fail - 504 ms @ 2023-08-10T21:35:27.136Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=125&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: UqfPFISzWKA+NAxywFfALA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XEgs1/144HsbRQEwGxQTHe5AVEA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313235266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0
+
003 TX OCTETS: 8101c0
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8348220198a79dbc
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3438323230313938
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cda81f73bd968b054b3ef901b9bf69642
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6461383166373362
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_1.json b/autobahn/client/hornbeam_case_6_14_1.json new file mode 100644 index 0000000..10fc172 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 125, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0", + "droppedByMe": true, + "duration": 504, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=125&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: UqfPFISzWKA+NAxywFfALA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XEgs1/144HsbRQEwGxQTHe5AVEA=\r\n\r\n", + "id": "6.14.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:27.136Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313235266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xc0" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101c0" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "8348220198a79dbc" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "48220198" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cda81f73bd968b054b3ef901b9bf69642" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "da81f73b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_10.html b/autobahn/client/hornbeam_case_6_14_10.html new file mode 100644 index 0000000..60f08eb --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_10.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.10 : Fail - 503 ms @ 2023-08-10T21:35:31.796Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=134&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 48CB+aqrJB8/jQwUtU6LMA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +a2+ywaeSu/++RIWvnBoV8i5YdI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313334266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfdbfbfbfbf
+
003 TX OCTETS: 8105fdbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8ff6466bfc19f9d61349fb84434ba9d44119f9d6
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=6636343636626663
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c02b9db4a01509c256bd7bc6a43ceba33
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3032623964623461
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_10.json b/autobahn/client/hornbeam_case_6_14_10.json new file mode 100644 index 0000000..24a7e41 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_10.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 134, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=134&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 48CB+aqrJB8/jQwUtU6LMA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +a2+ywaeSu/++RIWvnBoV8i5YdI=\r\n\r\n", + "id": "6.14.10", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:31.796Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313334266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfdbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fdbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8ff6466bfc19f9d61349fb84434ba9d44119f9d6" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "f6466bfc" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c02b9db4a01509c256bd7bc6a43ceba33" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "02b9db4a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_2.html b/autobahn/client/hornbeam_case_6_14_2.html new file mode 100644 index 0000000..099706c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.2 : Fail - 503 ms @ 2023-08-10T21:35:27.642Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=126&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: idyUbL0WEk93Ymi+9e26VA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4VKoWBhmaDdZgt4qnWQKtfYbAPo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
11111
18118
1841184
Total4214
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313236266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe080
+
003 TX OCTETS: 8102e080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 86eebf8830010035df5102
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASKED=True, MASK=6565626638383330
+
               ��
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c2f5919582cb05e3746377e786e2e7821
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3266353931393538
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_2.json b/autobahn/client/hornbeam_case_6_14_2.json new file mode 100644 index 0000000..0f7019d --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 126, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=126&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: idyUbL0WEk93Ymi+9e26VA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4VKoWBhmaDdZgt4qnWQKtfYbAPo=\r\n\r\n", + "id": "6.14.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "11": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:27.642Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313236266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xe080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102e080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 11, + "86eebf8830010035df5102" + ] + ], + [ + "RF", + [ + 6, + "\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "eebf8830" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c2f5919582cb05e3746377e786e2e7821" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "2f591958" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_3.html b/autobahn/client/hornbeam_case_6_14_3.html new file mode 100644 index 0000000..4a580dc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.3 : Fail - 503 ms @ 2023-08-10T21:35:28.148Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=127&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Ea5mMSPFSpNnhNeVMqW1zA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZIM70+jL2jOt06sXEhC76twlyRk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313237266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08080
+
003 TX OCTETS: 8103f08080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8940c6264baf799ba4ff7bc9f4fd
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3430633632363462
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cc4d9ab67c730ec08adb7cc4785aeca1e
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6334643961623637
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_3.json b/autobahn/client/hornbeam_case_6_14_3.json new file mode 100644 index 0000000..9adbf54 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 127, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=127&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Ea5mMSPFSpNnhNeVMqW1zA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZIM70+jL2jOt06sXEhC76twlyRk=\r\n\r\n", + "id": "6.14.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:28.148Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313237266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xf08080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103f08080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8940c6264baf799ba4ff7bc9f4fd" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "40c6264b" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cc4d9ab67c730ec08adb7cc4785aeca1e" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "c4d9ab67" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_4.html b/autobahn/client/hornbeam_case_6_14_4.html new file mode 100644 index 0000000..3a53756 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.4 : Fail - 503 ms @ 2023-08-10T21:35:28.653Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=128&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: U+VuHO7Y4W8VXhZvQcZEKQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 65/937eUf/31J1o6mW6xhL4IbZI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313238266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf8808080
+
003 TX OCTETS: 8104f8808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8cc3c36a062c7cd7e97c7e85b97e2cd5bb
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6333633336613036
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ccfa95e6ccc401903a6c7394c8ede3f15
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6366613935653663
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_4.json b/autobahn/client/hornbeam_case_6_14_4.json new file mode 100644 index 0000000..c3ff28a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 128, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=128&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: U+VuHO7Y4W8VXhZvQcZEKQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 65/937eUf/31J1o6mW6xhL4IbZI=\r\n\r\n", + "id": "6.14.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:28.653Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313238266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf8808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f8808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8cc3c36a062c7cd7e97c7e85b97e2cd5bb" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "c3c36a06" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ccfa95e6ccc401903a6c7394c8ede3f15" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "cfa95e6c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_5.html b/autobahn/client/hornbeam_case_6_14_5.html new file mode 100644 index 0000000..2a51b33 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.5 : Fail - 517 ms @ 2023-08-10T21:35:29.159Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=129&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: aoiLzqmYzUhiThIJQCIzSA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: C0ZmLdSWcmKk6p+pwaTd0n8O6Dg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313239266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc80808080
+
003 TX OCTETS: 8105fc80808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f2ce0a15dc35f1cb2935d4ee2910f1ee0c35f1c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3263653061313564
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c9f774eea9c9e0985f61929cade002f93
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3966373734656561
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_5.json b/autobahn/client/hornbeam_case_6_14_5.json new file mode 100644 index 0000000..8103547 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 129, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080", + "droppedByMe": true, + "duration": 517, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=129&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: aoiLzqmYzUhiThIJQCIzSA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: C0ZmLdSWcmKk6p+pwaTd0n8O6Dg=\r\n\r\n", + "id": "6.14.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:29.159Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313239266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfc80808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fc80808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f2ce0a15dc35f1cb2935d4ee2910f1ee0c35f1c" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "2ce0a15d" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c9f774eea9c9e0985f61929cade002f93" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "9f774eea" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_6.html b/autobahn/client/hornbeam_case_6_14_6.html new file mode 100644 index 0000000..5d18337 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.6 : Fail - 524 ms @ 2023-08-10T21:35:29.679Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=130&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 2eRbtmttZDKmsM+b9vGpsA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: QBC2vF9aFQwvWK2VrQVtnTpHV1o=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313330266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xdf
+
003 TX OCTETS: 8101df
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8352c10428bd7eb9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3532633130343238
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c6ea7c0f16d4e879e07c9a7d12fd0a188
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3665613763306631
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_6.json b/autobahn/client/hornbeam_case_6_14_6.json new file mode 100644 index 0000000..a470e44 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_6.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 130, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf", + "droppedByMe": true, + "duration": 524, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=130&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 2eRbtmttZDKmsM+b9vGpsA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: QBC2vF9aFQwvWK2VrQVtnTpHV1o=\r\n\r\n", + "id": "6.14.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:29.679Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313330266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xdf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101df" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "8352c10428bd7eb9" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "52c10428" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c6ea7c0f16d4e879e07c9a7d12fd0a188" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "6ea7c0f1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_7.html b/autobahn/client/hornbeam_case_6_14_7.html new file mode 100644 index 0000000..fffbda8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_7.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.7 : Fail - 540 ms @ 2023-08-10T21:35:30.205Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=131&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 2ftZmoiEDfi0ySnbs3cQNA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yGFsUrct/zzTEZK9Z76ntXoVcC0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313331266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xefbf
+
003 TX OCTETS: 8102efbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83f4bc83631b033e
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6634626338333633
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cba1c2876b9f56f19d3724f56fb6b490f
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6261316332383736
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_7.json b/autobahn/client/hornbeam_case_6_14_7.json new file mode 100644 index 0000000..456fd9e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_7.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 131, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf", + "droppedByMe": true, + "duration": 540, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=131&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 2ftZmoiEDfi0ySnbs3cQNA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yGFsUrct/zzTEZK9Z76ntXoVcC0=\r\n\r\n", + "id": "6.14.7", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:30.205Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313331266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xefbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102efbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83f4bc83631b033e" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "f4bc8363" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cba1c2876b9f56f19d3724f56fb6b490f" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ba1c2876" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_8.html b/autobahn/client/hornbeam_case_6_14_8.html new file mode 100644 index 0000000..36e6fa6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_8.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.8 : Fail - 543 ms @ 2023-08-10T21:35:30.747Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=132&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3yDIALw6ucZBnVQESZGznw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vUwzuCRIRkE8/G3At4BiHkDkUOc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
18118
1841184
Total3217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313332266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf7bfbf
+
003 TX OCTETS: 8103f7bfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818966d2ef18896d52f7d96f00a7db
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3636643265663138
+
               ���
+
007 FAILING CONNECTION
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
009 TX OCTETS: 880c03e9476f696e672041776179
+
010 RX OCTETS: 888c42a643fd414f04922bc824dd03d12284
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3432613634336664
+
               0x03e9476f696e672041776179
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_8.json b/autobahn/client/hornbeam_case_6_14_8.json new file mode 100644 index 0000000..610626c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_8.json @@ -0,0 +1,175 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 132, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf", + "droppedByMe": true, + "duration": 543, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=132&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3yDIALw6ucZBnVQESZGznw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vUwzuCRIRkE8/G3At4BiHkDkUOc=\r\n\r\n", + "id": "6.14.8", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "15": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:30.747Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313332266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xf7bfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103f7bfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 15, + "818966d2ef18896d52f7d96f00a7db" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "66d2ef18" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c42a643fd414f04922bc824dd03d12284" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "42a643fd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_14_9.html b/autobahn/client/hornbeam_case_6_14_9.html new file mode 100644 index 0000000..8143a61 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_9.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.14.9 : Fail - 502 ms @ 2023-08-10T21:35:31.291Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=133&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: TJxVsSRB43mOPxl7R2xhtg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PRhpIS90jNkpj+Lv2Ar9GQ5V7Ig=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
18236
1841184
Total3220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313333266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfbbfbfbf
+
003 TX OCTETS: 8104fbbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818c80b036b56f0f8b5a3f0dd90a3d5f8908
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3830623033366235
+
               ����
+
007 FAILING CONNECTION
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
009 TX OCTETS: 880c03e9476f696e672041776179
+
010 RX OCTETS: 888ce09cb717e375f07889f2d037a1ebd66e
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6530396362373137
+
               0x03e9476f696e672041776179
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_14_9.json b/autobahn/client/hornbeam_case_6_14_9.json new file mode 100644 index 0000000..5c91242 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_14_9.json @@ -0,0 +1,174 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 133, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=133&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: TJxVsSRB43mOPxl7R2xhtg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PRhpIS90jNkpj+Lv2Ar9GQ5V7Ig=\r\n\r\n", + "id": "6.14.9", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "18": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:31.291Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313333266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xfbbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104fbbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 18, + "818c80b036b56f0f8b5a3f0dd90a3d5f8908" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "80b036b5" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ce09cb717e375f07889f2d037a1ebd66e" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "e09cb717" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_15_1.html b/autobahn/client/hornbeam_case_6_15_1.html new file mode 100644 index 0000000..e03c39e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_15_1.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.15.1 : Fail - 504 ms @ 2023-08-10T21:35:32.301Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', '0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ...', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=135&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: mcAXcDP9oAVxXQExlysqrw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DbjSZ+Q8+1upxqv9Oysl1natqsA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
92192
1841184
Total4295
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
32132
2061206
Total3252
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313335266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=30, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf
+
003 TX OCTETS: 811ec0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: d7aaaeeccf451151201513037017415372451151201513037017415372451151201513037017415372451151201513037017
+
               4153724511512015130370174153 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=87, MASKED=True, MASK=6161616565636366
+
               0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef
+
               bfbdefbfbdefbfbdefbfbdefbfbdef ...
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cd1b0ad04d259ea6bb8deca2490c7cc7d
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6431623061643034
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_15_1.json b/autobahn/client/hornbeam_case_6_15_1.json new file mode 100644 index 0000000..6817950 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_15_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 135, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf", + "droppedByMe": true, + "duration": 504, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=135&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: mcAXcDP9oAVxXQExlysqrw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DbjSZ+Q8+1upxqv9Oysl1natqsA=\r\n\r\n", + "id": "6.15.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ...", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "92": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:32.301Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "32": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313335266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 30, + "0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 32, + "811ec0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 92, + "d7aaaeeccf4511512015130370174153724511512015130370174153724511512015130370174153724511512015130370174153724511512015130370174153 ..." + ] + ], + [ + "RF", + [ + 87, + "0xefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdef ..." + ], + 1, + true, + 0, + true, + "aaaeeccf" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cd1b0ad04d259ea6bb8deca2490c7cc7d" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "d1b0ad04" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_16_1.html b/autobahn/client/hornbeam_case_6_16_1.html new file mode 100644 index 0000000..c26277f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.16.1 : Fail - 503 ms @ 2023-08-10T21:35:32.808Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=136&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 0jDL6IZ1WeG1hH+OJqR5mQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HLLWEPQf60pP6cjICntXID438ZI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313336266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfe
+
003 TX OCTETS: 8101fe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83abd27c1e446dc1
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6162643237633165
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cf59a86aff673c1c09cf4e18fb4ede7d6
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6635396138366166
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_16_1.json b/autobahn/client/hornbeam_case_6_16_1.json new file mode 100644 index 0000000..e96098b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 136, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=136&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 0jDL6IZ1WeG1hH+OJqR5mQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HLLWEPQf60pP6cjICntXID438ZI=\r\n\r\n", + "id": "6.16.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:32.808Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313336266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xfe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101fe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83abd27c1e446dc1" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "abd27c1e" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cf59a86aff673c1c09cf4e18fb4ede7d6" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "f59a86af" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_16_2.html b/autobahn/client/hornbeam_case_6_16_2.html new file mode 100644 index 0000000..38b2230 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.16.2 : Fail - 503 ms @ 2023-08-10T21:35:33.314Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=137&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Cyp3Qw4sDeXuirIrkVEQcg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4ZERryYaDZuSqYxI5XNedGE/9e0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1841184
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313337266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xff
+
003 TX OCTETS: 8101ff
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83bfad4ed45012f3
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6266616434656434
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cacd24935af3b0e5ac5bc2e15eda5284c
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6163643234393335
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_16_2.json b/autobahn/client/hornbeam_case_6_16_2.json new file mode 100644 index 0000000..0a521dd --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 137, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=137&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Cyp3Qw4sDeXuirIrkVEQcg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4ZERryYaDZuSqYxI5XNedGE/9e0=\r\n\r\n", + "id": "6.16.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:33.314Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313337266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101ff" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83bfad4ed45012f3" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "bfad4ed4" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cacd24935af3b0e5ac5bc2e15eda5284c" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "acd24935" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_16_3.html b/autobahn/client/hornbeam_case_6_16_3.html new file mode 100644 index 0000000..a276837 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.16.3 : Fail - 504 ms @ 2023-08-10T21:35:33.820Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=138&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: d/ByIMeoQedbpL35bPv3kQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: i5NNeSPOQafDcG+TzCECoeAljww=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313338266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefeffff
+
003 TX OCTETS: 8104fefeffff
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c21939afbce2c27149e2e75449c7c2546
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3231393339616662
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cab768dd0a89fcabfc218eaf0ea01eca9
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6162373638646430
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_16_3.json b/autobahn/client/hornbeam_case_6_16_3.json new file mode 100644 index 0000000..7fd781a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_16_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 138, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff", + "droppedByMe": true, + "duration": 504, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=138&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: d/ByIMeoQedbpL35bPv3kQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: i5NNeSPOQafDcG+TzCECoeAljww=\r\n\r\n", + "id": "6.16.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:33.820Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313338266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xfefeffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104fefeffff" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c21939afbce2c27149e2e75449c7c2546" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "21939afb" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cab768dd0a89fcabfc218eaf0ea01eca9" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ab768dd0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_17_1.html b/autobahn/client/hornbeam_case_6_17_1.html new file mode 100644 index 0000000..a03d1e7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.17.1 : Fail - 503 ms @ 2023-08-10T21:35:34.327Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=139&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CEdKOnc9FN9jJfAh4F0Nuw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4wXnRezU5ZczrMwcjshj7qMrQ74=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
11111
18118
1841184
Total4214
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313339266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0af
+
003 TX OCTETS: 8102c0af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 867021c4149f9e79fbcf9c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASKED=True, MASK=3730323163343134
+
               ��
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ce99a5f86ea7318e980f438a6a8ed3eff
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6539396135663836
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_17_1.json b/autobahn/client/hornbeam_case_6_17_1.json new file mode 100644 index 0000000..ec2154a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 139, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=139&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CEdKOnc9FN9jJfAh4F0Nuw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4wXnRezU5ZczrMwcjshj7qMrQ74=\r\n\r\n", + "id": "6.17.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "11": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:34.327Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313339266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc0af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c0af" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 11, + "867021c4149f9e79fbcf9c" + ] + ], + [ + "RF", + [ + 6, + "\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "7021c414" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ce99a5f86ea7318e980f438a6a8ed3eff" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "e99a5f86" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_17_2.html b/autobahn/client/hornbeam_case_6_17_2.html new file mode 100644 index 0000000..0e239d0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.17.2 : Fail - 503 ms @ 2023-08-10T21:35:34.832Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=140&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: pCVcG/cPf+AoRkFSEovCoA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rP+WxxlzoedlI821pFRyzuYTZxk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313430266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe080af
+
003 TX OCTETS: 8103e080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89df25bb9b309a06746098542462
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6466323562623962
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c4d656cb84e8c2bd7240b0b980c120dc1
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3464363536636238
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_17_2.json b/autobahn/client/hornbeam_case_6_17_2.json new file mode 100644 index 0000000..3936ea6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 140, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=140&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: pCVcG/cPf+AoRkFSEovCoA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rP+WxxlzoedlI821pFRyzuYTZxk=\r\n\r\n", + "id": "6.17.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:34.832Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313430266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e080af" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89df25bb9b309a06746098542462" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "df25bb9b" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c4d656cb84e8c2bd7240b0b980c120dc1" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "4d656cb8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_17_3.html b/autobahn/client/hornbeam_case_6_17_3.html new file mode 100644 index 0000000..fddbcf4 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.17.3 : Fail - 503 ms @ 2023-08-10T21:35:35.339Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=141&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ytRGoMSeLhg6hiuKBZN7SQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: uhHHbD7prF0HH5qcBExgmyW+UJw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313431266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08080af
+
003 TX OCTETS: 8104f08080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c7cdb61d89364dc37c3668e67c134de65
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3763646236316438
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c1f040c421ced4b2d766a6b625e736d3b
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3166303430633432
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_17_3.json b/autobahn/client/hornbeam_case_6_17_3.json new file mode 100644 index 0000000..e1d5e82 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 141, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=141&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ytRGoMSeLhg6hiuKBZN7SQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: uhHHbD7prF0HH5qcBExgmyW+UJw=\r\n\r\n", + "id": "6.17.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:35.339Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313431266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf08080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f08080af" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c7cdb61d89364dc37c3668e67c134de65" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "7cdb61d8" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c1f040c421ced4b2d766a6b625e736d3b" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "1f040c42" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_17_4.html b/autobahn/client/hornbeam_case_6_17_4.html new file mode 100644 index 0000000..88b8304 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.17.4 : Fail - 503 ms @ 2023-08-10T21:35:35.844Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=142&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gnf7EEavyXf+bMuyAsFxgA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8XQiPhK1DVr4iuXkcXBJ6LD0j2U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313432266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf8808080af
+
003 TX OCTETS: 8105f8808080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f8944385466fb85bb36f9d7eb34ab87e966fb85
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3839343433383534
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cbddcb840be35ff2fd4b2df60fcabd939
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6264646362383430
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_17_4.json b/autobahn/client/hornbeam_case_6_17_4.json new file mode 100644 index 0000000..40d5592 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 142, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=142&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gnf7EEavyXf+bMuyAsFxgA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8XQiPhK1DVr4iuXkcXBJ6LD0j2U=\r\n\r\n", + "id": "6.17.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:35.844Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313432266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf8808080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f8808080af" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f8944385466fb85bb36f9d7eb34ab87e966fb85" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "89443854" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cbddcb840be35ff2fd4b2df60fcabd939" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "bddcb840" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_17_5.html b/autobahn/client/hornbeam_case_6_17_5.html new file mode 100644 index 0000000..4eec983 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.17.5 : Fail - 503 ms @ 2023-08-10T21:35:36.351Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=143&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: EUZ/wbK3f4OndZrDIr6wiw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NPELMT/CmQXhoij2uv1Eco1bJns=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313433266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc80808080af
+
003 TX OCTETS: 8106fc80808080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92a9be4dae4601f0411603a2111451f2134601f0411603
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6139626534646165
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cfba54453f84c033c92cb2373bad2252a
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6662613534343533
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_17_5.json b/autobahn/client/hornbeam_case_6_17_5.json new file mode 100644 index 0000000..50bd763 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_17_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 143, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=143&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: EUZ/wbK3f4OndZrDIr6wiw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NPELMT/CmQXhoij2uv1Eco1bJns=\r\n\r\n", + "id": "6.17.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:36.351Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313433266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc80808080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc80808080af" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92a9be4dae4601f0411603a2111451f2134601f0411603" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "a9be4dae" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cfba54453f84c033c92cb2373bad2252a" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "fba54453" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_18_1.html b/autobahn/client/hornbeam_case_6_18_1.html new file mode 100644 index 0000000..4984b79 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.18.1 : Fail - 503 ms @ 2023-08-10T21:35:36.856Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=144&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 6rtfZ7uM4TzLPBqfdfhUow==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: QtKQoZMj87+xR2JcSTBYgmlSxlQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
11111
18118
1841184
Total4214
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313434266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc1bf
+
003 TX OCTETS: 8102c1bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8680fad2c96f456f263f47
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASKED=True, MASK=3830666164326339
+
               ��
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c2da435202e4d724f44ca52006cd35459
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3264613433353230
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_18_1.json b/autobahn/client/hornbeam_case_6_18_1.json new file mode 100644 index 0000000..73e03d8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 144, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=144&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 6rtfZ7uM4TzLPBqfdfhUow==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: QtKQoZMj87+xR2JcSTBYgmlSxlQ=\r\n\r\n", + "id": "6.18.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "11": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:36.856Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313434266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc1bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c1bf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 11, + "8680fad2c96f456f263f47" + ] + ], + [ + "RF", + [ + 6, + "\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "80fad2c9" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c2da435202e4d724f44ca52006cd35459" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "2da43520" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_18_2.html b/autobahn/client/hornbeam_case_6_18_2.html new file mode 100644 index 0000000..626f7d2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.18.2 : Fail - 503 ms @ 2023-08-10T21:35:37.361Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=145&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: /5waYMsUbY3Z+6sfHkMaJA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AE4sfnY1ovbO3qDjwMs4y5DCwBU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313435266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe09fbf
+
003 TX OCTETS: 8103e09fbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 892d39e8edc28655029284075290
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3264333965386564
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c0cc8aebd0f21e9d265a6c99d4dbfcfc4
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3063633861656264
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_18_2.json b/autobahn/client/hornbeam_case_6_18_2.json new file mode 100644 index 0000000..c9929fa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 145, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=145&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: /5waYMsUbY3Z+6sfHkMaJA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AE4sfnY1ovbO3qDjwMs4y5DCwBU=\r\n\r\n", + "id": "6.18.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:37.361Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313435266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe09fbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e09fbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "892d39e8edc28655029284075290" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "2d39e8ed" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c0cc8aebd0f21e9d265a6c99d4dbfcfc4" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "0cc8aebd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_18_3.html b/autobahn/client/hornbeam_case_6_18_3.html new file mode 100644 index 0000000..6f3fb61 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.18.3 : Fail - 502 ms @ 2023-08-10T21:35:37.866Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=146&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5dv0bHtwFWMzfyHzuU4jmw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JfvJMTIkB23yVZt4DFXl84jVxWY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313436266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08fbfbf
+
003 TX OCTETS: 8104f08fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c163622f9f9899f16a98bcd46abd99d44
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3136333632326639
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ce3c5e6a0e02ca1cf8aab8180a2b287d9
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6533633565366130
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_18_3.json b/autobahn/client/hornbeam_case_6_18_3.json new file mode 100644 index 0000000..9452b31 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 146, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=146&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5dv0bHtwFWMzfyHzuU4jmw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JfvJMTIkB23yVZt4DFXl84jVxWY=\r\n\r\n", + "id": "6.18.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:37.866Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313436266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf08fbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f08fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c163622f9f9899f16a98bcd46abd99d44" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "163622f9" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ce3c5e6a0e02ca1cf8aab8180a2b287d9" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "e3c5e6a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_18_4.html b/autobahn/client/hornbeam_case_6_18_4.html new file mode 100644 index 0000000..931a511 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.18.4 : Fail - 502 ms @ 2023-08-10T21:35:38.371Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=147&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tCdYRapfdebBsCWJLPK/CQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 05i/Q0+sf6tRy1ZIJjsvWYRvZig=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313437266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf887bfbfbf
+
003 TX OCTETS: 8105f887bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f2e049251c1bb2fbe91b97dee93eb2decc1bb2f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3265303439323531
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c98b33b219b5a7c4ef1dd5c01d9c45a58
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3938623333623231
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_18_4.json b/autobahn/client/hornbeam_case_6_18_4.json new file mode 100644 index 0000000..f9ab967 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 147, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=147&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tCdYRapfdebBsCWJLPK/CQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 05i/Q0+sf6tRy1ZIJjsvWYRvZig=\r\n\r\n", + "id": "6.18.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:38.371Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313437266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf887bfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f887bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f2e049251c1bb2fbe91b97dee93eb2decc1bb2f" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "2e049251" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c98b33b219b5a7c4ef1dd5c01d9c45a58" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "98b33b21" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_18_5.html b/autobahn/client/hornbeam_case_6_18_5.html new file mode 100644 index 0000000..2bdf09f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.18.5 : Fail - 502 ms @ 2023-08-10T21:35:38.875Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=148&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: I7jojcPK/xck3k+5tEbRaw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: u+bwfcm4Ei66iDzevwgQGS5R/Qg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313438266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc83bfbfbfbf
+
003 TX OCTETS: 8106fc83bfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92d9764b1e36c9f6f166cba4a16499f4a336c9f6f166cb
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6439373634623165
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cc3f1c9d1c0188ebeaa9faef18286a8a8
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6333663163396431
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_18_5.json b/autobahn/client/hornbeam_case_6_18_5.json new file mode 100644 index 0000000..e96bdee --- /dev/null +++ b/autobahn/client/hornbeam_case_6_18_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 148, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=148&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: I7jojcPK/xck3k+5tEbRaw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: u+bwfcm4Ei66iDzevwgQGS5R/Qg=\r\n\r\n", + "id": "6.18.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:38.875Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313438266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc83bfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc83bfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92d9764b1e36c9f6f166cba4a16499f4a336c9f6f166cb" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "d9764b1e" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cc3f1c9d1c0188ebeaa9faef18286a8a8" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "c3f1c9d1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_19_1.html b/autobahn/client/hornbeam_case_6_19_1.html new file mode 100644 index 0000000..c646fd6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.19.1 : Fail - 503 ms @ 2023-08-10T21:35:39.378Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=149&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5YOm9rVnBcd9H7OzlMdgPQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5s3dqYj5EPAqmo7y0LgTZf1wY18=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
11111
18118
1841184
Total4214
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313439266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc080
+
003 TX OCTETS: 8102c080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 86e4719bac0bce26435bcc
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASKED=True, MASK=6534373139626163
+
               ��
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c144d9b0617a4dc697d23fc26553afa7f
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3134346439623036
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_19_1.json b/autobahn/client/hornbeam_case_6_19_1.json new file mode 100644 index 0000000..bd24577 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 149, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=149&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5YOm9rVnBcd9H7OzlMdgPQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5s3dqYj5EPAqmo7y0LgTZf1wY18=\r\n\r\n", + "id": "6.19.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "11": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:39.378Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313439266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 11, + "86e4719bac0bce26435bcc" + ] + ], + [ + "RF", + [ + 6, + "\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "e4719bac" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c144d9b0617a4dc697d23fc26553afa7f" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "144d9b06" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_19_2.html b/autobahn/client/hornbeam_case_6_19_2.html new file mode 100644 index 0000000..8e40a72 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.19.2 : Fail - 503 ms @ 2023-08-10T21:35:39.884Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=150&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5Y8QLikla/CWukp6UcUrKQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: uoSpUXMj48y6WxtLSddBuhoZ1gk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313530266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe08080
+
003 TX OCTETS: 8103e08080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89857671bd6ac9cc523acb9e0238
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3835373637316264
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c15378f4816dec8277c59e8685440ee31
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3135333738663438
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_19_2.json b/autobahn/client/hornbeam_case_6_19_2.json new file mode 100644 index 0000000..01da09c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 150, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=150&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5Y8QLikla/CWukp6UcUrKQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: uoSpUXMj48y6WxtLSddBuhoZ1gk=\r\n\r\n", + "id": "6.19.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:39.884Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313530266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe08080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e08080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89857671bd6ac9cc523acb9e0238" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "857671bd" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c15378f4816dec8277c59e8685440ee31" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "15378f48" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_19_3.html b/autobahn/client/hornbeam_case_6_19_3.html new file mode 100644 index 0000000..cc4ad33 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.19.3 : Fail - 502 ms @ 2023-08-10T21:35:40.389Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=151&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gL34PBSg5zXeGcf7uwGK4A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: i+Ci/fI0vwxsD1jRH10unGWegs4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1841184
Total4220
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313531266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf0808080
+
003 TX OCTETS: 8104f0808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c5250e103bdef5ceceded0ebcefbf5ebe
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3532353065313033
+
               ����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cac8700dcaf6e47b3c5e967fcedf061a5
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6163383730306463
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_19_3.json b/autobahn/client/hornbeam_case_6_19_3.json new file mode 100644 index 0000000..0719432 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 151, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=151&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gL34PBSg5zXeGcf7uwGK4A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: i+Ci/fI0vwxsD1jRH10unGWegs4=\r\n\r\n", + "id": "6.19.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:40.389Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313531266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf0808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c5250e103bdef5ceceded0ebcefbf5ebe" + ] + ], + [ + "RF", + [ + 12, + "\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "5250e103" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cac8700dcaf6e47b3c5e967fcedf061a5" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ac8700dc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_19_4.html b/autobahn/client/hornbeam_case_6_19_4.html new file mode 100644 index 0000000..5a86655 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.19.4 : Fail - 503 ms @ 2023-08-10T21:35:40.892Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=152&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: /4BHMyle3keNkkxApAsI7Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: p+Sn/011C5jypD8oYHcYYIX3tjU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1841184
Total4223
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313532266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf880808080
+
003 TX OCTETS: 8105f880808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8f9bcc2f55747392ba2471c0ea262390e8747392
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=3962636332663535
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cff387de0fcd13a8f96561ac0be4f1c99
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6666333837646530
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_19_4.json b/autobahn/client/hornbeam_case_6_19_4.json new file mode 100644 index 0000000..2e097f4 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 152, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=152&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: /4BHMyle3keNkkxApAsI7Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: p+Sn/011C5jypD8oYHcYYIX3tjU=\r\n\r\n", + "id": "6.19.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:40.892Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313532266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf880808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f880808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8f9bcc2f55747392ba2471c0ea262390e8747392" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "9bcc2f55" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cff387de0fcd13a8f96561ac0be4f1c99" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ff387de0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_19_5.html b/autobahn/client/hornbeam_case_6_19_5.html new file mode 100644 index 0000000..5566afa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.19.5 : Fail - 503 ms @ 2023-08-10T21:35:41.397Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=153&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 1mTrCAONuzkSVtDnPkQReg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RxX/Z4nNu29LhZdwJNMHo82Kw6Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313533266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc8080808080
+
003 TX OCTETS: 8106fc8080808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92ee9679990129c476512b96265379c6240129c476512b
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6565393637393939
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c2addee942934a9fb43b389b46baa8fed
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3261646465653934
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_19_5.json b/autobahn/client/hornbeam_case_6_19_5.json new file mode 100644 index 0000000..c06ee24 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_19_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 153, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=153&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 1mTrCAONuzkSVtDnPkQReg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RxX/Z4nNu29LhZdwJNMHo82Kw6Q=\r\n\r\n", + "id": "6.19.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:41.397Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313533266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc8080808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc8080808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92ee9679990129c476512b96265379c6240129c476512b" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "ee967999" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c2addee942934a9fb43b389b46baa8fed" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "2addee94" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_1_1.html b/autobahn/client/hornbeam_case_6_1_1.html new file mode 100644 index 0000000..079ae85 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_1.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.1.1 : Pass - 45 ms @ 2023-08-10T21:35:06.316Z

+

Case Description

Send text message of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=65&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: wkTtoFepL0DX4RQ3wQRh1Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BEbkeIjLvCALquPpJaAk5+lXCP0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
515
818
1831183
Total4197
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3635266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8100
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 80493535ab
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3439333533356162
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88821108418b12e0
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3131303834313862
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_1_1.json b/autobahn/client/hornbeam_case_6_1_1.json new file mode 100644 index 0000000..e4db693 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 65, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message of length 0.", + "droppedByMe": true, + "duration": 45, + "expectation": "A message is echo'ed back to us (with empty payload).", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=65&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: wkTtoFepL0DX4RQ3wQRh1Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BEbkeIjLvCALquPpJaAk5+lXCP0=\r\n\r\n", + "id": "6.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "5": 1, + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.316Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3635266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8100" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 5, + "80493535ab" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "493535ab" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821108418b12e0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1108418b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_1_2.html b/autobahn/client/hornbeam_case_6_1_2.html new file mode 100644 index 0000000..ca2fbe5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_2.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.1.2 : Pass - 3 ms @ 2023-08-10T21:35:06.363Z

+

Case Description

Send fragmented text message, 3 fragments each of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (UNCLEAN)

+

+

Opening Handshake

+
GET /runCase?case=66&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: BchGg7fRJXHzJIOSpGFVWg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /rsnRWvo4iVY8/kyejB51QAvWJU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
515
1831183
Total3189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
236
414
2061206
Total5216
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02
11
81
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3636266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 0100
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 0000
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8000
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 81
+
010 RX OCTETS: 800bb52473
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3062623532343733
+
012 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
013 TX OCTETS: 880203e8
+
014 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_1_2.json b/autobahn/client/hornbeam_case_6_1_2.json new file mode 100644 index 0000000..0ca3c37 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_2.json @@ -0,0 +1,209 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "UNCLEAN", + "case": 66, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message, 3 fragments each of length 0.", + "droppedByMe": false, + "duration": 3, + "expectation": "A message is echo'ed back to us (with empty payload).", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=66&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: BchGg7fRJXHzJIOSpGFVWg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /rsnRWvo4iVY8/kyejB51QAvWJU=\r\n\r\n", + "id": "6.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "5": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.363Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3636266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0100" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0000" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 5, + "800bb52473" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "0bb52473" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_1_3.html b/autobahn/client/hornbeam_case_6_1_3.html new file mode 100644 index 0000000..c19b00b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_3.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.1.3 : Fail - 3 ms @ 2023-08-10T21:35:06.368Z

+

Case Description

Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.

+

Case Expectation

A message is echo'ed back to us (with payload = payload of middle fragment).

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'middle frame payload', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=67&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Krod0B+bF/zTtxh2jPdskQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bGUD0BEFC6sPV3q2EZDxsHBTY/I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
515
1831183
Total3189
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
224
22122
2061206
Total4232
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
02
11
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3637266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 0100
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=20, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               middle frame payload
+
005 TX OCTETS: 00146d6964646c65206672616d65207061796c6f6164
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8000
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 81
+
010 RX OCTETS: 808d280333
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3864323830333333
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_1_3.json b/autobahn/client/hornbeam_case_6_1_3.json new file mode 100644 index 0000000..df82f08 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_1_3.json @@ -0,0 +1,186 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 67, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.", + "droppedByMe": false, + "duration": 3, + "expectation": "A message is echo'ed back to us (with payload = payload of middle fragment).", + "expected": { + "OK": [ + [ + "message", + "middle frame payload", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=67&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Krod0B+bF/zTtxh2jPdskQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bGUD0BEFC6sPV3q2EZDxsHBTY/I=\r\n\r\n", + "id": "6.1.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "5": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.368Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 1 + }, + "txOctetStats": { + "2": 2, + "22": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3637266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0100" + ], + false + ], + [ + "TF", + [ + 20, + "middle frame payload" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 22, + "00146d6964646c65206672616d65207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 5, + "808d280333" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "8d280333" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_1.html b/autobahn/client/hornbeam_case_6_20_1.html new file mode 100644 index 0000000..8ff677a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.1 : Fail - 502 ms @ 2023-08-10T21:35:41.902Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=154&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: H0m1Vc0fBPnJEh7c/UJEjg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aGwT6si5EZcVGd8h5C60Tqu2BYY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313534266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í €
+
003 TX OCTETS: 8103eda080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8930d7603fdf68ddd08f6a8f808d
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3330643736303366
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c2351b01420b8f77b4a3fd7346226d16d
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3233353162303134
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_1.json b/autobahn/client/hornbeam_case_6_20_1.json new file mode 100644 index 0000000..53c5967 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 154, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=154&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: H0m1Vc0fBPnJEh7c/UJEjg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aGwT6si5EZcVGd8h5C60Tqu2BYY=\r\n\r\n", + "id": "6.20.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:41.902Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313534266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ud800" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103eda080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8930d7603fdf68ddd08f6a8f808d" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "30d7603f" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c2351b01420b8f77b4a3fd7346226d16d" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "2351b014" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_2.html b/autobahn/client/hornbeam_case_6_20_2.html new file mode 100644 index 0000000..87e1a28 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_2.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.2 : Fail - 503 ms @ 2023-08-10T21:35:42.405Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=155&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: QUuT4kTl3i8Js7ajOYC1wQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Ex81XWyaiV59tSDFPoqFOoLlcV0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
111
616
12112
14114
1841184
Total5217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313535266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í­¿
+
003 TX OCTETS: 8103edadbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89f26ae1d71dd55c384dd70e684f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6632366165316437
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c63a59482
+
012 RX OCTETS: 604cd3ed0acbf3a222d2f5fb
+
013 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3633613539343832
+
               0x03e9476f696e672041776179
+
014 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_2.json b/autobahn/client/hornbeam_case_6_20_2.json new file mode 100644 index 0000000..31f5434 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_2.json @@ -0,0 +1,191 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 155, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=155&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: QUuT4kTl3i8Js7ajOYC1wQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Ex81XWyaiV59tSDFPoqFOoLlcV0=\r\n\r\n", + "id": "6.20.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "6": 1, + "12": 1, + "14": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:42.405Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313535266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udb7f" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edadbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89f26ae1d71dd55c384dd70e684f" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "f26ae1d7" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 6, + "888c63a59482" + ] + ], + [ + "RO", + [ + 12, + "604cd3ed0acbf3a222d2f5fb" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "63a59482" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_3.html b/autobahn/client/hornbeam_case_6_20_3.html new file mode 100644 index 0000000..7b865cc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.3 : Fail - 502 ms @ 2023-08-10T21:35:42.910Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=156&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DT4PcDj2efCS/7My4V9jsA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: a5fW39DmKK2ObGFMo/uUi3VfEIc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313536266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í®€
+
003 TX OCTETS: 8103edae80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8957a87ac0b817c72fe815957fea
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3537613837616330
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c063871c505d136aa6f5616e5474f10bc
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3036333837316335
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_3.json b/autobahn/client/hornbeam_case_6_20_3.json new file mode 100644 index 0000000..0a3e467 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 156, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=156&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DT4PcDj2efCS/7My4V9jsA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: a5fW39DmKK2ObGFMo/uUi3VfEIc=\r\n\r\n", + "id": "6.20.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:42.910Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313536266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udb80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edae80" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8957a87ac0b817c72fe815957fea" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "57a87ac0" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c063871c505d136aa6f5616e5474f10bc" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "063871c5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_4.html b/autobahn/client/hornbeam_case_6_20_4.html new file mode 100644 index 0000000..e1c655b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.4 : Fail - 503 ms @ 2023-08-10T21:35:43.414Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=157&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tVH6RMBH4BEBv/AkkATEMA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2LNIN8CiduTE2VX5OHBlPuyA1jc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313537266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¯¿
+
003 TX OCTETS: 8103edafbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8960f0a8818f4f156edf4d473edd
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3630663061383831
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c7956d3cf7abf94a01038b4ef3821b2b6
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3739353664336366
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_4.json b/autobahn/client/hornbeam_case_6_20_4.json new file mode 100644 index 0000000..1e2d118 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 157, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=157&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tVH6RMBH4BEBv/AkkATEMA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2LNIN8CiduTE2VX5OHBlPuyA1jc=\r\n\r\n", + "id": "6.20.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:43.414Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313537266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udbff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edafbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "8960f0a8818f4f156edf4d473edd" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "60f0a881" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c7956d3cf7abf94a01038b4ef3821b2b6" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "7956d3cf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_5.html b/autobahn/client/hornbeam_case_6_20_5.html new file mode 100644 index 0000000..fb3b3a8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.5 : Fail - 503 ms @ 2023-08-10T21:35:43.919Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=158&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: /A0R/1VDYva+ln+G8Epuqw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OC6610wsOaUNteLs8bC/4dheLbU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313538266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í°€
+
003 TX OCTETS: 8103edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 895415e52fbbaa58c0eba80a90e9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3534313565353266
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cd6dfbf2dd536f842bfb1d80d97a8de54
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6436646662663264
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_5.json b/autobahn/client/hornbeam_case_6_20_5.json new file mode 100644 index 0000000..47a90fc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 158, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=158&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: /A0R/1VDYva+ln+G8Epuqw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OC6610wsOaUNteLs8bC/4dheLbU=\r\n\r\n", + "id": "6.20.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:43.919Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313538266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edb080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "895415e52fbbaa58c0eba80a90e9" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "5415e52f" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cd6dfbf2dd536f842bfb1d80d97a8de54" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "d6dfbf2d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_6.html b/autobahn/client/hornbeam_case_6_20_6.html new file mode 100644 index 0000000..2f32e09 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.6 : Fail - 503 ms @ 2023-08-10T21:35:44.424Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=159&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: JyeFimO/G/adZl6uuqFuZw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YcBguhRjHDQx9ASQPto3IOKq4Lo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313539266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¾€
+
003 TX OCTETS: 8103edbe80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89642947af8b96fa40db94a810d9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3634323934376166
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c0201454101e8022e6b6f226143762438
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3032303134353431
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_6.json b/autobahn/client/hornbeam_case_6_20_6.json new file mode 100644 index 0000000..e2a2fc6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_6.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 159, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=159&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: JyeFimO/G/adZl6uuqFuZw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YcBguhRjHDQx9ASQPto3IOKq4Lo=\r\n\r\n", + "id": "6.20.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:44.424Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313539266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edbe80" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89642947af8b96fa40db94a810d9" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "642947af" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c0201454101e8022e6b6f226143762438" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "02014541" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_20_7.html b/autobahn/client/hornbeam_case_6_20_7.html new file mode 100644 index 0000000..206cfc4 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_7.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.20.7 : Fail - 502 ms @ 2023-08-10T21:35:44.929Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=160&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: taIftvKWXH5Sy3RV+mbYNw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vH1NMYO0LTEHIzyVy5CeENt3w94=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
14114
18118
1841184
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313630266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¿¿
+
003 TX OCTETS: 8103edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89a0bb80d44f043d3b1f066f6b1d
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6130626238306434
+
               ���
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c3a84b989396dfee653eadea97bf3d8f0
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3361383462393839
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_20_7.json b/autobahn/client/hornbeam_case_6_20_7.json new file mode 100644 index 0000000..4c44658 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_20_7.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 160, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=160&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: taIftvKWXH5Sy3RV+mbYNw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vH1NMYO0LTEHIzyVy5CeENt3w94=\r\n\r\n", + "id": "6.20.7", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "14": 1, + "18": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:44.929Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313630266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89a0bb80d44f043d3b1f066f6b1d" + ] + ], + [ + "RF", + [ + 9, + "\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "a0bb80d4" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c3a84b989396dfee653eadea97bf3d8f0" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "3a84b989" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_1.html b/autobahn/client/hornbeam_case_6_21_1.html new file mode 100644 index 0000000..7b18d23 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.1 : Fail - 511 ms @ 2023-08-10T21:35:45.433Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=161&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: rfFfabEpE0efvsznFzCwBw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iXgk/A/BJHw5mOkN+hzFgrRr2KQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313631266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð€€
+
003 TX OCTETS: 8106eda080edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92534fb100bcf00cefecf25ebfeea00ebdbcf00cefecf2
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3533346662313030
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c57cab3a65423f4c93ea4d48616bdd2df
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3537636162336136
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_1.json b/autobahn/client/hornbeam_case_6_21_1.json new file mode 100644 index 0000000..09b02e2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 161, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080", + "droppedByMe": true, + "duration": 511, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=161&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: rfFfabEpE0efvsznFzCwBw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iXgk/A/BJHw5mOkN+hzFgrRr2KQ=\r\n\r\n", + "id": "6.21.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:45.433Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313631266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\ud800\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106eda080edb080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92534fb100bcf00cefecf25ebfeea00ebdbcf00cefecf2" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "534fb100" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c57cab3a65423f4c93ea4d48616bdd2df" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "57cab3a6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_2.html b/autobahn/client/hornbeam_case_6_21_2.html new file mode 100644 index 0000000..741f5fd --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.2 : Fail - 503 ms @ 2023-08-10T21:35:45.946Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=162&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gEJOiNSSvQCVJ6qVAfLq+Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DksLjYlfNEBmh9JxVWieLfqZR/E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313632266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿
+
003 TX OCTETS: 8106eda080edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9264c4b33a8b7b0ed5db795c85d92b0c878b7b0ed5db79
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3634633462333361
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888ccbd71e64c83e590ba2b979448aa07f1d
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6362643731653634
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_2.json b/autobahn/client/hornbeam_case_6_21_2.json new file mode 100644 index 0000000..558d109 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 162, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=162&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gEJOiNSSvQCVJ6qVAfLq+Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DksLjYlfNEBmh9JxVWieLfqZR/E=\r\n\r\n", + "id": "6.21.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:45.946Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313632266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\ud800\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106eda080edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "9264c4b33a8b7b0ed5db795c85d92b0c878b7b0ed5db79" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "64c4b33a" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888ccbd71e64c83e590ba2b979448aa07f1d" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "cbd71e64" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_3.html b/autobahn/client/hornbeam_case_6_21_3.html new file mode 100644 index 0000000..eac2af1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.3 : Fail - 502 ms @ 2023-08-10T21:35:46.452Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=163&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tawJro3usIg0PaoRknjteQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iMKwDnsmXSDORvoEyBKRRj3ABfQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313633266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¯°€
+
003 TX OCTETS: 8106edadbfedb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92d66d2e8539d2936a69d0c13a6b82913839d2936a69d0
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6436366432653835
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c104b6e5413a2293b79250974513c0f2d
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3130346236653534
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_3.json b/autobahn/client/hornbeam_case_6_21_3.json new file mode 100644 index 0000000..5f4c121 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 163, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=163&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tawJro3usIg0PaoRknjteQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iMKwDnsmXSDORvoEyBKRRj3ABfQ=\r\n\r\n", + "id": "6.21.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:46.452Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313633266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb7f\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edadbfedb080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92d66d2e8539d2936a69d0c13a6b82913839d2936a69d0" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "d66d2e85" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c104b6e5413a2293b79250974513c0f2d" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "104b6e54" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_4.html b/autobahn/client/hornbeam_case_6_21_4.html new file mode 100644 index 0000000..43f0825 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.4 : Fail - 502 ms @ 2023-08-10T21:35:46.955Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=164&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: nSJSMQQ3qG4O1hkYndvBPQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yUxOA2XyUXp/c4TLOCHUI9HdGzo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313634266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿿
+
003 TX OCTETS: 8106edadbfedbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92b134c9105e8b74ff0e8926af0cdb76ad5e8b74ff0e89
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6231333463393130
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c77f17f347418385b1e9f181436861e4d
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3737663137663334
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_4.json b/autobahn/client/hornbeam_case_6_21_4.json new file mode 100644 index 0000000..13406d3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 164, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=164&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: nSJSMQQ3qG4O1hkYndvBPQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yUxOA2XyUXp/c4TLOCHUI9HdGzo=\r\n\r\n", + "id": "6.21.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:46.955Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313634266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edadbfedbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92b134c9105e8b74ff0e8926af0cdb76ad5e8b74ff0e89" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "b134c910" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c77f17f347418385b1e9f181436861e4d" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "77f17f34" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_5.html b/autobahn/client/hornbeam_case_6_21_5.html new file mode 100644 index 0000000..a4077a8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.5 : Fail - 502 ms @ 2023-08-10T21:35:47.458Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=165&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 1YOcllmJeM6na0xFu9uIzg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BjzXlonHWpdJDcoPjf6gyMAkkDQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313635266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó°€€
+
003 TX OCTETS: 8106edae80edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9290f0426e7f4fff812f4dadd12d1ffdd37f4fff812f4d
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3930663034323665
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cad20fef1aec9b99ec44e99d1ec579f88
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6164323066656631
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_5.json b/autobahn/client/hornbeam_case_6_21_5.json new file mode 100644 index 0000000..fca2b42 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_5.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 165, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=165&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 1YOcllmJeM6na0xFu9uIzg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BjzXlonHWpdJDcoPjf6gyMAkkDQ=\r\n\r\n", + "id": "6.21.5", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:47.458Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313635266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb80\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edae80edb080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "9290f0426e7f4fff812f4dadd12d1ffdd37f4fff812f4d" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "90f0426e" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cad20fef1aec9b99ec44e99d1ec579f88" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "ad20fef1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_6.html b/autobahn/client/hornbeam_case_6_21_6.html new file mode 100644 index 0000000..83ed492 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.6 : Fail - 502 ms @ 2023-08-10T21:35:47.961Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=166&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Zu/e0gRrhPGpN53tVvWBdw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XBq1q+u68Z4l103bemKvzb1ML0g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313636266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó°¿
+
003 TX OCTETS: 8106edae80edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9293e39ae17c5c270e2c5e755e2e0c255c7c5c270e2c5e
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3933653339616531
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cbdf5a8a1be1cefced49bcf81fc82c9d8
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6264663561386131
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_6.json b/autobahn/client/hornbeam_case_6_21_6.json new file mode 100644 index 0000000..f3d40d3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_6.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 166, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=166&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Zu/e0gRrhPGpN53tVvWBdw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XBq1q+u68Z4l103bemKvzb1ML0g=\r\n\r\n", + "id": "6.21.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:47.961Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313636266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb80\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edae80edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "9293e39ae17c5c270e2c5e755e2e0c255c7c5c270e2c5e" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "93e39ae1" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cbdf5a8a1be1cefced49bcf81fc82c9d8" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "bdf5a8a1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_7.html b/autobahn/client/hornbeam_case_6_21_7.html new file mode 100644 index 0000000..6ba61e1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_7.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.7 : Fail - 502 ms @ 2023-08-10T21:35:48.466Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=167&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: dXN5QTqF3pAGZo7t2FkZ7w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3PLQUIdQntq7Kzx4t0jZ+i0Vn+U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313637266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô°€
+
003 TX OCTETS: 8106edafbfedb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92f556beba1ae903554aeb510548b901071ae903554aeb
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6635353662656261
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c0d23722b0eca3544644d150b4c541352
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3064323337323262
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_7.json b/autobahn/client/hornbeam_case_6_21_7.json new file mode 100644 index 0000000..60ab78c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_7.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 167, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080", + "droppedByMe": true, + "duration": 502, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=167&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: dXN5QTqF3pAGZo7t2FkZ7w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3PLQUIdQntq7Kzx4t0jZ+i0Vn+U=\r\n\r\n", + "id": "6.21.7", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:48.466Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313637266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udbff\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edafbfedb080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92f556beba1ae903554aeb510548b901071ae903554aeb" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "f556beba" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c0d23722b0eca3544644d150b4c541352" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "0d23722b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_21_8.html b/autobahn/client/hornbeam_case_6_21_8.html new file mode 100644 index 0000000..3ad11c0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_8.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.21.8 : Fail - 503 ms @ 2023-08-10T21:35:48.970Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=168&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: XtBmEgC2ZDL+jv06YWOVpA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tUVIzhtbkwyQbNRY9I9dTA15sXY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1841184
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313638266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8106edafbfedbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 92ae0f4b4d41b0f6a211b2a4f213e0f4f041b0f6a211b2
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6165306634623464
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c3e38889b3dd1cff45756efbb7f4fe9e2
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3365333838383962
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_21_8.json b/autobahn/client/hornbeam_case_6_21_8.json new file mode 100644 index 0000000..0dce437 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_21_8.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 168, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=168&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: XtBmEgC2ZDL+jv06YWOVpA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tUVIzhtbkwyQbNRY9I9dTA15sXY=\r\n\r\n", + "id": "6.21.8", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:48.970Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313638266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edafbfedbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "92ae0f4b4d41b0f6a211b2a4f213e0f4f041b0f6a211b2" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "ae0f4b4d" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c3e38889b3dd1cff45756efbb7f4fe9e2" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "3e38889b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_1.html b/autobahn/client/hornbeam_case_6_22_1.html new file mode 100644 index 0000000..7f45cfd --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.1 : Pass - 49 ms @ 2023-08-10T21:35:49.475Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffe', False)]}

+ Observed:
[('message', u'\ufffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=169&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vtnnbMeGUwtWHbpY7jLO/Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +Z/zHCy/pofWzQvXAmJQ2ZS2KOo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313639266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ￾
+
003 TX OCTETS: 8103efbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83997f2f0176c091
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3939376632663031
+
               ￾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e58dcc85e665
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6535386463633835
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_1.json b/autobahn/client/hornbeam_case_6_22_1.json new file mode 100644 index 0000000..2fba811 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_1.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 169, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe", + "droppedByMe": true, + "duration": 49, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=169&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vtnnbMeGUwtWHbpY7jLO/Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +Z/zHCy/pofWzQvXAmJQ2ZS2KOo=\r\n\r\n", + "id": "6.22.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:49.475Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313639266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83997f2f0176c091" + ] + ], + [ + "RF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + true, + "997f2f01" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e58dcc85e665" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e58dcc85" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_10.html b/autobahn/client/hornbeam_case_6_22_10.html new file mode 100644 index 0000000..3e367cb --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_10.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.10 : Pass - 45 ms @ 2023-08-10T21:35:49.899Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0004ffff', False)]}

+ Observed:
[('message', u'\U0004ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=178&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: OTDwbLawdo9J5a+cX4Kacg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mwAGUxmEs2eIyv1Zi6im7yjy9hk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313738266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿
+
003 TX OCTETS: 8104f18fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84815e4da070d1f21f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3831356534646130
+
               ñ¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e863fb4eeb8b
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6538363366623465
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_10.json b/autobahn/client/hornbeam_case_6_22_10.json new file mode 100644 index 0000000..8154cb8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_10.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 178, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8ff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=178&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: OTDwbLawdo9J5a+cX4Kacg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mwAGUxmEs2eIyv1Zi6im7yjy9hk=\r\n\r\n", + "id": "6.22.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8ff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.899Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313738266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8ff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f18fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84815e4da070d1f21f" + ] + ], + [ + "RF", + [ + 4, + "\ud8ff\udfff" + ], + 1, + true, + 0, + true, + "815e4da0" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e863fb4eeb8b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e863fb4e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_11.html b/autobahn/client/hornbeam_case_6_22_11.html new file mode 100644 index 0000000..4a1aca9 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_11.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.11 : Pass - 45 ms @ 2023-08-10T21:35:49.946Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0005fffe', False)]}

+ Observed:
[('message', u'\U0005fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=179&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: eqfeA4Z4eWfvC1efT8xdrw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6Q5OBPwzYUcBruE9EEBxqv++C78=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313739266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񟿾
+
003 TX OCTETS: 8104f19fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84b2bd03704322bcce
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6232626430333730
+
               񟿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882b7150adeb4fd
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6237313530616465
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_11.json b/autobahn/client/hornbeam_case_6_22_11.json new file mode 100644 index 0000000..0499bb7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_11.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 179, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud93f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=179&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: eqfeA4Z4eWfvC1efT8xdrw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6Q5OBPwzYUcBruE9EEBxqv++C78=\r\n\r\n", + "id": "6.22.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud93f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.946Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313739266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud93f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f19fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84b2bd03704322bcce" + ] + ], + [ + "RF", + [ + 4, + "\ud93f\udffe" + ], + 1, + true, + 0, + true, + "b2bd0370" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b7150adeb4fd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b7150ade" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_12.html b/autobahn/client/hornbeam_case_6_22_12.html new file mode 100644 index 0000000..c39b394 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_12.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.12 : Pass - 46 ms @ 2023-08-10T21:35:49.992Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0005ffff', False)]}

+ Observed:
[('message', u'\U0005ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=180&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: RLEbv/KoGQ4I58jmh/d3TQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OtbL3Z7fJwx5WKtJoAXvyy80tTU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313830266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񟿿
+
003 TX OCTETS: 8104f19fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84c146633a30d9dc85
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6331343636333361
+
               񟿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882edf8c3eeee10
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6564663863336565
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_12.json b/autobahn/client/hornbeam_case_6_22_12.json new file mode 100644 index 0000000..3419260 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_12.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 180, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud93f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=180&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: RLEbv/KoGQ4I58jmh/d3TQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OtbL3Z7fJwx5WKtJoAXvyy80tTU=\r\n\r\n", + "id": "6.22.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud93f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.992Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313830266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud93f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f19fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84c146633a30d9dc85" + ] + ], + [ + "RF", + [ + 4, + "\ud93f\udfff" + ], + 1, + true, + 0, + true, + "c146633a" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882edf8c3eeee10" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "edf8c3ee" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_13.html b/autobahn/client/hornbeam_case_6_22_13.html new file mode 100644 index 0000000..0429790 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_13.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.13 : Pass - 44 ms @ 2023-08-10T21:35:50.039Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0006fffe', False)]}

+ Observed:
[('message', u'\U0006fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=181&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: XMEJdVHsKib1U5rVas8yIg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: knTyH2R0Z25AlBiRXVNCYyhCLA4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313831266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񯿾
+
003 TX OCTETS: 8104f1afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 849f32e74d6e9d58f3
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3966333265373464
+
               񯿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88822642801c25aa
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3236343238303163
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_13.json b/autobahn/client/hornbeam_case_6_22_13.json new file mode 100644 index 0000000..cf6ab9b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_13.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 181, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud97f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=181&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: XMEJdVHsKib1U5rVas8yIg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: knTyH2R0Z25AlBiRXVNCYyhCLA4=\r\n\r\n", + "id": "6.22.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud97f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.039Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313831266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud97f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "849f32e74d6e9d58f3" + ] + ], + [ + "RF", + [ + 4, + "\ud97f\udffe" + ], + 1, + true, + 0, + true, + "9f32e74d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822642801c25aa" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2642801c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_14.html b/autobahn/client/hornbeam_case_6_22_14.html new file mode 100644 index 0000000..6dca9ec --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_14.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.14 : Pass - 49 ms @ 2023-08-10T21:35:50.085Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0006ffff', False)]}

+ Observed:
[('message', u'\U0006ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=182&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: NMiJHPp4IzVOfhPKG/U5aw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CndoqO2Ppvodlj7ktu+/yb7s3kI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313832266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񯿿
+
003 TX OCTETS: 8104f1afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84f30f81bd02a03e02
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6633306638316264
+
               񯿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882145c158617b4
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3134356331353836
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_14.json b/autobahn/client/hornbeam_case_6_22_14.json new file mode 100644 index 0000000..c05e1e8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_14.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 182, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf", + "droppedByMe": true, + "duration": 49, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud97f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=182&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: NMiJHPp4IzVOfhPKG/U5aw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CndoqO2Ppvodlj7ktu+/yb7s3kI=\r\n\r\n", + "id": "6.22.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud97f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.085Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313832266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud97f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84f30f81bd02a03e02" + ] + ], + [ + "RF", + [ + 4, + "\ud97f\udfff" + ], + 1, + true, + 0, + true, + "f30f81bd" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882145c158617b4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "145c1586" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_15.html b/autobahn/client/hornbeam_case_6_22_15.html new file mode 100644 index 0000000..a685871 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_15.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.15 : Pass - 48 ms @ 2023-08-10T21:35:50.136Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0007fffe', False)]}

+ Observed:
[('message', u'\U0007fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=183&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ufBHqXMlmH5NeY2YIMQ53A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HmYZJwWlAcGFHoeQhw9ggkPMm3Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313833266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿¾
+
003 TX OCTETS: 8104f1bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84ba5c8f604be330de
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6261356338663630
+
               ñ¿¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882904103b493a9
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3930343130336234
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_15.json b/autobahn/client/hornbeam_case_6_22_15.json new file mode 100644 index 0000000..109e291 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_15.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 183, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe", + "droppedByMe": true, + "duration": 48, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9bf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=183&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ufBHqXMlmH5NeY2YIMQ53A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HmYZJwWlAcGFHoeQhw9ggkPMm3Y=\r\n\r\n", + "id": "6.22.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9bf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.136Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313833266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9bf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84ba5c8f604be330de" + ] + ], + [ + "RF", + [ + 4, + "\ud9bf\udffe" + ], + 1, + true, + 0, + true, + "ba5c8f60" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882904103b493a9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "904103b4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_16.html b/autobahn/client/hornbeam_case_6_22_16.html new file mode 100644 index 0000000..d6d20c5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_16.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.16 : Pass - 45 ms @ 2023-08-10T21:35:50.186Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0007ffff', False)]}

+ Observed:
[('message', u'\U0007ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=184&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jtsdpZv0fOI7M0MdRYdByQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: djiiiTR/0aINSJK+YDltNTSC45Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313834266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿¿
+
003 TX OCTETS: 8104f1bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84fc1736c80da88977
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6663313733366338
+
               ñ¿¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88828f3572d48cdd
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3866333537326434
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_16.json b/autobahn/client/hornbeam_case_6_22_16.json new file mode 100644 index 0000000..a517e8d --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_16.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 184, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9bf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=184&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jtsdpZv0fOI7M0MdRYdByQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: djiiiTR/0aINSJK+YDltNTSC45Q=\r\n\r\n", + "id": "6.22.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9bf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.186Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313834266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9bf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84fc1736c80da88977" + ] + ], + [ + "RF", + [ + 4, + "\ud9bf\udfff" + ], + 1, + true, + 0, + true, + "fc1736c8" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828f3572d48cdd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8f3572d4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_17.html b/autobahn/client/hornbeam_case_6_22_17.html new file mode 100644 index 0000000..309afe1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_17.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.17 : Pass - 45 ms @ 2023-08-10T21:35:50.232Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0008fffe', False)]}

+ Observed:
[('message', u'\U0008fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=185&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 8foQVbbDPmKv/iOHftroPQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xYT8sR5ostmLILYp4x7BVjrTtRo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313835266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¾
+
003 TX OCTETS: 8104f28fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84fb66e8fd09e95743
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6662363665386664
+
               ò¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882a7ea001ea402
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6137656130303165
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_17.json b/autobahn/client/hornbeam_case_6_22_17.json new file mode 100644 index 0000000..888fc74 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_17.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 185, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9ff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=185&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 8foQVbbDPmKv/iOHftroPQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xYT8sR5ostmLILYp4x7BVjrTtRo=\r\n\r\n", + "id": "6.22.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9ff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.232Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313835266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9ff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f28fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84fb66e8fd09e95743" + ] + ], + [ + "RF", + [ + 4, + "\ud9ff\udffe" + ], + 1, + true, + 0, + true, + "fb66e8fd" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a7ea001ea402" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a7ea001e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_18.html b/autobahn/client/hornbeam_case_6_22_18.html new file mode 100644 index 0000000..9cac2ea --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_18.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.18 : Pass - 46 ms @ 2023-08-10T21:35:50.278Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0008ffff', False)]}

+ Observed:
[('message', u'\U0008ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=186&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: CzlLLOMBga5IXJrpsTvExg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6Tk1fPxhAf/dcncaSkSKz0Kmo2I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313836266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿
+
003 TX OCTETS: 8104f28fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84b65f47d644d0f869
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6236356634376436
+
               ò¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88820eaaffbb0d42
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3065616166666262
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_18.json b/autobahn/client/hornbeam_case_6_22_18.json new file mode 100644 index 0000000..ef5fa65 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_18.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 186, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9ff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=186&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: CzlLLOMBga5IXJrpsTvExg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6Tk1fPxhAf/dcncaSkSKz0Kmo2I=\r\n\r\n", + "id": "6.22.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9ff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.278Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313836266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9ff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f28fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84b65f47d644d0f869" + ] + ], + [ + "RF", + [ + 4, + "\ud9ff\udfff" + ], + 1, + true, + 0, + true, + "b65f47d6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820eaaffbb0d42" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0eaaffbb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_19.html b/autobahn/client/hornbeam_case_6_22_19.html new file mode 100644 index 0000000..ddf8984 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_19.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.19 : Pass - 46 ms @ 2023-08-10T21:35:50.325Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0009fffe', False)]}

+ Observed:
[('message', u'\U0009fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=187&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 0AL2mv6vhFC8FWu6V64V5Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NGdgLtzk99zX70+nXnb/zlvef28=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313837266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򟿾
+
003 TX OCTETS: 8104f29fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 844d43a77fbfdc18c1
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3464343361373766
+
               򟿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882d27ff569d197
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6432376666353639
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_19.json b/autobahn/client/hornbeam_case_6_22_19.json new file mode 100644 index 0000000..5e09c10 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_19.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 187, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda3f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=187&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 0AL2mv6vhFC8FWu6V64V5Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NGdgLtzk99zX70+nXnb/zlvef28=\r\n\r\n", + "id": "6.22.19", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda3f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.325Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313837266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda3f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f29fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "844d43a77fbfdc18c1" + ] + ], + [ + "RF", + [ + 4, + "\uda3f\udffe" + ], + 1, + true, + 0, + true, + "4d43a77f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d27ff569d197" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d27ff569" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_2.html b/autobahn/client/hornbeam_case_6_22_2.html new file mode 100644 index 0000000..d1b19cf --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.2 : Pass - 44 ms @ 2023-08-10T21:35:49.526Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=170&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: f/ZqjLYp54wYcUTrag973A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2q0qAp5F4JkvU0yQXWQ1rTbAecU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313730266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83224c05c4cdf3ba
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3232346330356334
+
               ï¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882c8cc2ea2cb24
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6338636332656132
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_2.json b/autobahn/client/hornbeam_case_6_22_2.json new file mode 100644 index 0000000..c014cd2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_2.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 170, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=170&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: f/ZqjLYp54wYcUTrag973A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2q0qAp5F4JkvU0yQXWQ1rTbAecU=\r\n\r\n", + "id": "6.22.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:49.526Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313730266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83224c05c4cdf3ba" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "224c05c4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c8cc2ea2cb24" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c8cc2ea2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_20.html b/autobahn/client/hornbeam_case_6_22_20.html new file mode 100644 index 0000000..191dc61 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_20.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.20 : Pass - 44 ms @ 2023-08-10T21:35:50.372Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0009ffff', False)]}

+ Observed:
[('message', u'\U0009ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=188&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: OQdZHIeOjYRl+SwjOI2wsg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TU7+unSmuULKpOCZ4WwttvK1FqE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313838266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               òŸ¿¿
+
003 TX OCTETS: 8104f29fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84a8474c965ad8f329
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6138343734633936
+
               òŸ¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882598ab06c5a62
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3539386162303663
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_20.json b/autobahn/client/hornbeam_case_6_22_20.json new file mode 100644 index 0000000..eb393b6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_20.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 188, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda3f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=188&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: OQdZHIeOjYRl+SwjOI2wsg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TU7+unSmuULKpOCZ4WwttvK1FqE=\r\n\r\n", + "id": "6.22.20", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda3f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.372Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313838266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda3f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f29fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84a8474c965ad8f329" + ] + ], + [ + "RF", + [ + 4, + "\uda3f\udfff" + ], + 1, + true, + 0, + true, + "a8474c96" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882598ab06c5a62" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "598ab06c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_21.html b/autobahn/client/hornbeam_case_6_22_21.html new file mode 100644 index 0000000..9e48df3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_21.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.21 : Pass - 45 ms @ 2023-08-10T21:35:50.418Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000afffe', False)]}

+ Observed:
[('message', u'\U000afffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=189&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Csk4eXGH+uaL+ZrvRkaEpQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1OYarAGbUYkBRjuS4Zf9Ys3LQNg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313839266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򯿾
+
003 TX OCTETS: 8104f2afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 843fe089e4cd4f365a
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3366653038396534
+
               򯿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882b1826111b26a
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6231383236313131
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_21.json b/autobahn/client/hornbeam_case_6_22_21.json new file mode 100644 index 0000000..0d06a77 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_21.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 189, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda7f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=189&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Csk4eXGH+uaL+ZrvRkaEpQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1OYarAGbUYkBRjuS4Zf9Ys3LQNg=\r\n\r\n", + "id": "6.22.21", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda7f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.418Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313839266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda7f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "843fe089e4cd4f365a" + ] + ], + [ + "RF", + [ + 4, + "\uda7f\udffe" + ], + 1, + true, + 0, + true, + "3fe089e4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b1826111b26a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b1826111" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_22.html b/autobahn/client/hornbeam_case_6_22_22.html new file mode 100644 index 0000000..e4c38c1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_22.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.22 : Pass - 46 ms @ 2023-08-10T21:35:50.464Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000affff', False)]}

+ Observed:
[('message', u'\U000affff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=190&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ZJ0AeKhaYsMCySOfUYQZtA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EfXjHmb9F6ad4378BY5sqiOL6VQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313930266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򯿿
+
003 TX OCTETS: 8104f2afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 844212c91fb0bd76a0
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3432313263393166
+
               򯿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823352254530ba
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3333353232353435
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_22.json b/autobahn/client/hornbeam_case_6_22_22.json new file mode 100644 index 0000000..b7eb9da --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_22.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 190, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda7f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=190&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ZJ0AeKhaYsMCySOfUYQZtA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EfXjHmb9F6ad4378BY5sqiOL6VQ=\r\n\r\n", + "id": "6.22.22", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda7f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.464Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313930266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "844212c91fb0bd76a0" + ] + ], + [ + "RF", + [ + 4, + "\uda7f\udfff" + ], + 1, + true, + 0, + true, + "4212c91f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823352254530ba" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "33522545" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_23.html b/autobahn/client/hornbeam_case_6_22_23.html new file mode 100644 index 0000000..d771da9 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_23.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.23 : Pass - 47 ms @ 2023-08-10T21:35:50.511Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000bfffe', False)]}

+ Observed:
[('message', u'\U000bfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=191&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: GvM/U0slgRgzJq6gwIXNfQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BK0/Gks/jOXjlgd7y/6ieG2KoyI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313931266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿¾
+
003 TX OCTETS: 8104f2bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84ec0125a81ebe9a16
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6563303132356138
+
               ò¿¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882ddfda765de15
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6464666461373635
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_23.json b/autobahn/client/hornbeam_case_6_22_23.json new file mode 100644 index 0000000..648186a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_23.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 191, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udabf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=191&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: GvM/U0slgRgzJq6gwIXNfQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BK0/Gks/jOXjlgd7y/6ieG2KoyI=\r\n\r\n", + "id": "6.22.23", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udabf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.511Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313931266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udabf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84ec0125a81ebe9a16" + ] + ], + [ + "RF", + [ + 4, + "\udabf\udffe" + ], + 1, + true, + 0, + true, + "ec0125a8" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ddfda765de15" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ddfda765" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_24.html b/autobahn/client/hornbeam_case_6_22_24.html new file mode 100644 index 0000000..0d0232e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_24.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.24 : Pass - 46 ms @ 2023-08-10T21:35:50.562Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000bffff', False)]}

+ Observed:
[('message', u'\U000bffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=192&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: b2zA0npRS9Vf8yr0Rv5KpA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /zeKZ+HiH/5qvAezLCc5wo2G9W0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313932266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿¿
+
003 TX OCTETS: 8104f2bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84971b3fce65a48071
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3937316233666365
+
               ò¿¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882b6f2ebfeb51a
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6236663265626665
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_24.json b/autobahn/client/hornbeam_case_6_22_24.json new file mode 100644 index 0000000..8cf7d2f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_24.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 192, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udabf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=192&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: b2zA0npRS9Vf8yr0Rv5KpA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /zeKZ+HiH/5qvAezLCc5wo2G9W0=\r\n\r\n", + "id": "6.22.24", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udabf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.562Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313932266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udabf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84971b3fce65a48071" + ] + ], + [ + "RF", + [ + 4, + "\udabf\udfff" + ], + 1, + true, + 0, + true, + "971b3fce" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b6f2ebfeb51a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b6f2ebfe" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_25.html b/autobahn/client/hornbeam_case_6_22_25.html new file mode 100644 index 0000000..538d358 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_25.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.25 : Pass - 45 ms @ 2023-08-10T21:35:50.609Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000cfffe', False)]}

+ Observed:
[('message', u'\U000cfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=193&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: /jQNw6Zkfz4YWO7Atq1Isw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /nI3setjDUOCfwH21G8e6s7t7lo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313933266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¾
+
003 TX OCTETS: 8104f38fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 844aa34943b92cf6fd
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3461613334393433
+
               ó¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88820b13af7108fb
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3062313361663731
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_25.json b/autobahn/client/hornbeam_case_6_22_25.json new file mode 100644 index 0000000..5db551e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_25.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 193, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udaff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=193&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: /jQNw6Zkfz4YWO7Atq1Isw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /nI3setjDUOCfwH21G8e6s7t7lo=\r\n\r\n", + "id": "6.22.25", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udaff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.609Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313933266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udaff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f38fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "844aa34943b92cf6fd" + ] + ], + [ + "RF", + [ + 4, + "\udaff\udffe" + ], + 1, + true, + 0, + true, + "4aa34943" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820b13af7108fb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0b13af71" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_26.html b/autobahn/client/hornbeam_case_6_22_26.html new file mode 100644 index 0000000..871effc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_26.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.26 : Pass - 46 ms @ 2023-08-10T21:35:50.654Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000cffff', False)]}

+ Observed:
[('message', u'\U000cffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=194&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: BnTN/x+G5bBxfe2xRy3okw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TDdvK1bUil5hvu6VLuC6T0uH208=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313934266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿
+
003 TX OCTETS: 8104f38fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 848a26055179a9baee
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3861323630353531
+
               ó¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882fb696beff881
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662363936626566
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_26.json b/autobahn/client/hornbeam_case_6_22_26.json new file mode 100644 index 0000000..9c32d9a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_26.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 194, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udaff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=194&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: BnTN/x+G5bBxfe2xRy3okw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TDdvK1bUil5hvu6VLuC6T0uH208=\r\n\r\n", + "id": "6.22.26", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udaff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.654Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313934266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udaff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f38fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "848a26055179a9baee" + ] + ], + [ + "RF", + [ + 4, + "\udaff\udfff" + ], + 1, + true, + 0, + true, + "8a260551" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fb696beff881" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fb696bef" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_27.html b/autobahn/client/hornbeam_case_6_22_27.html new file mode 100644 index 0000000..900eacf --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_27.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.27 : Pass - 46 ms @ 2023-08-10T21:35:50.702Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000dfffe', False)]}

+ Observed:
[('message', u'\U000dfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=195&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: lKbKArpf3YsP04jwBCNwtw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VQ8+pfQcPr1VRuuH6a+LEqa6B8o=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313935266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󟿾
+
003 TX OCTETS: 8104f39fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8406473be9f5d88457
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3036343733626539
+
               󟿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888255e02a595608
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3535653032613539
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_27.json b/autobahn/client/hornbeam_case_6_22_27.json new file mode 100644 index 0000000..419b85f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_27.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 195, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb3f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=195&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: lKbKArpf3YsP04jwBCNwtw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VQ8+pfQcPr1VRuuH6a+LEqa6B8o=\r\n\r\n", + "id": "6.22.27", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb3f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.702Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313935266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb3f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f39fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8406473be9f5d88457" + ] + ], + [ + "RF", + [ + 4, + "\udb3f\udffe" + ], + 1, + true, + 0, + true, + "06473be9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888255e02a595608" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "55e02a59" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_28.html b/autobahn/client/hornbeam_case_6_22_28.html new file mode 100644 index 0000000..a1d23a1 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_28.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.28 : Pass - 45 ms @ 2023-08-10T21:35:50.748Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000dffff', False)]}

+ Observed:
[('message', u'\U000dffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=196&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: QRij4hg4hYjAk51Vyo2jug==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LFlFZviGSocG0MRW6oByrh7a28E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313936266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               óŸ¿¿
+
003 TX OCTETS: 8104f39fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84f8eab41b0b750ba4
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6638656162343162
+
               óŸ¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88826da3c2766e4b
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3664613363323736
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_28.json b/autobahn/client/hornbeam_case_6_22_28.json new file mode 100644 index 0000000..debc435 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_28.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 196, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb3f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=196&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: QRij4hg4hYjAk51Vyo2jug==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LFlFZviGSocG0MRW6oByrh7a28E=\r\n\r\n", + "id": "6.22.28", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb3f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.748Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313936266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb3f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f39fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84f8eab41b0b750ba4" + ] + ], + [ + "RF", + [ + 4, + "\udb3f\udfff" + ], + 1, + true, + 0, + true, + "f8eab41b" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826da3c2766e4b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6da3c276" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_29.html b/autobahn/client/hornbeam_case_6_22_29.html new file mode 100644 index 0000000..cc44d81 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_29.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.29 : Pass - 47 ms @ 2023-08-10T21:35:50.796Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000efffe', False)]}

+ Observed:
[('message', u'\U000efffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=197&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: q8J4WecbqBto0+BRIF+PQg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vgY8D/mC7B+e7/drlD3gQYp3k/k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
122
717
919
1841184
Total5202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313937266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿾
+
003 TX OCTETS: 8104f3afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84e7782f3314d7908d
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6537373832663333
+
               󯿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88
+
011 RX OCTETS: 8263c1f6ba6029
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3633633166366261
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_29.json b/autobahn/client/hornbeam_case_6_22_29.json new file mode 100644 index 0000000..2edbc66 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_29.json @@ -0,0 +1,192 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 197, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb7f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=197&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: q8J4WecbqBto0+BRIF+PQg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vgY8D/mC7B+e7/drlD3gQYp3k/k=\r\n\r\n", + "id": "6.22.29", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb7f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.796Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313937266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb7f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84e7782f3314d7908d" + ] + ], + [ + "RF", + [ + 4, + "\udb7f\udffe" + ], + 1, + true, + 0, + true, + "e7782f33" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "8263c1f6ba6029" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "63c1f6ba" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_3.html b/autobahn/client/hornbeam_case_6_22_3.html new file mode 100644 index 0000000..2e1de32 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_3.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.3 : Pass - 47 ms @ 2023-08-10T21:35:49.571Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0001fffe', False)]}

+ Observed:
[('message', u'\U0001fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=171&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: dt8FI4aZOLHwdcBToWRiNA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8TcPm/yZHfSvHkk7c6kJ/B1tHs4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313731266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               🿾
+
003 TX OCTETS: 8104f09fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8427057fa4d79ac01a
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3237303537666134
+
               🿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882ba0e3891b9e6
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6261306533383931
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_3.json b/autobahn/client/hornbeam_case_6_22_3.json new file mode 100644 index 0000000..cb13f01 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_3.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 171, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud83f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=171&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: dt8FI4aZOLHwdcBToWRiNA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8TcPm/yZHfSvHkk7c6kJ/B1tHs4=\r\n\r\n", + "id": "6.22.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud83f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.571Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313731266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud83f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f09fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8427057fa4d79ac01a" + ] + ], + [ + "RF", + [ + 4, + "\ud83f\udffe" + ], + 1, + true, + 0, + true, + "27057fa4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ba0e3891b9e6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ba0e3891" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_30.html b/autobahn/client/hornbeam_case_6_22_30.html new file mode 100644 index 0000000..689e258 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_30.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.30 : Pass - 45 ms @ 2023-08-10T21:35:50.845Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000effff', False)]}

+ Observed:
[('message', u'\U000effff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=198&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DPlmR368hS07kmDxu1fX/A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NHQ/urtlRG2QYe1lD2HddiV/kxA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313938266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿿
+
003 TX OCTETS: 8104f3afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84ad5ef0f45ef14f4b
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6164356566306634
+
               󯿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88828dcdb30d8e25
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3864636462333064
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_30.json b/autobahn/client/hornbeam_case_6_22_30.json new file mode 100644 index 0000000..f9f9cbd --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_30.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 198, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb7f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=198&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DPlmR368hS07kmDxu1fX/A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NHQ/urtlRG2QYe1lD2HddiV/kxA=\r\n\r\n", + "id": "6.22.30", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb7f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.845Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313938266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84ad5ef0f45ef14f4b" + ] + ], + [ + "RF", + [ + 4, + "\udb7f\udfff" + ], + 1, + true, + 0, + true, + "ad5ef0f4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828dcdb30d8e25" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8dcdb30d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_31.html b/autobahn/client/hornbeam_case_6_22_31.html new file mode 100644 index 0000000..4aa3e2a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_31.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.31 : Pass - 46 ms @ 2023-08-10T21:35:50.891Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000ffffe', False)]}

+ Observed:
[('message', u'\U000ffffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=199&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: UG10Ho+ckWH9BeVip8EXyw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jdBSMklRZSK3GqH6poHGYdID990=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313939266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿¾
+
003 TX OCTETS: 8104f3bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84d59b980f262427b1
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6435396239383066
+
               ó¿¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e094d2d6e37c
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6530393464326436
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_31.json b/autobahn/client/hornbeam_case_6_22_31.json new file mode 100644 index 0000000..7f667f8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_31.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 199, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbbf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=199&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: UG10Ho+ckWH9BeVip8EXyw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jdBSMklRZSK3GqH6poHGYdID990=\r\n\r\n", + "id": "6.22.31", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbbf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.891Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313939266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbbf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84d59b980f262427b1" + ] + ], + [ + "RF", + [ + 4, + "\udbbf\udffe" + ], + 1, + true, + 0, + true, + "d59b980f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e094d2d6e37c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e094d2d6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_32.html b/autobahn/client/hornbeam_case_6_22_32.html new file mode 100644 index 0000000..ce5eb6b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_32.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.32 : Pass - 46 ms @ 2023-08-10T21:35:50.938Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000fffff', False)]}

+ Observed:
[('message', u'\U000fffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=200&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 0tHEHrYsGsDM9LvDY0kf2g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5v1YH2DE5YzPqHJKP7t0xagcTiw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323030266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿¿
+
003 TX OCTETS: 8104f3bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84e338e41d10875ba2
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6533333865343164
+
               ó¿¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888200c6048f032e
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3030633630343866
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_32.json b/autobahn/client/hornbeam_case_6_22_32.json new file mode 100644 index 0000000..2a372aa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_32.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 200, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbbf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=200&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 0tHEHrYsGsDM9LvDY0kf2g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5v1YH2DE5YzPqHJKP7t0xagcTiw=\r\n\r\n", + "id": "6.22.32", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbbf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.938Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323030266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbbf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84e338e41d10875ba2" + ] + ], + [ + "RF", + [ + 4, + "\udbbf\udfff" + ], + 1, + true, + 0, + true, + "e338e41d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888200c6048f032e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "00c6048f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_33.html b/autobahn/client/hornbeam_case_6_22_33.html new file mode 100644 index 0000000..c8c9b2e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_33.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.33 : Pass - 46 ms @ 2023-08-10T21:35:50.985Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010fffe', False)]}

+ Observed:
[('message', u'\U0010fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=201&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: KGz0Y+/0K3beYh9pynjWGA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mwOgnqRpMforj/YCQJCLz7jAgkk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323031266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¾
+
003 TX OCTETS: 8104f48fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8421cfb3c4d5400c7a
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3231636662336334
+
               ô¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823d2308583ecb
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3364323330383538
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_33.json b/autobahn/client/hornbeam_case_6_22_33.json new file mode 100644 index 0000000..2ec58ed --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_33.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 201, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=201&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: KGz0Y+/0K3beYh9pynjWGA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mwOgnqRpMforj/YCQJCLz7jAgkk=\r\n\r\n", + "id": "6.22.33", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:50.985Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323031266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8421cfb3c4d5400c7a" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udffe" + ], + 1, + true, + 0, + true, + "21cfb3c4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823d2308583ecb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3d230858" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_34.html b/autobahn/client/hornbeam_case_6_22_34.html new file mode 100644 index 0000000..a6f907e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_34.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.34 : Pass - 46 ms @ 2023-08-10T21:35:51.031Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=202&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: XZAGso+ra8rB7Rz/hpL8cQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vsUuLrx65ZenXybJmYP3j1j84Fc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
122
717
919
1841184
Total5202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323032266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84881181a27c9e3e1d
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3838313138316132
+
               ô¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88
+
011 RX OCTETS: 821970c7a11a98
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3139373063376131
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_34.json b/autobahn/client/hornbeam_case_6_22_34.json new file mode 100644 index 0000000..b9dd1ed --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_34.json @@ -0,0 +1,192 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 202, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=202&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: XZAGso+ra8rB7Rz/hpL8cQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vsUuLrx65ZenXybJmYP3j1j84Fc=\r\n\r\n", + "id": "6.22.34", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.031Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323032266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84881181a27c9e3e1d" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "881181a2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "821970c7a11a98" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1970c7a1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_4.html b/autobahn/client/hornbeam_case_6_22_4.html new file mode 100644 index 0000000..bf30751 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_4.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.4 : Pass - 45 ms @ 2023-08-10T21:35:49.619Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0001ffff', False)]}

+ Observed:
[('message', u'\U0001ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=172&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Wb92LuU5SPoKblI1xXHxQw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: c6MFHkG2DiaTGHv6T6F/6PiFRlM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313732266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               🿿
+
003 TX OCTETS: 8104f09fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 847de12c498d7e93f6
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3764653132633439
+
               🿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88828d3c74eb8ed4
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3864336337346562
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_4.json b/autobahn/client/hornbeam_case_6_22_4.json new file mode 100644 index 0000000..f13bbfc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 172, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud83f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=172&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Wb92LuU5SPoKblI1xXHxQw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: c6MFHkG2DiaTGHv6T6F/6PiFRlM=\r\n\r\n", + "id": "6.22.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud83f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.619Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313732266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud83f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f09fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "847de12c498d7e93f6" + ] + ], + [ + "RF", + [ + 4, + "\ud83f\udfff" + ], + 1, + true, + 0, + true, + "7de12c49" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828d3c74eb8ed4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8d3c74eb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_5.html b/autobahn/client/hornbeam_case_6_22_5.html new file mode 100644 index 0000000..c87d765 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_5.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.5 : Pass - 45 ms @ 2023-08-10T21:35:49.665Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0002fffe', False)]}

+ Observed:
[('message', u'\U0002fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=173&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +CutYN+42lP6c+Ekg4O0Cw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: i7mAcKtRtge/5IF89EjerqFmVpg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313733266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               𯿾
+
003 TX OCTETS: 8104f0afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8434b08647c41f39f9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3334623038363437
+
               𯿾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882c6fdc8a0c515
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6336666463386130
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_5.json b/autobahn/client/hornbeam_case_6_22_5.json new file mode 100644 index 0000000..2a1f9a8 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_5.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 173, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud87f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=173&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +CutYN+42lP6c+Ekg4O0Cw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: i7mAcKtRtge/5IF89EjerqFmVpg=\r\n\r\n", + "id": "6.22.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud87f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.665Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313733266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud87f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8434b08647c41f39f9" + ] + ], + [ + "RF", + [ + 4, + "\ud87f\udffe" + ], + 1, + true, + 0, + true, + "34b08647" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c6fdc8a0c515" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c6fdc8a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_6.html b/autobahn/client/hornbeam_case_6_22_6.html new file mode 100644 index 0000000..3f80b5a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_6.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.6 : Pass - 45 ms @ 2023-08-10T21:35:49.712Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0002ffff', False)]}

+ Observed:
[('message', u'\U0002ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=174&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: pMfV+VgcNx0XSpvKifLxIQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iQOcU4DZ2mTqBNzmwt30pdmORWc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313734266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               𯿿
+
003 TX OCTETS: 8104f0afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8418b11e66e81ea1d9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3138623131653636
+
               𯿿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888206664eae058e
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3036363634656165
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_6.json b/autobahn/client/hornbeam_case_6_22_6.json new file mode 100644 index 0000000..f9da14e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_6.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 174, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud87f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=174&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: pMfV+VgcNx0XSpvKifLxIQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iQOcU4DZ2mTqBNzmwt30pdmORWc=\r\n\r\n", + "id": "6.22.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud87f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.712Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313734266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud87f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8418b11e66e81ea1d9" + ] + ], + [ + "RF", + [ + 4, + "\ud87f\udfff" + ], + 1, + true, + 0, + true, + "18b11e66" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888206664eae058e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "06664eae" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_7.html b/autobahn/client/hornbeam_case_6_22_7.html new file mode 100644 index 0000000..189c963 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_7.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.7 : Pass - 48 ms @ 2023-08-10T21:35:49.758Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0003fffe', False)]}

+ Observed:
[('message', u'\U0003fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=175&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 9XEi2fgO5NqVknUPCJ1Vaw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Bml1cZpXmd2m63KbSAzhFJAmo/8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313735266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿¿¾
+
003 TX OCTETS: 8104f0bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8496d2566d666de9d3
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3936643235363664
+
               ð¿¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882ad9064a5ae78
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6164393036346135
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_7.json b/autobahn/client/hornbeam_case_6_22_7.json new file mode 100644 index 0000000..295eb80 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_7.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 175, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe", + "droppedByMe": true, + "duration": 48, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8bf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=175&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 9XEi2fgO5NqVknUPCJ1Vaw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Bml1cZpXmd2m63KbSAzhFJAmo/8=\r\n\r\n", + "id": "6.22.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8bf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.758Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313735266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8bf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8496d2566d666de9d3" + ] + ], + [ + "RF", + [ + 4, + "\ud8bf\udffe" + ], + 1, + true, + 0, + true, + "96d2566d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ad9064a5ae78" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ad9064a5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_8.html b/autobahn/client/hornbeam_case_6_22_8.html new file mode 100644 index 0000000..4560d1f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_8.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.8 : Pass - 45 ms @ 2023-08-10T21:35:49.806Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0003ffff', False)]}

+ Observed:
[('message', u'\U0003ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=176&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: /2f3FxPXBmCMA1RoAU9wRw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zX13ee0EvHV5d1DN6HszCqN2VaA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313736266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿¿¿
+
003 TX OCTETS: 8104f0bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84e3266a4e1399d5f1
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6533323636613465
+
               ð¿¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88824dcf05264e27
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3464636630353236
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_8.json b/autobahn/client/hornbeam_case_6_22_8.json new file mode 100644 index 0000000..ca98370 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_8.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 176, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8bf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=176&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: /2f3FxPXBmCMA1RoAU9wRw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zX13ee0EvHV5d1DN6HszCqN2VaA=\r\n\r\n", + "id": "6.22.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8bf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.806Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313736266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8bf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84e3266a4e1399d5f1" + ] + ], + [ + "RF", + [ + 4, + "\ud8bf\udfff" + ], + 1, + true, + 0, + true, + "e3266a4e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824dcf05264e27" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4dcf0526" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_22_9.html b/autobahn/client/hornbeam_case_6_22_9.html new file mode 100644 index 0000000..3458153 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_9.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.22.9 : Pass - 45 ms @ 2023-08-10T21:35:49.852Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0004fffe', False)]}

+ Observed:
[('message', u'\U0004fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=177&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: RqMRx0HPuFHgm76j9xN7PQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ARWOaU8d2w8fMcHDmoIf5+nOLao=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313737266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¾
+
003 TX OCTETS: 8104f18fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8459f8cb42a87774fc
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3539663863623432
+
               ñ¿¾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882f7b64f27f45e
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6637623634663237
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_22_9.json b/autobahn/client/hornbeam_case_6_22_9.json new file mode 100644 index 0000000..bc57308 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_22_9.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 177, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8ff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=177&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: RqMRx0HPuFHgm76j9xN7PQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ARWOaU8d2w8fMcHDmoIf5+nOLao=\r\n\r\n", + "id": "6.22.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8ff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:49.852Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313737266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8ff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f18fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "8459f8cb42a87774fc" + ] + ], + [ + "RF", + [ + 4, + "\ud8ff\udffe" + ], + 1, + true, + 0, + true, + "59f8cb42" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f7b64f27f45e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f7b64f27" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_1.html b/autobahn/client/hornbeam_case_6_23_1.html new file mode 100644 index 0000000..5c79b55 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.1 : Pass - 50 ms @ 2023-08-10T21:35:51.078Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufff9', False)]}

+ Observed:
[('message', u'\ufff9', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=203&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: T85vLq+JbL7fnvjPRKjlgA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zQwzSzgbW6iKdAWpPoUUbDoz1x0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323033266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfb9
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83958063e67a3fda
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3935383036336536
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882beb807c8bd50
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6265623830376338
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_1.json b/autobahn/client/hornbeam_case_6_23_1.json new file mode 100644 index 0000000..6731255 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_1.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 203, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9", + "droppedByMe": true, + "duration": 50, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufff9", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=203&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: T85vLq+JbL7fnvjPRKjlgA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zQwzSzgbW6iKdAWpPoUUbDoz1x0=\r\n\r\n", + "id": "6.23.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufff9", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.078Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323033266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufff9" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfb9" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83958063e67a3fda" + ] + ], + [ + "RF", + [ + 3, + "\ufff9" + ], + 1, + true, + 0, + true, + "958063e6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882beb807c8bd50" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "beb807c8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_2.html b/autobahn/client/hornbeam_case_6_23_2.html new file mode 100644 index 0000000..8a72837 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.2 : Pass - 46 ms @ 2023-08-10T21:35:51.131Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffa', False)]}

+ Observed:
[('message', u'\ufffa', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=204&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: qY0eQLfIplHDb/dbD3XJuQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PJN7tzdR2MGFK4c/+DnNdYXudOc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323034266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfba
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83ee71360501ce8c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6565373133363035
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e417ae1be7ff
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534313761653162
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_2.json b/autobahn/client/hornbeam_case_6_23_2.json new file mode 100644 index 0000000..654a252 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_2.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 204, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffa", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=204&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: qY0eQLfIplHDb/dbD3XJuQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PJN7tzdR2MGFK4c/+DnNdYXudOc=\r\n\r\n", + "id": "6.23.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffa", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.131Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323034266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffa" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfba" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83ee71360501ce8c" + ] + ], + [ + "RF", + [ + 3, + "\ufffa" + ], + 1, + true, + 0, + true, + "ee713605" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e417ae1be7ff" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e417ae1b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_3.html b/autobahn/client/hornbeam_case_6_23_3.html new file mode 100644 index 0000000..b1c512d --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.3 : Pass - 46 ms @ 2023-08-10T21:35:51.178Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffb', False)]}

+ Observed:
[('message', u'\ufffb', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=205&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: PNE7YxOD9xmBoGRQHedpLw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eP9Q+LeUgc9zmM7+KYWydhjV3aM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323035266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿»
+
003 TX OCTETS: 8103efbfbb
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 831bd3916ff46c2a
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3162643339313666
+
               ï¿»
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823af7428b391f
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3361663734323862
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_3.json b/autobahn/client/hornbeam_case_6_23_3.json new file mode 100644 index 0000000..6ecacbc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_3.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 205, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffb", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=205&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: PNE7YxOD9xmBoGRQHedpLw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eP9Q+LeUgc9zmM7+KYWydhjV3aM=\r\n\r\n", + "id": "6.23.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffb", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.178Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323035266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffb" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbb" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "831bd3916ff46c2a" + ] + ], + [ + "RF", + [ + 3, + "\ufffb" + ], + 1, + true, + 0, + true, + "1bd3916f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823af7428b391f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3af7428b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_4.html b/autobahn/client/hornbeam_case_6_23_4.html new file mode 100644 index 0000000..aa07faa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.4 : Pass - 44 ms @ 2023-08-10T21:35:51.230Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffc', False)]}

+ Observed:
[('message', u'\ufffc', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=206&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: oroo8gMvYm/z7EdZsgrrCQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LCzKm0chAZIj1eOf/FllDZBAAZY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323036266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfbc
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 835cbd4a2bb302f6
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3563626434613262
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88828e3e42e88dd6
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865336534326538
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_4.json b/autobahn/client/hornbeam_case_6_23_4.json new file mode 100644 index 0000000..30ce7cc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_4.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 206, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffc", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=206&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: oroo8gMvYm/z7EdZsgrrCQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LCzKm0chAZIj1eOf/FllDZBAAZY=\r\n\r\n", + "id": "6.23.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffc", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.230Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323036266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffc" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbc" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "835cbd4a2bb302f6" + ] + ], + [ + "RF", + [ + 3, + "\ufffc" + ], + 1, + true, + 0, + true, + "5cbd4a2b" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828e3e42e88dd6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8e3e42e8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_5.html b/autobahn/client/hornbeam_case_6_23_5.html new file mode 100644 index 0000000..407d68f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_5.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.5 : Pass - 46 ms @ 2023-08-10T21:35:51.275Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffd', False)]}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=207&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Fs4Jr0TqfUBM8ntCb+B2sQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TLYm5AyR1Mg+SqDMxuiXOZaqkEA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323037266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               �
+
003 TX OCTETS: 8103efbfbd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8335ea3f8dda5582
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3335656133663864
+
               �
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88822f1878c92cf0
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3266313837386339
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_5.json b/autobahn/client/hornbeam_case_6_23_5.json new file mode 100644 index 0000000..47c1fcf --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_5.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 207, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffd", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=207&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Fs4Jr0TqfUBM8ntCb+B2sQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TLYm5AyR1Mg+SqDMxuiXOZaqkEA=\r\n\r\n", + "id": "6.23.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.275Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323037266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbd" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "8335ea3f8dda5582" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "35ea3f8d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822f1878c92cf0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2f1878c9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_6.html b/autobahn/client/hornbeam_case_6_23_6.html new file mode 100644 index 0000000..7fcccb2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.6 : Pass - 48 ms @ 2023-08-10T21:35:51.322Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffe', False)]}

+ Observed:
[('message', u'\ufffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=208&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: PWsUp4C6wmFtPTezjA2RgA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: R7RSmkPkp9U8N36KHrsl7kwcuvA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
122
717
818
1841184
Total5201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323038266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ￾
+
003 TX OCTETS: 8103efbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83812f17536e90a9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3831326631373533
+
               ￾
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88
+
011 RX OCTETS: 82a744297aa4ac
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6137343432393761
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_6.json b/autobahn/client/hornbeam_case_6_23_6.json new file mode 100644 index 0000000..f623390 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_6.json @@ -0,0 +1,192 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 208, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe", + "droppedByMe": true, + "duration": 48, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=208&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: PWsUp4C6wmFtPTezjA2RgA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: R7RSmkPkp9U8N36KHrsl7kwcuvA=\r\n\r\n", + "id": "6.23.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 1, + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.322Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323038266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83812f17536e90a9" + ] + ], + [ + "RF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + true, + "812f1753" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82a744297aa4ac" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a744297a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_23_7.html b/autobahn/client/hornbeam_case_6_23_7.html new file mode 100644 index 0000000..ee999e0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_7.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.23.7 : Pass - 46 ms @ 2023-08-10T21:35:51.372Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=209&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7fJCeGIPvI5lt2U9auLyFg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: w/PmFasK5sT8Yc7Nx9Ns7sCigIw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323039266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83ea280fb20597b0
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6561323830666232
+
               ï¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88822d7807d22e90
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3264373830376432
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_23_7.json b/autobahn/client/hornbeam_case_6_23_7.json new file mode 100644 index 0000000..24df6d5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_23_7.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 209, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=209&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7fJCeGIPvI5lt2U9auLyFg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: w/PmFasK5sT8Yc7Nx9Ns7sCigIw=\r\n\r\n", + "id": "6.23.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:51.372Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323039266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83ea280fb20597b0" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "ea280fb2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822d7807d22e90" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2d7807d2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_2_1.html b/autobahn/client/hornbeam_case_6_2_1.html new file mode 100644 index 0000000..8f54572 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.2.1 : Pass - 45 ms @ 2023-08-10T21:35:06.373Z

+

Case Description

Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=68&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Qkaa5NpcLofcSgRRFZ1Hwg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WFMgnvFrIYy+zCgTiJkOThwXnS0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
34134
1831183
Total4226
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
31131
2061206
Total3241
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3638266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello-µ@ßöäüàá-UTF-8!!
+
003 TX OCTETS: 811d48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9d3362e6f67b078a9a5c4f244373a1793585a142358fa14635924fb3a2754fded712
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=3333363265366636
+
               Hello-µ@ßöäüàá-UTF-8!!
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88825398db555070
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3533393864623535
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_2_1.json b/autobahn/client/hornbeam_case_6_2_1.json new file mode 100644 index 0000000..8ace4c7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 68, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=68&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Qkaa5NpcLofcSgRRFZ1Hwg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WFMgnvFrIYy+zCgTiJkOThwXnS0=\r\n\r\n", + "id": "6.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "34": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.373Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "31": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3638266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 31, + "811d48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 34, + "9d3362e6f67b078a9a5c4f244373a1793585a142358fa14635924fb3a2754fded712" + ] + ], + [ + "RF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + true, + "3362e6f6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825398db555070" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5398db55" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_2_2.html b/autobahn/client/hornbeam_case_6_2_2.html new file mode 100644 index 0000000..258839f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_2.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.2.2 : Fail - 2 ms @ 2023-08-10T21:35:06.420Z

+

Case Description

Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'Hello-\xb5@\xdf\xf6\xe4', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=69&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: xTdwnwRDncDAAx5kdIz/mg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oWeDkS+srAl0dI0k6ubLVDSevdA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
20120
1831183
Total3204
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
16116
17117
2061206
Total3239
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3639266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=15, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello-µ@ßöä
+
003 TX OCTETS: 010f48656c6c6f2dc2b540c39fc3b6c3a4
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               üàá-UTF-8!!
+
005 TX OCTETS: 800ec3bcc3a0c3a12d5554462d382121
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 81
+
008 RX OCTETS: 8fa37dbd1eeb18d172cc507fabe3be22dd15be19
+
009 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=6133376462643165
+
               Hello-µ@ßöä
+
010 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_2_2.json b/autobahn/client/hornbeam_case_6_2_2.json new file mode 100644 index 0000000..1797d73 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_2.json @@ -0,0 +1,164 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 69, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-\u00b5@\u00df\u00f6\u00e4
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
\u00fc\u00e0\u00e1-UTF-8!!
c3bcc3a0c3a12d5554462d382121", + "droppedByMe": false, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=69&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: xTdwnwRDncDAAx5kdIz/mg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oWeDkS+srAl0dI0k6ubLVDSevdA=\r\n\r\n", + "id": "6.2.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "20": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.420Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "16": 1, + "17": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3639266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 15, + "Hello-\u00b5@\u00df\u00f6\u00e4" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 17, + "010f48656c6c6f2dc2b540c39fc3b6c3a4" + ], + false + ], + [ + "TF", + [ + 14, + "\u00fc\u00e0\u00e1-UTF-8!!" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "800ec3bcc3a0c3a12d5554462d382121" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8fa37dbd1eeb18d172cc507fabe3be22dd15be19" + ] + ], + [ + "RF", + [ + 15, + "Hello-\u00b5@\u00df\u00f6\u00e4" + ], + 1, + true, + 0, + true, + "a37dbd1e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_2_3.html b/autobahn/client/hornbeam_case_6_2_3.html new file mode 100644 index 0000000..29a1243 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_3.html @@ -0,0 +1,380 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.2.3 : Fail - 2 ms @ 2023-08-10T21:35:06.423Z

+

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'H', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=70&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3eajtno8XpAbzLQL/SpOJg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rAmj7rRXd+0wJzwj9YPu2yfifT4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
717
1831183
Total2190
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
32987
2061206
Total31295
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
029
11
Total30
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3730266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               H
+
003 TX OCTETS: 010148
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
005 TX OCTETS: 000165
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               l
+
007 TX OCTETS: 00016c
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               l
+
009 TX OCTETS: 00016c
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               o
+
011 TX OCTETS: 00016f
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
013 TX OCTETS: 00012d
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc2
+
015 TX OCTETS: 0001c2
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
017 TX OCTETS: 0001b5
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               @
+
019 TX OCTETS: 000140
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
021 TX OCTETS: 0001c3
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x9f
+
023 TX OCTETS: 00019f
+
024 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
025 TX OCTETS: 0001c3
+
026 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb6
+
027 TX OCTETS: 0001b6
+
028 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
029 TX OCTETS: 0001c3
+
030 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa4
+
031 TX OCTETS: 0001a4
+
032 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
033 TX OCTETS: 0001c3
+
034 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
035 TX OCTETS: 0001bc
+
036 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
037 TX OCTETS: 0001c3
+
038 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa0
+
039 TX OCTETS: 0001a0
+
040 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
041 TX OCTETS: 0001c3
+
042 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa1
+
043 TX OCTETS: 0001a1
+
044 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
045 TX OCTETS: 00012d
+
046 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               U
+
047 TX OCTETS: 000155
+
048 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               T
+
049 TX OCTETS: 000154
+
050 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               F
+
051 TX OCTETS: 000146
+
052 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
053 TX OCTETS: 00012d
+
054 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               8
+
055 TX OCTETS: 000138
+
056 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               !
+
057 TX OCTETS: 000121
+
058 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               !
+
059 TX OCTETS: 000121
+
060 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
061 TX OCTETS: 8000
+
062 CLOSE CONNECTION AFTER 1.000000 sec
+
063 RX OCTETS: 8181c866032280
+
064 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASKED=True, MASK=6338363630333232
+
               H
+
065 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_2_3.json b/autobahn/client/hornbeam_case_6_2_3.json new file mode 100644 index 0000000..8a29e9c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_3.json @@ -0,0 +1,772 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 70, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121", + "droppedByMe": false, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=70&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3eajtno8XpAbzLQL/SpOJg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rAmj7rRXd+0wJzwj9YPu2yfifT4=\r\n\r\n", + "id": "6.2.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "H", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "7": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.423Z", + "trafficStats": null, + "txFrameStats": { + "0": 29, + "1": 1 + }, + "txOctetStats": { + "2": 1, + "3": 29, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3730266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "H" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "010148" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "l" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016c" + ], + false + ], + [ + "TF", + [ + 1, + "l" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016c" + ], + false + ], + [ + "TF", + [ + 1, + "o" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016f" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "0xc2" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c2" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 1, + "@" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000140" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0x9f" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00019f" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xb6" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b6" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa4" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a4" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa0" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a0" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a1" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "U" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000155" + ], + false + ], + [ + "TF", + [ + 1, + "T" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000154" + ], + false + ], + [ + "TF", + [ + 1, + "F" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000146" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "8" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000138" + ], + false + ], + [ + "TF", + [ + 1, + "!" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000121" + ], + false + ], + [ + "TF", + [ + 1, + "!" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000121" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 7, + "8181c866032280" + ] + ], + [ + "RF", + [ + 1, + "H" + ], + 1, + true, + 0, + true, + "c8660322" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_2_4.html b/autobahn/client/hornbeam_case_6_2_4.html new file mode 100644 index 0000000..b63a880 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_4.html @@ -0,0 +1,326 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.2.4 : Fail - 2 ms @ 2023-08-10T21:35:06.426Z

+

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=71&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3OeqbrN+SPv1pmgSB00KwA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ylQRGgq1JGywKan85VuMv7vCZW4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
919
1831183
Total2192
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
31133
2061206
Total13241
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
011
11
Total12
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3731266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 0101ce
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xba
+
005 TX OCTETS: 0001ba
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe1
+
007 TX OCTETS: 0001e1
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbd
+
009 TX OCTETS: 0001bd
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb9
+
011 TX OCTETS: 0001b9
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcf
+
013 TX OCTETS: 0001cf
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x83
+
015 TX OCTETS: 000183
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
017 TX OCTETS: 0001ce
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
019 TX OCTETS: 0001bc
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
021 TX OCTETS: 0001ce
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
023 TX OCTETS: 0001b5
+
024 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
025 TX OCTETS: 8000
+
026 CLOSE CONNECTION AFTER 1.000000 sec
+
027 RX OCTETS: 818380ceedc56f7150
+
028 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3830636565646335
+
               �
+
029 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_2_4.json b/autobahn/client/hornbeam_case_6_2_4.json new file mode 100644 index 0000000..aa5c1dc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_2_4.json @@ -0,0 +1,376 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 71, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
\u03ba\u1f79\u03c3\u03bc\u03b5
cebae1bdb9cf83cebcceb5", + "droppedByMe": false, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=71&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3OeqbrN+SPv1pmgSB00KwA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ylQRGgq1JGywKan85VuMv7vCZW4=\r\n\r\n", + "id": "6.2.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "9": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.426Z", + "trafficStats": null, + "txFrameStats": { + "0": 11, + "1": 1 + }, + "txOctetStats": { + "2": 1, + "3": 11, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3731266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0101ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xba" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ba" + ], + false + ], + [ + "TF", + [ + 1, + "0xe1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001e1" + ], + false + ], + [ + "TF", + [ + 1, + "0xbd" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bd" + ], + false + ], + [ + "TF", + [ + 1, + "0xb9" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b9" + ], + false + ], + [ + "TF", + [ + 1, + "0xcf" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001cf" + ], + false + ], + [ + "TF", + [ + 1, + "0x83" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000183" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 9, + "818380ceedc56f7150" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "80ceedc5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_3_1.html b/autobahn/client/hornbeam_case_6_3_1.html new file mode 100644 index 0000000..d0da3ef --- /dev/null +++ b/autobahn/client/hornbeam_case_6_3_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.3.1 : Fail - 1003 ms @ 2023-08-10T21:35:06.429Z

+

Case Description

Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffdedited', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=72&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vwzLQ9ljNKBwUH+UowNAUg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wvtO3apUk2WgYjQ/EklS2u0YZMA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
31131
1831183
Total4233
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
14114
22122
2061206
Total3242
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3732266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=20, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Îºá½¹ÏƒÎ¼Îµí €edited
+
003 TX OCTETS: 8114cebae1bdb9cf83cebcceb5eda080656469746564
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 9ae16bd52f2fd1349258a456e15da560c05ed63a905c846a92840fbc5b840f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=26, MASKED=True, MASK=6531366264353266
+
               κόσμε���edited
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c00d936ca033071a569b751ea41ae57b3
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3030643933366361
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_3_1.json b/autobahn/client/hornbeam_case_6_3_1.json new file mode 100644 index 0000000..2f76462 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_3_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 72, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564", + "droppedByMe": true, + "duration": 1003, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=72&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vwzLQ9ljNKBwUH+UowNAUg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wvtO3apUk2WgYjQ/EklS2u0YZMA=\r\n\r\n", + "id": "6.3.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffdedited", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "31": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:06.429Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "14": 1, + "22": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3732266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 20, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ud800edited" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 22, + "8114cebae1bdb9cf83cebcceb5eda080656469746564" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 31, + "9ae16bd52f2fd1349258a456e15da560c05ed63a905c846a92840fbc5b840f" + ] + ], + [ + "RF", + [ + 26, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffdedited" + ], + 1, + true, + 0, + true, + "e16bd52f" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c00d936ca033071a569b751ea41ae57b3" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "00d936ca" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_3_2.html b/autobahn/client/hornbeam_case_6_3_2.html new file mode 100644 index 0000000..d0014b5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_3_2.html @@ -0,0 +1,355 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.3.2 : Fail - 3 ms @ 2023-08-10T21:35:07.434Z

+

Case Description

Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=73&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: e86VUgjjwCaTkchD/D08Zw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: stxVFtSSlpsyifZUSFTQI/omJNY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
818
1831183
Total3192
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
32060
2061206
Total22268
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
020
11
Total21
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3733266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 0101ce
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xba
+
005 TX OCTETS: 0001ba
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe1
+
007 TX OCTETS: 0001e1
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbd
+
009 TX OCTETS: 0001bd
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb9
+
011 TX OCTETS: 0001b9
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcf
+
013 TX OCTETS: 0001cf
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x83
+
015 TX OCTETS: 000183
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
017 TX OCTETS: 0001ce
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
019 TX OCTETS: 0001bc
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
021 TX OCTETS: 0001ce
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
023 TX OCTETS: 0001b5
+
024 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xed
+
025 TX OCTETS: 0001ed
+
026 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa0
+
027 TX OCTETS: 0001a0
+
028 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80
+
029 TX OCTETS: 000180
+
030 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
031 TX OCTETS: 000165
+
032 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               d
+
033 TX OCTETS: 000164
+
034 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               i
+
035 TX OCTETS: 000169
+
036 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               t
+
037 TX OCTETS: 000174
+
038 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
039 TX OCTETS: 000165
+
040 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               d
+
041 TX OCTETS: 000164
+
042 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
043 TX OCTETS: 8000
+
044 FAIL CONNECTION AFTER 1.000000 sec
+
045 RX OCTETS: 81
+
046 RX OCTETS: 83672c210088939c
+
047 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3637326332313030
+
               �
+
048 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_3_2.json b/autobahn/client/hornbeam_case_6_3_2.json new file mode 100644 index 0000000..4a2b197 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_3_2.json @@ -0,0 +1,577 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 73, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564", + "droppedByMe": false, + "duration": 3, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=73&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: e86VUgjjwCaTkchD/D08Zw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: stxVFtSSlpsyifZUSFTQI/omJNY=\r\n\r\n", + "id": "6.3.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:07.434Z", + "trafficStats": null, + "txFrameStats": { + "0": 20, + "1": 1 + }, + "txOctetStats": { + "2": 1, + "3": 20, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3733266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0101ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xba" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ba" + ], + false + ], + [ + "TF", + [ + 1, + "0xe1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001e1" + ], + false + ], + [ + "TF", + [ + 1, + "0xbd" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bd" + ], + false + ], + [ + "TF", + [ + 1, + "0xb9" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b9" + ], + false + ], + [ + "TF", + [ + 1, + "0xcf" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001cf" + ], + false + ], + [ + "TF", + [ + 1, + "0x83" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000183" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 1, + "0xed" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ed" + ], + false + ], + [ + "TF", + [ + 1, + "0xa0" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a0" + ], + false + ], + [ + "TF", + [ + 1, + "0x80" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000180" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "d" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000164" + ], + false + ], + [ + "TF", + [ + 1, + "i" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000169" + ], + false + ], + [ + "TF", + [ + 1, + "t" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000174" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "d" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000164" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83672c210088939c" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "672c2100" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_4_1.html b/autobahn/client/hornbeam_case_6_4_1.html new file mode 100644 index 0000000..8472a6c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_1.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.4.1 : Fail - 1003 ms @ 2023-08-10T21:35:07.439Z

+

Case Description

Send invalid UTF-8 text message in 3 fragments (frames). +First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest. +Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range). +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False), ('timeout', 'A')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=74&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Hk3Rfo2P0muresL9E+Q3Dg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ESMKErebtdx+/SsIIA4ElNTc41w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
16116
1831183
Total3200
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
13113
2061206
Total3225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3734266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 010bcebae1bdb9cf83cebcceb5
+
004 DELAY 1.000000 sec for TAG A
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8be602994d28b878f05fcd1a835acc2c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=6536303239393464
+
               κόσμε
+
008 DELAY TIMEOUT on TAG A
+
009 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf4908080
+
010 TX OCTETS: 0004f4908080
+
011 DELAY 1.000000 sec for TAG B
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_4_1.json b/autobahn/client/hornbeam_case_6_4_1.json new file mode 100644 index 0000000..7833900 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_1.json @@ -0,0 +1,188 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 74, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message in 3 fragments (frames).\nFirst frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest.\nNote that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range).\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5
\nPART2 = f4908080
\nPART3 = 656469746564
\n", + "droppedByMe": false, + "duration": 1003, + "expectation": "The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=74&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Hk3Rfo2P0muresL9E+Q3Dg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ESMKErebtdx+/SsIIA4ElNTc41w=\r\n\r\n", + "id": "6.4.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ], + [ + "timeout", + "A" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "16": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:07.439Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "6": 1, + "13": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3734266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "010bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 16, + "8be602994d28b878f05fcd1a835acc2c" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "e602994d" + ], + [ + "CTE", + "A" + ], + [ + "TF", + [ + 4, + "0xf4908080" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "0004f4908080" + ], + false + ], + [ + "CT", + 1, + "B" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_4_2.html b/autobahn/client/hornbeam_case_6_4_2.html new file mode 100644 index 0000000..b3fc735 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_2.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.4.2 : Fail - 1003 ms @ 2023-08-10T21:35:08.444Z

+

Case Description

Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 = 8080656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd', False), ('timeout', 'A')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=75&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jlNkw4CKSCfMsZUIJPUG9Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BxCyysLMra+P8DckVs0IMkNOdpU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
19119
1831183
Total3203
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3735266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83cebcceb5f4
+
003 TX OCTETS: 010ccebae1bdb9cf83cebcceb5f4
+
004 DELAY 1.000000 sec for TAG A
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8e0d6da7a3c3d7461eb4a2246db1a3124cb2d0
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASKED=True, MASK=3064366461376133
+
               κόσμε�
+
008 DELAY TIMEOUT on TAG A
+
009 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x90
+
010 TX OCTETS: 000190
+
011 DELAY 1.000000 sec for TAG B
+
012 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_4_2.json b/autobahn/client/hornbeam_case_6_4_2.json new file mode 100644 index 0000000..f81a255 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_2.json @@ -0,0 +1,188 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 75, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5f4
\nPART2 = 90
\nPART3 = 8080656469746564
\n", + "droppedByMe": false, + "duration": 1003, + "expectation": "The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=75&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jlNkw4CKSCfMsZUIJPUG9Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BxCyysLMra+P8DckVs0IMkNOdpU=\r\n\r\n", + "id": "6.4.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd", + false + ], + [ + "timeout", + "A" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:08.444Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3735266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "0xcebae1bdb9cf83cebcceb5f4" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "010ccebae1bdb9cf83cebcceb5f4" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 19, + "8e0d6da7a3c3d7461eb4a2246db1a3124cb2d0" + ] + ], + [ + "RF", + [ + 14, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd" + ], + 1, + true, + 0, + true, + "0d6da7a3" + ], + [ + "CTE", + "A" + ], + [ + "TF", + [ + 1, + "0x90" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000190" + ], + false + ], + [ + "CT", + 1, + "B" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_4_3.html b/autobahn/client/hornbeam_case_6_4_3.html new file mode 100644 index 0000000..3fa7d20 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_3.html @@ -0,0 +1,309 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.4.3 : Fail - 2004 ms @ 2023-08-10T21:35:09.449Z

+

Case Description

Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A'), ('timeout', 'B'), ('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=76&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7ELyQv4RM8HULJbkSoT7lA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qr/25YCH+83K/sNzH6wqePPZnvs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
34134
1831183
Total3218
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
224
414
616
11111
2061206
Total6231
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
01
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3736266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX OCTETS: 0115
+
003 TX OCTETS: cebae1bdb9cf83cebcceb5
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX OCTETS: f4908080
+
007 DELAY 1.000000 sec for TAG B
+
008 DELAY TIMEOUT on TAG B
+
009 TX OCTETS: 656469746564
+
010 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
011 TX OCTETS: 8000
+
012 FAIL CONNECTION AFTER 1.000000 sec
+
013 RX OCTETS: 81
+
014 RX OCTETS: 9d56a6a7f9981c4644ef692437ea681216e91b4846eb491844b9191a9c32cfd39c32
+
015 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=3536613661376639
+
               κόσμε����edited
+
016 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_4_3.json b/autobahn/client/hornbeam_case_6_4_3.json new file mode 100644 index 0000000..7eff2a3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_3.json @@ -0,0 +1,211 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 76, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5
\nPART2 = f4908080
\nPART3 = 656469746564
\n", + "droppedByMe": false, + "duration": 2004, + "expectation": "The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=76&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7ELyQv4RM8HULJbkSoT7lA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qr/25YCH+83K/sNzH6wqePPZnvs=\r\n\r\n", + "id": "6.4.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ], + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "34": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:09.449Z", + "trafficStats": null, + "txFrameStats": { + "0": 1 + }, + "txOctetStats": { + "2": 2, + "4": 1, + "6": 1, + "11": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3736266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TO", + [ + 2, + "0115" + ], + false + ], + [ + "TO", + [ + 11, + "cebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TO", + [ + 4, + "f4908080" + ], + false + ], + [ + "CT", + 1, + "B" + ], + [ + "CTE", + "B" + ], + [ + "TO", + [ + 6, + "656469746564" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 34, + "9d56a6a7f9981c4644ef692437ea681216e91b4846eb491844b9191a9c32cfd39c32" + ] + ], + [ + "RF", + [ + 29, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited" + ], + 1, + true, + 0, + true, + "56a6a7f9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_4_4.html b/autobahn/client/hornbeam_case_6_4_4.html new file mode 100644 index 0000000..753f4a6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_4.html @@ -0,0 +1,309 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.4.4 : Fail - 2004 ms @ 2023-08-10T21:35:11.454Z

+

Case Description

Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 =
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A'), ('timeout', 'B'), ('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=77&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: LXxLQ1gybmzv5nuTRCkGlQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wCO6t1yzEs8QPVnruF27ZjaLDmI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
34134
1831183
Total3218
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
111
224
818
12112
2061206
Total6231
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
01
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3737266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX OCTETS: 0115
+
003 TX OCTETS: cebae1bdb9cf83cebcceb5f4
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX OCTETS: 90
+
007 DELAY 1.000000 sec for TAG B
+
008 DELAY TIMEOUT on TAG B
+
009 TX OCTETS: 8080656469746564
+
010 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
011 TX OCTETS: 8000
+
012 FAIL CONNECTION AFTER 1.000000 sec
+
013 RX OCTETS: 81
+
014 RX OCTETS: 9d65b38cc9ab096d74dc7c0f07d97d3926da0e6376d85c33748a0c31ac01daf8ac01
+
015 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=3635623338636339
+
               κόσμε����edited
+
016 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_4_4.json b/autobahn/client/hornbeam_case_6_4_4.json new file mode 100644 index 0000000..cdd652f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_4_4.json @@ -0,0 +1,211 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 77, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5f4
\nPART2 = 90
\nPART3 =
\n", + "droppedByMe": false, + "duration": 2004, + "expectation": "The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=77&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: LXxLQ1gybmzv5nuTRCkGlQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wCO6t1yzEs8QPVnruF27ZjaLDmI=\r\n\r\n", + "id": "6.4.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ], + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "1": 1, + "34": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:11.454Z", + "trafficStats": null, + "txFrameStats": { + "0": 1 + }, + "txOctetStats": { + "1": 1, + "2": 2, + "8": 1, + "12": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3737266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TO", + [ + 2, + "0115" + ], + false + ], + [ + "TO", + [ + 12, + "cebae1bdb9cf83cebcceb5f4" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TO", + [ + 1, + "90" + ], + false + ], + [ + "CT", + 1, + "B" + ], + [ + "CTE", + "B" + ], + [ + "TO", + [ + 8, + "8080656469746564" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 34, + "9d65b38cc9ab096d74dc7c0f07d97d3926da0e6376d85c33748a0c31ac01daf8ac01" + ] + ], + [ + "RF", + [ + 29, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ufffd\ufffd\ufffd\ufffdedited" + ], + 1, + true, + 0, + true, + "65b38cc9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_5_1.html b/autobahn/client/hornbeam_case_6_5_1.html new file mode 100644 index 0000000..513174f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.5.1 : Pass - 49 ms @ 2023-08-10T21:35:13.461Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello$world', False)]}

+ Observed:
[('message', u'hello$world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=78&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: OfJz6g7aE/yI8a6fBD2GKw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZzerBdwTTNOqe2/seSrcHtyrg40=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
16116
1831183
Total4208
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3738266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello$world
+
003 TX OCTETS: 810b68656c6c6f24776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8bbbb2ebf5d3d78799d4969c9ac9de8f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=6262623265626635
+
               hello$world
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882271db4bb24f5
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3237316462346262
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_5_1.json b/autobahn/client/hornbeam_case_6_5_1.json new file mode 100644 index 0000000..44c0c05 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 78, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64", + "droppedByMe": true, + "duration": 49, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello$world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=78&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: OfJz6g7aE/yI8a6fBD2GKw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZzerBdwTTNOqe2/seSrcHtyrg40=\r\n\r\n", + "id": "6.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello$world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "16": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.461Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3738266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "hello$world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810b68656c6c6f24776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 16, + "8bbbb2ebf5d3d78799d4969c9ac9de8f" + ] + ], + [ + "RF", + [ + 11, + "hello$world" + ], + 1, + true, + 0, + true, + "bbb2ebf5" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882271db4bb24f5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "271db4bb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_5_2.html b/autobahn/client/hornbeam_case_6_5_2.html new file mode 100644 index 0000000..3db9d9a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_2.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.5.2 : Pass - 44 ms @ 2023-08-10T21:35:13.512Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\xa2world', False)]}

+ Observed:
[('message', u'hello\xa2world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=79&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: QfsoifqfDSzvLuu64s049A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XDFmSZa0GnBZ2bfGOTVbILI+Yww=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
17117
1831183
Total4209
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3739266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello¢world
+
003 TX OCTETS: 810c68656c6c6fc2a2776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c96d88ff1febde39df91a2d86f9aae395
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3936643838666631
+
               hello¢world
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823897e98e3b7f
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3338393765393865
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_5_2.json b/autobahn/client/hornbeam_case_6_5_2.json new file mode 100644 index 0000000..db94940 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_2.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 79, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\u00a2world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=79&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: QfsoifqfDSzvLuu64s049A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XDFmSZa0GnBZ2bfGOTVbILI+Yww=\r\n\r\n", + "id": "6.5.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\u00a2world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "17": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.512Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3739266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "hello\u00a2world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c68656c6c6fc2a2776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c96d88ff1febde39df91a2d86f9aae395" + ] + ], + [ + "RF", + [ + 12, + "hello\u00a2world" + ], + 1, + true, + 0, + true, + "96d88ff1" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823897e98e3b7f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3897e98e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_5_3.html b/autobahn/client/hornbeam_case_6_5_3.html new file mode 100644 index 0000000..83435a9 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_3.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.5.3 : Pass - 47 ms @ 2023-08-10T21:35:13.559Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\u20acworld', False)]}

+ Observed:
[('message', u'hello\u20acworld', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=80&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 59zmrlngz7KFwHQRYG1Eow==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bYGXeW+hj/WtzFBhrBi7qcuRNXs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1831183
Total4210
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
15115
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3830266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello€world
+
003 TX OCTETS: 810d68656c6c6fe282ac776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8db16c704dd9091c21de8ef2e1c6030221d5
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6231366337303464
+
               hello€world
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e4d18042e739
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534643138303432
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_5_3.json b/autobahn/client/hornbeam_case_6_5_3.json new file mode 100644 index 0000000..d236cec --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_3.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 80, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\u20acworld", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=80&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 59zmrlngz7KFwHQRYG1Eow==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bYGXeW+hj/WtzFBhrBi7qcuRNXs=\r\n\r\n", + "id": "6.5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\u20acworld", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.559Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3830266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "hello\u20acworld" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d68656c6c6fe282ac776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 18, + "8db16c704dd9091c21de8ef2e1c6030221d5" + ] + ], + [ + "RF", + [ + 13, + "hello\u20acworld" + ], + 1, + true, + 0, + true, + "b16c704d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e4d18042e739" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e4d18042" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_5_4.html b/autobahn/client/hornbeam_case_6_5_4.html new file mode 100644 index 0000000..8e09f9a --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_4.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.5.4 : Pass - 46 ms @ 2023-08-10T21:35:13.608Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\U00024b62world', False)]}

+ Observed:
[('message', u'hello\U00024b62world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=81&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7YL4NqwuLF8XiA3qF6nWxQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eG2MFgJQsjJ2hhUz2JA/ck87mqw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
19119
1831183
Total4211
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
16116
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3831266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello𤭢world
+
003 TX OCTETS: 810e68656c6c6ff0a4ada2776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8e7464c1c81c01ada41b946565d613aeba1800
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASKED=True, MASK=3734363463316338
+
               hello𤭢world
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823eb5612d3d5d
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3365623536313264
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_5_4.json b/autobahn/client/hornbeam_case_6_5_4.json new file mode 100644 index 0000000..a8a68f0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 81, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\ud852\udf62world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=81&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7YL4NqwuLF8XiA3qF6nWxQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eG2MFgJQsjJ2hhUz2JA/ck87mqw=\r\n\r\n", + "id": "6.5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\ud852\udf62world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "19": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.608Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "16": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3831266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "hello\ud852\udf62world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "810e68656c6c6ff0a4ada2776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 19, + "8e7464c1c81c01ada41b946565d613aeba1800" + ] + ], + [ + "RF", + [ + 14, + "hello\ud852\udf62world" + ], + 1, + true, + 0, + true, + "7464c1c8" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823eb5612d3d5d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3eb5612d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_5_5.html b/autobahn/client/hornbeam_case_6_5_5.html new file mode 100644 index 0000000..6a038aa --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_5.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.5.5 : Pass - 47 ms @ 2023-08-10T21:35:13.656Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=82&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Xr27RzoMJtuS8HuiXM9iRQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vLrPAGZ9cYgUK121LPy/nAQeR2Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
16116
1831183
Total4208
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3832266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 810bcebae1bdb9cf83cebcceb5
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8ba6b7cd7d680d2cc01f784eb31a7978
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=6136623763643764
+
               κόσμε
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882eec238d5ed2a
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6565633233386435
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_5_5.json b/autobahn/client/hornbeam_case_6_5_5.json new file mode 100644 index 0000000..cead1b3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_5_5.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 82, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=82&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Xr27RzoMJtuS8HuiXM9iRQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vLrPAGZ9cYgUK121LPy/nAQeR2Q=\r\n\r\n", + "id": "6.5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "16": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.656Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3832266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 16, + "8ba6b7cd7d680d2cc01f784eb31a7978" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "a6b7cd7d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882eec238d5ed2a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "eec238d5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_1.html b/autobahn/client/hornbeam_case_6_6_1.html new file mode 100644 index 0000000..e929883 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.1 : Fail - 503 ms @ 2023-08-10T21:35:13.705Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=83&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vAoFBk6FwB1WeWqf8VH9Xw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BYk/V9PY0WFUj02G2iF+DpsE7h8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
18118
1831183
Total4210
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3833266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 8101ce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83469a4953a925f4
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3436396134393533
+
               �
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c003d8f0703d4c8686953e827414aee7e
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3030336438663037
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_1.json b/autobahn/client/hornbeam_case_6_6_1.json new file mode 100644 index 0000000..4fb808b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 83, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=83&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vAoFBk6FwB1WeWqf8VH9Xw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BYk/V9PY0WFUj02G2iF+DpsE7h8=\r\n\r\n", + "id": "6.6.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:13.705Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3833266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101ce" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83469a4953a925f4" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "469a4953" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c003d8f0703d4c8686953e827414aee7e" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "003d8f07" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_10.html b/autobahn/client/hornbeam_case_6_6_10.html new file mode 100644 index 0000000..c305367 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_10.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.10 : Fail - 503 ms @ 2023-08-10T21:35:16.419Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=92&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: yqqueXC1fctcectWp8dYbA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bLJDURpbSTCpIJBWBCN4j/r3Nwg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
17117
18118
1831183
Total4219
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
12112
14114
2061206
Total3232
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3932266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=10, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83cebcce
+
003 TX OCTETS: 810acebae1bdb9cf83cebcce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8cee4943c220f3a27f5786c00c52a6fc7f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6565343934336332
+
               κόσμ�
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c03d2f7c6003bb0a96abc90e642a596bf
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3033643266376336
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_10.json b/autobahn/client/hornbeam_case_6_6_10.json new file mode 100644 index 0000000..67ea17c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_10.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 92, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=92&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: yqqueXC1fctcectWp8dYbA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bLJDURpbSTCpIJBWBCN4j/r3Nwg=\r\n\r\n", + "id": "6.6.10", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "17": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:16.419Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "12": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3932266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 10, + "0xcebae1bdb9cf83cebcce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 12, + "810acebae1bdb9cf83cebcce" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8cee4943c220f3a27f5786c00c52a6fc7f" + ] + ], + [ + "RF", + [ + 12, + "\u03ba\u1f79\u03c3\u03bc\ufffd" + ], + 1, + true, + 0, + true, + "ee4943c2" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c03d2f7c6003bb0a96abc90e642a596bf" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "03d2f7c6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_11.html b/autobahn/client/hornbeam_case_6_6_11.html new file mode 100644 index 0000000..de7b886 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_11.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.11 : Pass - 46 ms @ 2023-08-10T21:35:16.924Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=93&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: g4v6lp4HliJ4atwZlMlhyQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JezHtcvdLsLJPqkM6HapmTpJSZg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
16116
1831183
Total4208
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3933266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 810bcebae1bdb9cf83cebcceb5
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8b90ebbd805e515c3d29243e4e2c2508
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=3930656262643830
+
               κόσμε
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882492f1ba94ac7
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3439326631626139
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_11.json b/autobahn/client/hornbeam_case_6_6_11.json new file mode 100644 index 0000000..378ac52 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_11.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 93, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=93&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: g4v6lp4HliJ4atwZlMlhyQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JezHtcvdLsLJPqkM6HapmTpJSZg=\r\n\r\n", + "id": "6.6.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "16": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:16.924Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3933266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 16, + "8b90ebbd805e515c3d29243e4e2c2508" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "90ebbd80" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882492f1ba94ac7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "492f1ba9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_2.html b/autobahn/client/hornbeam_case_6_6_2.html new file mode 100644 index 0000000..5089cec --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.2 : Pass - 46 ms @ 2023-08-10T21:35:14.209Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba', False)]}

+ Observed:
[('message', u'\u03ba', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=84&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 7vLiilKKyuV/qcDiOrmqJw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ioekY98gKR8OY3ZKNnKK3+jbFX8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
122
7214
1831183
Total5199
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3834266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κ
+
003 TX OCTETS: 8102ceba
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 82ac64883c62de
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6163363438383363
+
               κ
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88
+
011 RX OCTETS: 82c41fa2b4c7f7
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6334316661326234
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_2.json b/autobahn/client/hornbeam_case_6_6_2.json new file mode 100644 index 0000000..174e0a6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_2.json @@ -0,0 +1,190 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 84, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=84&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 7vLiilKKyuV/qcDiOrmqJw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ioekY98gKR8OY3ZKNnKK3+jbFX8=\r\n\r\n", + "id": "6.6.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 2, + "183": 1 + }, + "started": "2023-08-10T21:35:14.209Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3834266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u03ba" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102ceba" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 7, + "82ac64883c62de" + ] + ], + [ + "RF", + [ + 2, + "\u03ba" + ], + 1, + true, + 0, + true, + "ac64883c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82c41fa2b4c7f7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c41fa2b4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_3.html b/autobahn/client/hornbeam_case_6_6_3.html new file mode 100644 index 0000000..33f947c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.3 : Fail - 503 ms @ 2023-08-10T21:35:14.258Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=85&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: pRGze7kspxOR8y/owGKuyg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: N9cOCXMjcp2/CP2m0qlfaXcKC/E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
10110
18118
1831183
Total4212
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
515
14114
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3835266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1
+
003 TX OCTETS: 8103cebae1
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 85ca6963b404d38c0b77
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASKED=True, MASK=6361363936336234
+
               κ�
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cb263105bb18a5734db0d777bf3147122
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6232363331303562
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_3.json b/autobahn/client/hornbeam_case_6_6_3.json new file mode 100644 index 0000000..609bdc6 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_3.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 85, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=85&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: pRGze7kspxOR8y/owGKuyg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: N9cOCXMjcp2/CP2m0qlfaXcKC/E=\r\n\r\n", + "id": "6.6.3", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "10": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:14.258Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "5": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3835266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xcebae1" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103cebae1" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 10, + "85ca6963b404d38c0b77" + ] + ], + [ + "RF", + [ + 5, + "\u03ba\ufffd" + ], + 1, + true, + 0, + true, + "ca6963b4" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cb263105bb18a5734db0d777bf3147122" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "b263105b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_4.html b/autobahn/client/hornbeam_case_6_6_4.html new file mode 100644 index 0000000..dcb47a5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.4 : Fail - 503 ms @ 2023-08-10T21:35:14.763Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=86&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: nt1qO12kI9BoOxUbYLC78w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1nDlohkVMJ4bADybz5REfSb8NuY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
10110
18118
1831183
Total4212
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
14114
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3836266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bd
+
003 TX OCTETS: 8104cebae1bd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 858b56702245ec9f9d36
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASKED=True, MASK=3862353637303232
+
               κ�
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c7254ef0e71bda8611b3a882e33238e77
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3732353465663065
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_4.json b/autobahn/client/hornbeam_case_6_6_4.json new file mode 100644 index 0000000..d982a47 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_4.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 86, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=86&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: nt1qO12kI9BoOxUbYLC78w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1nDlohkVMJ4bADybz5REfSb8NuY=\r\n\r\n", + "id": "6.6.4", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "10": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:14.763Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "6": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3836266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xcebae1bd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104cebae1bd" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 10, + "858b56702245ec9f9d36" + ] + ], + [ + "RF", + [ + 5, + "\u03ba\ufffd" + ], + 1, + true, + 0, + true, + "8b567022" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c7254ef0e71bda8611b3a882e33238e77" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "7254ef0e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_5.html b/autobahn/client/hornbeam_case_6_6_5.html new file mode 100644 index 0000000..cafb7c4 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_5.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.5 : Pass - 47 ms @ 2023-08-10T21:35:15.268Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79', False)]}

+ Observed:
[('message', u'\u03ba\u1f79', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=87&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ZXLInu65g0Hh5ICDe9XTTQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: syjMLMFS4FzQ3IEMnI5wGEZ28Nc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
10110
1831183
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
717
2061206
Total3217
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3837266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κό
+
003 TX OCTETS: 8105cebae1bdb9
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 85e16afe572fd01fea58
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASKED=True, MASK=6531366166653537
+
               κό
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882aa90e456a978
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6161393065343536
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_5.json b/autobahn/client/hornbeam_case_6_6_5.json new file mode 100644 index 0000000..5c30f3f --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_5.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 87, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=87&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ZXLInu65g0Hh5ICDe9XTTQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: syjMLMFS4FzQ3IEMnI5wGEZ28Nc=\r\n\r\n", + "id": "6.6.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "10": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:15.268Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3837266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "\u03ba\u1f79" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105cebae1bdb9" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 10, + "85e16afe572fd01fea58" + ] + ], + [ + "RF", + [ + 5, + "\u03ba\u1f79" + ], + 1, + true, + 0, + true, + "e16afe57" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882aa90e456a978" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "aa90e456" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_6.html b/autobahn/client/hornbeam_case_6_6_6.html new file mode 100644 index 0000000..12c9b88 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_6.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.6 : Fail - 503 ms @ 2023-08-10T21:35:15.317Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\u1f79\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=88&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ljaq0cZ9ZS+XGgNGwK1rqw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sq3wfRg/6qQV8f2a91b4gcx91LY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
13113
18118
1831183
Total4215
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3838266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf
+
003 TX OCTETS: 8106cebae1bdb9cf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 88cb8d9ab105377b0c7262250c
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=8, MASKED=True, MASK=6362386439616231
+
               κό�
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c75e86d6c76012a031c860a4c349f0c15
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3735653836643663
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_6.json b/autobahn/client/hornbeam_case_6_6_6.json new file mode 100644 index 0000000..9c86aea --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_6.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 88, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=88&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ljaq0cZ9ZS+XGgNGwK1rqw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sq3wfRg/6qQV8f2a91b4gcx91LY=\r\n\r\n", + "id": "6.6.6", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\u1f79\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "13": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:15.317Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3838266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xcebae1bdb9cf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106cebae1bdb9cf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 13, + "88cb8d9ab105377b0c7262250c" + ] + ], + [ + "RF", + [ + 8, + "\u03ba\u1f79\ufffd" + ], + 1, + true, + 0, + true, + "cb8d9ab1" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c75e86d6c76012a031c860a4c349f0c15" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "75e86d6c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_7.html b/autobahn/client/hornbeam_case_6_6_7.html new file mode 100644 index 0000000..8a1371b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_7.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.7 : Pass - 44 ms @ 2023-08-10T21:35:15.823Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=89&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 9m+cDnIjQouybEdqX4rGlw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: hQ0666JCUI0B57qeNAMTn61U9NE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
12112
1831183
Total4204
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
919
2061206
Total3219
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3839266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=7, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσ
+
003 TX OCTETS: 8107cebae1bdb9cf83
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 87e0f41c5d2e4efde0593b9f
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=7, MASKED=True, MASK=6530663431633564
+
               κόσ
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88825aa6526d594e
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3561613635323664
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_7.json b/autobahn/client/hornbeam_case_6_6_7.json new file mode 100644 index 0000000..0974221 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_7.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 89, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=89&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 9m+cDnIjQouybEdqX4rGlw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: hQ0666JCUI0B57qeNAMTn61U9NE=\r\n\r\n", + "id": "6.6.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "12": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:15.823Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "9": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3839266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 7, + "\u03ba\u1f79\u03c3" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 9, + "8107cebae1bdb9cf83" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 12, + "87e0f41c5d2e4efde0593b9f" + ] + ], + [ + "RF", + [ + 7, + "\u03ba\u1f79\u03c3" + ], + 1, + true, + 0, + true, + "e0f41c5d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825aa6526d594e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5aa6526d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_8.html b/autobahn/client/hornbeam_case_6_6_8.html new file mode 100644 index 0000000..85741a3 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_8.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.8 : Fail - 503 ms @ 2023-08-10T21:35:15.868Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=90&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: eyuz7jcJZxilqPejdZpilA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bWZqhNde57N/29kcscG7lX+/+oI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
15115
18118
1831183
Total4217
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
10110
14114
2061206
Total3230
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3930266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83ce
+
003 TX OCTETS: 8108cebae1bdb9cf83ce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8ad18d5e8a1f37bf376842dd656e30
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=10, MASKED=True, MASK=6431386435653861
+
               κόσ�
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888cdfc62682dc2f61edb6a841a29eb147fb
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=6466633632363832
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_8.json b/autobahn/client/hornbeam_case_6_6_8.json new file mode 100644 index 0000000..343a21e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_8.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 90, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=90&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: eyuz7jcJZxilqPejdZpilA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bWZqhNde57N/29kcscG7lX+/+oI=\r\n\r\n", + "id": "6.6.8", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "15": 1, + "18": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:15.868Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "10": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3930266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0xcebae1bdb9cf83ce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "8108cebae1bdb9cf83ce" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 15, + "8ad18d5e8a1f37bf376842dd656e30" + ] + ], + [ + "RF", + [ + 10, + "\u03ba\u1f79\u03c3\ufffd" + ], + 1, + true, + 0, + true, + "d18d5e8a" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888cdfc62682dc2f61edb6a841a29eb147fb" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "dfc62682" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_6_9.html b/autobahn/client/hornbeam_case_6_6_9.html new file mode 100644 index 0000000..534bec4 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_9.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.6.9 : Pass - 44 ms @ 2023-08-10T21:35:16.373Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=91&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: FoxmVKjzNGHcJtFnF8I3fQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TWUOWXpS9DFI82F6FD2eltU4q6U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
14114
1831183
Total4206
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11111
2061206
Total3221
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3931266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμ
+
003 TX OCTETS: 8109cebae1bdb9cf83cebc
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 89b5cfea067b750bbb0c0069c809
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6235636665613036
+
               κόσμ
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88820508179e06e0
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3035303831373965
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_6_9.json b/autobahn/client/hornbeam_case_6_6_9.json new file mode 100644 index 0000000..dd98ea5 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_6_9.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 91, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=91&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: FoxmVKjzNGHcJtFnF8I3fQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TWUOWXpS9DFI82F6FD2eltU4q6U=\r\n\r\n", + "id": "6.6.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "14": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:16.373Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3931266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "\u03ba\u1f79\u03c3\u03bc" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109cebae1bdb9cf83cebc" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 14, + "89b5cfea067b750bbb0c0069c809" + ] + ], + [ + "RF", + [ + 9, + "\u03ba\u1f79\u03c3\u03bc" + ], + 1, + true, + 0, + true, + "b5cfea06" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820508179e06e0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0508179e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_7_1.html b/autobahn/client/hornbeam_case_6_7_1.html new file mode 100644 index 0000000..2688c96 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.7.1 : Pass - 47 ms @ 2023-08-10T21:35:16.971Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x00', False)]}

+ Observed:
[('message', u'\x00', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=94&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3YuHnxQS/fj52Udre2cjoQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: d8rZJl/8jn9OHeFy2A1ZatVx/Sg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
616
818
1831183
Total4198
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
414
2061206
Total3213
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3934266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 810100
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 81f94ef2c8f9
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASKED=True, MASK=6639346566326338
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882e8f2e751eb1a
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6538663265373531
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_7_1.json b/autobahn/client/hornbeam_case_6_7_1.json new file mode 100644 index 0000000..e1d6200 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 94, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00", + "droppedByMe": true, + "duration": 47, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0000", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=94&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3YuHnxQS/fj52Udre2cjoQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: d8rZJl/8jn9OHeFy2A1ZatVx/Sg=\r\n\r\n", + "id": "6.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0000", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "6": 1, + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:16.971Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3934266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "\u0000" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "810100" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 6, + "81f94ef2c8f9" + ] + ], + [ + "RF", + [ + 1, + "\u0000" + ], + 1, + true, + 0, + true, + "f94ef2c8" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e8f2e751eb1a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e8f2e751" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_7_2.html b/autobahn/client/hornbeam_case_6_7_2.html new file mode 100644 index 0000000..e6ee1ac --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.7.2 : Pass - 44 ms @ 2023-08-10T21:35:17.020Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x80', False)]}

+ Observed:
[('message', u'\x80', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=95&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 4QsL7x01cU1nUULfd0BDew==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Io3hfFqFUYNqYRCJPqs9rl/sX8Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
717
818
1831183
Total4199
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3935266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               €
+
003 TX OCTETS: 8102c280
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 824dde241a8f5e
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3464646532343161
+
               €
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888209100de00af8
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3039313030646530
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_7_2.json b/autobahn/client/hornbeam_case_6_7_2.json new file mode 100644 index 0000000..caec37e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_2.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 95, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0080", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=95&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 4QsL7x01cU1nUULfd0BDew==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Io3hfFqFUYNqYRCJPqs9rl/sX8Y=\r\n\r\n", + "id": "6.7.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0080", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "8": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:17.020Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3935266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c280" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 7, + "824dde241a8f5e" + ] + ], + [ + "RF", + [ + 2, + "\u0080" + ], + 1, + true, + 0, + true, + "4dde241a" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888209100de00af8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "09100de0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_7_3.html b/autobahn/client/hornbeam_case_6_7_3.html new file mode 100644 index 0000000..4890c35 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.7.3 : Pass - 45 ms @ 2023-08-10T21:35:17.065Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u0800', False)]}

+ Observed:
[('message', u'\u0800', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=96&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: UekLI596Tf7MuxzBUCSMRQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: s4380WIxMcQ245K7L0vEPbXAynM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1831183
Total4200
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3936266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               à €
+
003 TX OCTETS: 8103e0a080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 837ccd37ed9c6db7
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3763636433376564
+
               à €
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88821562ed43168a
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3135363265643433
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_7_3.json b/autobahn/client/hornbeam_case_6_7_3.json new file mode 100644 index 0000000..f733b1b --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_3.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 96, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0800", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=96&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: UekLI596Tf7MuxzBUCSMRQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: s4380WIxMcQ245K7L0vEPbXAynM=\r\n\r\n", + "id": "6.7.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0800", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "183": 1 + }, + "started": "2023-08-10T21:35:17.065Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3936266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\u0800" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e0a080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "837ccd37ed9c6db7" + ] + ], + [ + "RF", + [ + 3, + "\u0800" + ], + 1, + true, + 0, + true, + "7ccd37ed" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821562ed43168a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1562ed43" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_7_4.html b/autobahn/client/hornbeam_case_6_7_4.html new file mode 100644 index 0000000..141c574 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_4.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.7.4 : Pass - 46 ms @ 2023-08-10T21:35:17.112Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U00010000', False)]}

+ Observed:
[('message', u'\U00010000', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=97&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gE7KaTRIp0/hl0uXiZL2kw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /rHoz5OqD5+46byo203Az70S7FU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1831183
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3937266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð€€
+
003 TX OCTETS: 8104f0908080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 84154e36e2e5deb662
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3135346533366532
+
               ð€€
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882077e46b80496
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3037376534366238
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_7_4.json b/autobahn/client/hornbeam_case_6_7_4.json new file mode 100644 index 0000000..040111e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_7_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 97, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud800\udc00", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=97&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gE7KaTRIp0/hl0uXiZL2kw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /rHoz5OqD5+46byo203Az70S7FU=\r\n\r\n", + "id": "6.7.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud800\udc00", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:17.112Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3937266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud800\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0908080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "84154e36e2e5deb662" + ] + ], + [ + "RF", + [ + 4, + "\ud800\udc00" + ], + 1, + true, + 0, + true, + "154e36e2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882077e46b80496" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "077e46b8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_8_1.html b/autobahn/client/hornbeam_case_6_8_1.html new file mode 100644 index 0000000..b7efde2 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_8_1.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.8.1 : Fail - 503 ms @ 2023-08-10T21:35:17.158Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=98&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jVosMId73KuagkM9kEg4VA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4ZUbA04uFv1cKrbnYLpvALroVBs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
20120
1831183
Total4222
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
14114
2061206
Total3227
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3938266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf888808080
+
003 TX OCTETS: 8105f888808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8fcc52366123ed8b8e73efd9de71bd89dc23ed8b
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=15, MASKED=True, MASK=6363353233363631
+
               �����
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c26e3018f250a46e04f8d66af679460f6
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3236653330313866
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_8_1.json b/autobahn/client/hornbeam_case_6_8_1.json new file mode 100644 index 0000000..97cef4c --- /dev/null +++ b/autobahn/client/hornbeam_case_6_8_1.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 98, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=98&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jVosMId73KuagkM9kEg4VA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4ZUbA04uFv1cKrbnYLpvALroVBs=\r\n\r\n", + "id": "6.8.1", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "20": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:17.158Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "7": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3938266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf888808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f888808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 20, + "8fcc52366123ed8b8e73efd9de71bd89dc23ed8b" + ] + ], + [ + "RF", + [ + 15, + "\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "cc523661" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c26e3018f250a46e04f8d66af679460f6" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "26e3018f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_8_2.html b/autobahn/client/hornbeam_case_6_8_2.html new file mode 100644 index 0000000..59fae17 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_8_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.8.2 : Fail - 503 ms @ 2023-08-10T21:35:17.664Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd', False)] +

+

Case Closing Behavior

The connection was failed by the wrong endpoint (FAILED)

+

+

Opening Handshake

+
GET /runCase?case=99&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: RPk68Y91MC0hjNHVpTuGWQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: k5Ol9+RqGDNAlHNFVHamujqxpaU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonGoing AwayThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonGoing AwayThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
18118
23123
1831183
Total4225
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2061206
Total3228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3939266167656e743d486f726e6265616d20485454502f312e310d0a486f7374
+
               3a206c6f63616c686f73743a3930 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc8480808080
+
003 TX OCTETS: 8106fc8480808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 923beab26ad4550f8584575dd586050dd7d4550f858457
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3362656162323661
+
               ������
+
008 FAILING CONNECTION
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9476f696e672041776179
+
010 TX OCTETS: 880c03e9476f696e672041776179
+
011 RX OCTETS: 888c84ce622d87272542eda0050dc5b90354
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3834636536323264
+
               0x03e9476f696e672041776179
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_8_2.json b/autobahn/client/hornbeam_case_6_8_2.json new file mode 100644 index 0000000..6f43ec0 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_8_2.json @@ -0,0 +1,183 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "FAILED", + "case": 99, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080", + "droppedByMe": true, + "duration": 503, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=99&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: RPk68Y91MC0hjNHVpTuGWQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: k5Ol9+RqGDNAlHNFVHamujqxpaU=\r\n\r\n", + "id": "6.8.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": "Going Away", + "received": [ + [ + "message", + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", + false + ] + ], + "remoteCloseCode": 1001, + "remoteCloseReason": "Going Away", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "The connection was failed by the wrong endpoint", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "18": 1, + "23": 1, + "183": 1 + }, + "started": "2023-08-10T21:35:17.664Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "8": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 183, + "474554202f72756e436173653f636173653d3939266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a3930 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc8480808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc8480808080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 23, + "923beab26ad4550f8584575dd586050dd7d4550f858457" + ] + ], + [ + "RF", + [ + 18, + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd" + ], + 1, + true, + 0, + true, + "3beab26a" + ], + [ + "KLE" + ], + [ + "TF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "880c03e9476f696e672041776179" + ], + false + ], + [ + "RO", + [ + 18, + "888c84ce622d87272542eda0050dc5b90354" + ] + ], + [ + "RF", + [ + 12, + "0x03e9476f696e672041776179" + ], + 8, + true, + 0, + true, + "84ce622d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_9_1.html b/autobahn/client/hornbeam_case_6_9_1.html new file mode 100644 index 0000000..c267879 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.9.1 : Pass - 48 ms @ 2023-08-10T21:35:18.169Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x7f', False)]}

+ Observed:
[('message', u'\x7f', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=100&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: z9zRneh6zD3te0Dv7c9eQA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iJiQlElF+c3yUPc775ZNt398GqY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
616
818
1841184
Total4199
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
414
2061206
Total3213
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313030266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 81017f
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 81146890856b
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASKED=True, MASK=3134363839303835
+
               
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88829abc29a69954
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3961626332396136
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_9_1.json b/autobahn/client/hornbeam_case_6_9_1.json new file mode 100644 index 0000000..21f9ebc --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 100, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f", + "droppedByMe": true, + "duration": 48, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u007f", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=100&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: z9zRneh6zD3te0Dv7c9eQA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iJiQlElF+c3yUPc775ZNt398GqY=\r\n\r\n", + "id": "6.9.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u007f", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "6": 1, + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:18.169Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313030266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "\u007f" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "81017f" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 6, + "81146890856b" + ] + ], + [ + "RF", + [ + 1, + "\u007f" + ], + 1, + true, + 0, + true, + "14689085" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829abc29a69954" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9abc29a6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_9_2.html b/autobahn/client/hornbeam_case_6_9_2.html new file mode 100644 index 0000000..d932c1e --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.9.2 : Pass - 44 ms @ 2023-08-10T21:35:18.219Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u07ff', False)]}

+ Observed:
[('message', u'\u07ff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=101&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 6xCVKX8Fj1vMuPmooataVA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: c+g2LdNIHOid5uE8ZNDF637Qsqg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
717
818
1841184
Total4200
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313031266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ß¿
+
003 TX OCTETS: 8102dfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 82ffbbc76c2004
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6666626263373663
+
               ß¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88820e1f9ff80df7
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3065316639666638
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_9_2.json b/autobahn/client/hornbeam_case_6_9_2.json new file mode 100644 index 0000000..314f526 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_2.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 101, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf", + "droppedByMe": true, + "duration": 44, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u07ff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=101&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 6xCVKX8Fj1vMuPmooataVA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: c+g2LdNIHOid5uE8ZNDF637Qsqg=\r\n\r\n", + "id": "6.9.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u07ff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:18.219Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313031266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u07ff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102dfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 7, + "82ffbbc76c2004" + ] + ], + [ + "RF", + [ + 2, + "\u07ff" + ], + 1, + true, + 0, + true, + "ffbbc76c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820e1f9ff80df7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0e1f9ff8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_9_3.html b/autobahn/client/hornbeam_case_6_9_3.html new file mode 100644 index 0000000..95f35e7 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.9.3 : Pass - 46 ms @ 2023-08-10T21:35:18.265Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=102&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tZt5ouxLJW9J6AvV+x3PEA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pQ1xkTN5/G4CeaDRjVGKWGxvGiA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
8216
1841184
Total4201
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313032266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 83c1bc2f3f2e0390
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6331626332663366
+
               ï¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882f0ca84f9f322
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6630636138346639
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_9_3.json b/autobahn/client/hornbeam_case_6_9_3.json new file mode 100644 index 0000000..e811667 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_3.json @@ -0,0 +1,184 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 102, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 46, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=102&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tZt5ouxLJW9J6AvV+x3PEA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pQ1xkTN5/G4CeaDRjVGKWGxvGiA=\r\n\r\n", + "id": "6.9.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 2, + "184": 1 + }, + "started": "2023-08-10T21:35:18.265Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313032266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 8, + "83c1bc2f3f2e0390" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "c1bc2f3f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f0ca84f9f322" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f0ca84f9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_6_9_4.html b/autobahn/client/hornbeam_case_6_9_4.html new file mode 100644 index 0000000..c4ef548 --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_4.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 6.9.4 : Pass - 45 ms @ 2023-08-10T21:35:18.312Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=103&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Y/0jVwaPf7mb1DtaeCx+uw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YCmeLoqSjcwzAwmqvTTmvV0uQ3Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
919
1841184
Total4202
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313033266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 846dccbea799430118
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3664636362656137
+
               ô¿¿
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 8882fe2416b9fdcc
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6665323431366239
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_6_9_4.json b/autobahn/client/hornbeam_case_6_9_4.json new file mode 100644 index 0000000..82713ad --- /dev/null +++ b/autobahn/client/hornbeam_case_6_9_4.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 103, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 45, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=103&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Y/0jVwaPf7mb1DtaeCx+uw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YCmeLoqSjcwzAwmqvTTmvV0uQ3Q=\r\n\r\n", + "id": "6.9.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "9": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:18.312Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d313033266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 9, + "846dccbea799430118" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "6dccbea7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fe2416b9fdcc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fe2416b9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_13_1.html b/autobahn/client/hornbeam_case_7_13_1.html new file mode 100644 index 0000000..ec26999 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_13_1.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.13.1 : Informational - 1 ms @ 2023-08-10T21:35:52.295Z

+

Case Description

Send close with close code 5000

+

Case Expectation

Actual events are undefined by the spec.

+ +

+ Case Outcome

Actual events are undefined by the spec.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=245&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: R9nyHTvVNLhZXdRL1vNiOg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jedtXtxVo+tkKLHEPpN3GUHkZI0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode5000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode5000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
717
1841184
Total3192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323435266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x1388
+
003 TX OCTETS: 88021388
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88
+
006 RX OCTETS: 824756b19554de
+
007 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3437353662313935
+
               0x1388
+
008 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_13_1.json b/autobahn/client/hornbeam_case_7_13_1.json new file mode 100644 index 0000000..75381bf --- /dev/null +++ b/autobahn/client/hornbeam_case_7_13_1.json @@ -0,0 +1,130 @@ +{ + "agent": "Hornbeam", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 245, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with close code 5000", + "droppedByMe": true, + "duration": 1, + "expectation": "Actual events are undefined by the spec.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 5000, + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=245&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: R9nyHTvVNLhZXdRL1vNiOg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jedtXtxVo+tkKLHEPpN3GUHkZI0=\r\n\r\n", + "id": "7.13.1", + "isServer": true, + "localCloseCode": 5000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 5000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events are undefined by the spec.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.295Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323435266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x1388" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88021388" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "824756b19554de" + ] + ], + [ + "RF", + [ + 2, + "0x1388" + ], + 8, + true, + 0, + true, + "4756b195" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_13_2.html b/autobahn/client/hornbeam_case_7_13_2.html new file mode 100644 index 0000000..e9b4aec --- /dev/null +++ b/autobahn/client/hornbeam_case_7_13_2.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.13.2 : Informational - 2 ms @ 2023-08-10T21:35:52.304Z

+

Case Description

Send close with close code 65536

+

Case Expectation

Actual events are undefined by the spec.

+ +

+ Case Outcome

Actual events are undefined by the spec.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=246&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: H411aAfy/tO4mIj5oBSfww==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1GHwVYagQQhq27CoNwGjEJgbzEA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode65535The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode65535The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323436266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xffff
+
003 TX OCTETS: 8802ffff
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882dcb8b0c12347
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6463623862306331
+
               0xffff
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_13_2.json b/autobahn/client/hornbeam_case_7_13_2.json new file mode 100644 index 0000000..f6babdd --- /dev/null +++ b/autobahn/client/hornbeam_case_7_13_2.json @@ -0,0 +1,122 @@ +{ + "agent": "Hornbeam", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 246, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with close code 65536", + "droppedByMe": true, + "duration": 2, + "expectation": "Actual events are undefined by the spec.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 65535, + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=246&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: H411aAfy/tO4mIj5oBSfww==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1GHwVYagQQhq27CoNwGjEJgbzEA=\r\n\r\n", + "id": "7.13.2", + "isServer": true, + "localCloseCode": 65535, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 65535, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events are undefined by the spec.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.304Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323436266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xffff" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8802ffff" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882dcb8b0c12347" + ] + ], + [ + "RF", + [ + 2, + "0xffff" + ], + 8, + true, + 0, + true, + "dcb8b0c1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_1.html b/autobahn/client/hornbeam_case_7_1_1.html new file mode 100644 index 0000000..14d24cc --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_1.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.1 : Pass - 44 ms @ 2023-08-10T21:35:51.420Z

+

Case Description

Send a message followed by a close frame

+

Case Expectation

Echoed message followed by clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello World!', False)]}

+ Observed:
[('message', u'Hello World!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=210&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: XbGtNAn+w6AqY/e0ney/5g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Ac6EKQB1dQCfemPw3R7DYX1EYkk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
818
17117
1841184
Total4210
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323130266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
003 TX OCTETS: 810c48656c6c6f20576f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81
+
006 RX OCTETS: 8c1a9424a452f148c875b473cb68f84085
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3161393432346134
+
               Hello World!
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823ca92d1d3f41
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3363613932643164
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_1.json b/autobahn/client/hornbeam_case_7_1_1.json new file mode 100644 index 0000000..0bd00ac --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_1.json @@ -0,0 +1,185 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 210, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a message followed by a close frame", + "droppedByMe": true, + "duration": 44, + "expectation": "Echoed message followed by clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "Hello World!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=210&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: XbGtNAn+w6AqY/e0ney/5g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Ac6EKQB1dQCfemPw3R7DYX1EYkk=\r\n\r\n", + "id": "7.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello World!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "17": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.420Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323130266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 17, + "8c1a9424a452f148c875b473cb68f84085" + ] + ], + [ + "RF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + true, + "1a9424a4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823ca92d1d3f41" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3ca92d1d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_2.html b/autobahn/client/hornbeam_case_7_1_2.html new file mode 100644 index 0000000..a07ea42 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_2.html @@ -0,0 +1,295 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.2 : Pass - 2 ms @ 2023-08-10T21:35:51.465Z

+

Case Description

Send two close frames

+

Case Expectation

Clean close with normal code. Second close frame ignored.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=211&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +bK220bN7I7PS1Rva+RR4w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Hl76XRJxSfmTzTv5gENd4UAoyIU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
82
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323131266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8800
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 888217007d6014e8
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137303037643630
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_2.json b/autobahn/client/hornbeam_case_7_1_2.json new file mode 100644 index 0000000..12275cc --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_2.json @@ -0,0 +1,143 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 211, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send two close frames", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal code. Second close frame ignored.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=211&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +bK220bN7I7PS1Rva+RR4w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Hl76XRJxSfmTzTv5gENd4UAoyIU=\r\n\r\n", + "id": "7.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.465Z", + "trafficStats": null, + "txFrameStats": { + "8": 2 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323131266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888217007d6014e8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "17007d60" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_3.html b/autobahn/client/hornbeam_case_7_1_3.html new file mode 100644 index 0000000..c61243a --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_3.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.3 : Pass - 3 ms @ 2023-08-10T21:35:51.469Z

+

Case Description

Send a ping after close message

+

Case Expectation

Clean close with normal code, no pong.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=212&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: IrfanBk7LfxljK6DZ/UOlw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CY2dKCaGHoEYVlmugd7ehKYAp/0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323132266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8900
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88822ed35b992d3b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3265643335623939
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_3.json b/autobahn/client/hornbeam_case_7_1_3.json new file mode 100644 index 0000000..5fdd984 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_3.json @@ -0,0 +1,144 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 212, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a ping after close message", + "droppedByMe": true, + "duration": 3, + "expectation": "Clean close with normal code, no pong.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=212&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: IrfanBk7LfxljK6DZ/UOlw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CY2dKCaGHoEYVlmugd7ehKYAp/0=\r\n\r\n", + "id": "7.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.469Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323132266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88822ed35b992d3b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2ed35b99" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_4.html b/autobahn/client/hornbeam_case_7_1_4.html new file mode 100644 index 0000000..805fc0e --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_4.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.4 : Pass - 1 ms @ 2023-08-10T21:35:51.473Z

+

Case Description

Send text message after sending a close frame.

+

Case Expectation

Clean close with normal code. Text message ignored.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=213&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5pnZb6gXNy2cz9WccvCFyA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 06bBiPlIeu7wokKyqrLtD/dh95w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
717
1841184
Total3192
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323133266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
005 TX OCTETS: 810c48656c6c6f20576f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88
+
008 RX OCTETS: 829446f0bc97ae
+
009 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3934343666306263
+
               0x03e8
+
010 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_4.json b/autobahn/client/hornbeam_case_7_1_4.json new file mode 100644 index 0000000..59d56c8 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_4.json @@ -0,0 +1,152 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 213, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message after sending a close frame.", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code. Text message ignored.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=213&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5pnZb6gXNy2cz9WccvCFyA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 06bBiPlIeu7wokKyqrLtD/dh95w=\r\n\r\n", + "id": "7.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.473Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323133266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "829446f0bc97ae" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9446f0bc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_5.html b/autobahn/client/hornbeam_case_7_1_5.html new file mode 100644 index 0000000..eadc3e9 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_5.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.5 : Fail - 2 ms @ 2023-08-10T21:35:51.475Z

+

Case Description

Send message fragment1 followed by close then fragment

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': []}

+ Observed:
[('message', u'fragment1', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=214&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: GNSjtuMa0gPjwTtgqGX0UA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Y3ddztMBsh9eFHSYRo/FyYgwpt4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
22122
1841184
Total3207
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11222
2061206
Total4232
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323134266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
007 TX OCTETS: 8009667261676d656e7432
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 81
+
010 RX OCTETS: 891180211a77f2407d7ce54f6e208882e99d49b9ea75
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3131383032313161
+
               fragment1
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6539396434396239
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_5.json b/autobahn/client/hornbeam_case_7_1_5.json new file mode 100644 index 0000000..9abe0ad --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_5.json @@ -0,0 +1,194 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "OK", + "case": 214, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send message fragment1 followed by close then fragment", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=214&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: GNSjtuMa0gPjwTtgqGX0UA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Y3ddztMBsh9eFHSYRo/FyYgwpt4=\r\n\r\n", + "id": "7.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "22": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:51.475Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323134266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "81" + ] + ], + [ + "RO", + [ + 22, + "891180211a77f2407d7ce54f6e208882e99d49b9ea75" + ] + ], + [ + "RF", + [ + 9, + "fragment1" + ], + 1, + true, + 0, + true, + "1180211a" + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e99d49b9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_1_6.html b/autobahn/client/hornbeam_case_7_1_6.html new file mode 100644 index 0000000..2149f9f --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_6.html @@ -0,0 +1,319 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.1.6 : Informational - 723 ms @ 2023-08-10T21:35:51.478Z

+

Case Description

Send 256K message followed by close then a ping

+

Case Expectation

Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.

+ +

+ Case Outcome

Close was processed before text message could be returned.

+ Expected:
{'OK': [('message', u'Hello World!', False)], 'NON-STRICT': []}

+ Observed:
[] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=215&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gtuj/GR6WG//yd/VdXUKvg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 16RmqdfxLEPZBd+4NucYuSPaxhU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + +
Chop SizeCountOctets
1841184
724117241
23168123168
46336146336
56152156152
63712163712
65536165536
Total7262329
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
212
414
14114
2061206
2621541262154
Total5262380
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
12
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323135266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=10, MASK=None, PAYLOAD-REPEAT-LEN=262144, CHOPSIZE=None, SYNC=False
+
               BAsd7&jh23
+
003 TX OCTETS: 817f00000000000400004241736437266a6832334241736437266a6832334241736437266a6832334241736437266a683233
+
               4241736437266a68323342417364 ...
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
005 TX OCTETS: 810c48656c6c6f20576f726c6421
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
007 TX OCTETS: 880203e8
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
009 TX OCTETS: 8900
+
010 FAIL CONNECTION AFTER 1.000000 sec
+
011 RX OCTETS: 81ff0000000000040000e73b58dea57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff8
+
               8d536aeda57a2bbad01d32b6d508 ...
+
012 RX OCTETS: b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d
+
               536aeda57a2bbad01d32b6d5081a ...
+
013 RX OCTETS: f88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad0
+
               1d32b6d5081a9f945f6ff88d536a ...
+
014 RX OCTETS: 9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda5
+
               7a2bbad01d32b6d5081a9f945f6f ...
+
015 RX OCTETS: bad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f94
+
               5f6ff88d536aeda57a2bbad01d32 ...
+
016 RX OCTETS: eda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5
+
               081a9f945f6ff88d536aeda57a2b ...
+
017 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_1_6.json b/autobahn/client/hornbeam_case_7_1_6.json new file mode 100644 index 0000000..e293c46 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_1_6.json @@ -0,0 +1,224 @@ +{ + "agent": "Hornbeam", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 215, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 256K message followed by close then a ping", + "droppedByMe": false, + "duration": 723, + "expectation": "Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello World!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=215&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gtuj/GR6WG//yd/VdXUKvg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 16RmqdfxLEPZBd+4NucYuSPaxhU=\r\n\r\n", + "id": "7.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Close was processed before text message could be returned.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": {}, + "rxOctetStats": { + "184": 1, + "7241": 1, + "23168": 1, + "46336": 1, + "56152": 1, + "63712": 1, + "65536": 1 + }, + "started": "2023-08-10T21:35:51.478Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "14": 1, + "206": 1, + "262154": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323135266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 10, + "BAsd7&jh23" + ], + 1, + true, + 0, + null, + 262144, + null, + false + ], + [ + "TO", + [ + 262154, + "817f00000000000400004241736437266a6832334241736437266a6832334241736437266a6832334241736437266a6832334241736437266a68323342417364 ..." + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 7241, + "81ff0000000000040000e73b58dea57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d508 ..." + ] + ], + [ + "RO", + [ + 23168, + "b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a ..." + ] + ], + [ + "RO", + [ + 46336, + "f88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536a ..." + ] + ], + [ + "RO", + [ + 63712, + "9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6f ..." + ] + ], + [ + "RO", + [ + 65536, + "bad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32 ..." + ] + ], + [ + "RO", + [ + 56152, + "eda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2bbad01d32b6d5081a9f945f6ff88d536aeda57a2b ..." + ] + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_1.html b/autobahn/client/hornbeam_case_7_3_1.html new file mode 100644 index 0000000..fd35a9a --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_1.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.1 : Pass - 3 ms @ 2023-08-10T21:35:52.200Z

+

Case Description

Send a close frame with payload length 0 (no close code, no close reason)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=216&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 3miD7zULPjjxqY/glhW1rg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: P1udRXe8JbhoiO2zgOoslD0vNlk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
1841184
Total2190
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323136266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8800
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8880e934f721
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=6539333466373231
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_1.json b/autobahn/client/hornbeam_case_7_3_1.json new file mode 100644 index 0000000..80d35ea --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_1.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 216, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 0 (no close code, no close reason)", + "droppedByMe": true, + "duration": 3, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=216&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 3miD7zULPjjxqY/glhW1rg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: P1udRXe8JbhoiO2zgOoslD0vNlk=\r\n\r\n", + "id": "7.3.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.200Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323136266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 6, + "8880e934f721" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "e934f721" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_2.html b/autobahn/client/hornbeam_case_7_3_2.html new file mode 100644 index 0000000..d7e75b7 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_2.html @@ -0,0 +1,289 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.2 : Pass - 1 ms @ 2023-08-10T21:35:52.203Z

+

Case Description

Send a close frame with payload length 1

+

Case Expectation

Clean close with protocol error or drop TCP.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=217&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: btp/CdoVhHf6Zw1KW73P2w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PDbf28JuU/G8NHocbQsFYm7Anhw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonaThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
717
1841184
Total2191
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323137266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               a
+
003 TX OCTETS: 880161
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88816c73320e0d
+
006 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_2.json b/autobahn/client/hornbeam_case_7_3_2.json new file mode 100644 index 0000000..aaa2335 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_2.json @@ -0,0 +1,106 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 217, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 1", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error or drop TCP.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=217&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: btp/CdoVhHf6Zw1KW73P2w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PDbf28JuU/G8NHocbQsFYm7Anhw=\r\n\r\n", + "id": "7.3.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": "a", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.203Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323137266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "a" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "880161" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 7, + "88816c73320e0d" + ] + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_3.html b/autobahn/client/hornbeam_case_7_3_3.html new file mode 100644 index 0000000..b7a2304 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_3.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.3 : Pass - 2 ms @ 2023-08-10T21:35:52.206Z

+

Case Description

Send a close frame with payload length 2 (regular close with a code)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=218&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ti4PiJL/W6DJ74BwjOJgNw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0KmEL9zF45O5e01RWDADOt1iOsw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323138266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882001373e003fb
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3030313337336530
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_3.json b/autobahn/client/hornbeam_case_7_3_3.json new file mode 100644 index 0000000..21c4a01 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_3.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 218, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 2 (regular close with a code)", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=218&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ti4PiJL/W6DJ74BwjOJgNw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0KmEL9zF45O5e01RWDADOt1iOsw=\r\n\r\n", + "id": "7.3.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.206Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323138266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882001373e003fb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "001373e0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_4.html b/autobahn/client/hornbeam_case_7_3_4.html new file mode 100644 index 0000000..f5f926b --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_4.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.4 : Pass - 1 ms @ 2023-08-10T21:35:52.209Z

+

Case Description

Send a close frame with close code and close reason

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=219&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DC2o+wxWBtCerfgA+6v7kw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tr3B+Nco7NpjbaaTbYfNhv3GldE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonHello World!The close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonHello World!The close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
20120
1841184
Total2204
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
16116
2061206
Total2222
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323139266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e848656c6c6f20576f726c6421
+
003 TX OCTETS: 880e03e848656c6c6f20576f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888e7a4dd0c779a598a21621bfe72d22a2ab1e6c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=14, MASKED=True, MASK=3761346464306337
+
               0x03e848656c6c6f20576f726c6421
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_4.json b/autobahn/client/hornbeam_case_7_3_4.json new file mode 100644 index 0000000..dd88d40 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_4.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 219, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=219&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DC2o+wxWBtCerfgA+6v7kw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tr3B+Nco7NpjbaaTbYfNhv3GldE=\r\n\r\n", + "id": "7.3.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "Hello World!", + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": "Hello World!", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "20": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.209Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "16": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323139266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "0x03e848656c6c6f20576f726c6421" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "880e03e848656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 20, + "888e7a4dd0c779a598a21621bfe72d22a2ab1e6c" + ] + ], + [ + "RF", + [ + 14, + "0x03e848656c6c6f20576f726c6421" + ], + 8, + true, + 0, + true, + "7a4dd0c7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_5.html b/autobahn/client/hornbeam_case_7_3_5.html new file mode 100644 index 0000000..782d636 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_5.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.5 : Pass - 1 ms @ 2023-08-10T21:35:52.211Z

+

Case Description

Send a close frame with close code and close reason of maximum length (123)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=220&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vv8Oh30iIf2S9buQlmZt3A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1qtBnYyOtGCzVL8MFRorsJSu5pI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReason***************************************************************************************************************************The close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReason***************************************************************************************************************************The close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
1311131
1841184
Total2315
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
1271127
2061206
Total2333
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323230266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
003 TX OCTETS: 887d03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88fdff5779ccfcbf53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6
+
               d57d53e6d57d53e6d57d53e6d57d ...
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=6666353737396363
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_5.json b/autobahn/client/hornbeam_case_7_3_5.json new file mode 100644 index 0000000..b77ad24 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_5.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 220, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason of maximum length (123)", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=220&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vv8Oh30iIf2S9buQlmZt3A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1qtBnYyOtGCzVL8MFRorsJSu5pI=\r\n\r\n", + "id": "7.3.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "***************************************************************************************************************************", + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": "***************************************************************************************************************************", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "131": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.211Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323230266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "887d03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 131, + "88fdff5779ccfcbf53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d53e6d57d ..." + ] + ], + [ + "RF", + [ + 125, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + true, + "ff5779cc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_3_6.html b/autobahn/client/hornbeam_case_7_3_6.html new file mode 100644 index 0000000..501eb1a --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_6.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.3.6 : Pass - 1 ms @ 2023-08-10T21:35:52.214Z

+

Case Description

Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets

+

Case Expectation

Clean close with protocol error code or dropped TCP connection.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=221&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: sp4/07NunVN0rqKxM0uhKg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IaWoogLZUr71L960NIXDzq72dGQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReason****************************************************************************************************************************The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
1341134
1841184
Total2318
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
1301130
2061206
Total2336
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323231266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
003 TX OCTETS: 887e007e03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88fe007e7c5d83117fb5a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677
+
               a93b5677a93b5677a93b5677a93b ...
+
006 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_3_6.json b/autobahn/client/hornbeam_case_7_3_6.json new file mode 100644 index 0000000..24d795a --- /dev/null +++ b/autobahn/client/hornbeam_case_7_3_6.json @@ -0,0 +1,106 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 221, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or dropped TCP connection.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=221&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: sp4/07NunVN0rqKxM0uhKg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IaWoogLZUr71L960NIXDzq72dGQ=\r\n\r\n", + "id": "7.3.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "****************************************************************************************************************************", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "134": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.214Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "130": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323231266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "887e007e03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 134, + "88fe007e7c5d83117fb5a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b5677a93b ..." + ] + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_5_1.html b/autobahn/client/hornbeam_case_7_5_1.html new file mode 100644 index 0000000..815501d --- /dev/null +++ b/autobahn/client/hornbeam_case_7_5_1.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.5.1 : Fail - 1 ms @ 2023-08-10T21:35:52.216Z

+

Case Description

Send a close frame with invalid UTF8 payload

+

Case Expectation

Clean close with protocol error or invalid utf8 code or dropped TCP.

+ +

+ Case Outcome

The close code should have been 1002,1007 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002,1007 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=222&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: IlD9cxc4Ul3jSiv+TNBiLw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8tNGwdql1kPvC6eWez/QDASvdgQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasoncebae1bdb9cf83cebcceb5eda080656469746564The close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonÎºá½¹ÏƒÎ¼Îµí €editedThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
28128
1841184
Total2212
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
24124
2061206
Total2230
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323232266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=22, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8cebae1bdb9cf83cebcceb5eda080656469746564
+
003 TX OCTETS: 881603e8cebae1bdb9cf83cebcceb5eda080656469746564
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8896d59211cdd67adf77342fa802565cad03607fb14db0f678b9b0f6
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=22, MASKED=True, MASK=6435393231316364
+
               0x03e8cebae1bdb9cf83cebcceb5eda080656469746564
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_5_1.json b/autobahn/client/hornbeam_case_7_5_1.json new file mode 100644 index 0000000..e4aab42 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_5_1.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 222, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with invalid UTF8 payload", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error or invalid utf8 code or dropped TCP.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002, + 1007 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=222&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: IlD9cxc4Ul3jSiv+TNBiLw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8tNGwdql1kPvC6eWez/QDASvdgQ=\r\n\r\n", + "id": "7.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "cebae1bdb9cf83cebcceb5eda080656469746564", + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": "\u03ba\u1f79\u03c3\u03bc\u03b5\ud800edited", + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002,1007 or empty", + "resultClose": "The close code should have been 1002,1007 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "28": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.216Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "24": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323232266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 22, + "0x03e8cebae1bdb9cf83cebcceb5eda080656469746564" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 24, + "881603e8cebae1bdb9cf83cebcceb5eda080656469746564" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 28, + "8896d59211cdd67adf77342fa802565cad03607fb14db0f678b9b0f6" + ] + ], + [ + "RF", + [ + 22, + "0x03e8cebae1bdb9cf83cebcceb5eda080656469746564" + ], + 8, + true, + 0, + true, + "d59211cd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_1.html b/autobahn/client/hornbeam_case_7_7_1.html new file mode 100644 index 0000000..45fa30a --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_1.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.1 : Pass - 1 ms @ 2023-08-10T21:35:52.219Z

+

Case Description

Send close with valid close code 1000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=223&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: pN6TZlVB8urlmkOTDDpkqg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2YE69rWLbtJm79FxS+KogM+uwpg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323233266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88825f7504415c9d
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3566373530343431
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_1.json b/autobahn/client/hornbeam_case_7_7_1.json new file mode 100644 index 0000000..5adb285 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_1.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 223, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=223&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: pN6TZlVB8urlmkOTDDpkqg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2YE69rWLbtJm79FxS+KogM+uwpg=\r\n\r\n", + "id": "7.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.219Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323233266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88825f7504415c9d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5f750441" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_10.html b/autobahn/client/hornbeam_case_7_7_10.html new file mode 100644 index 0000000..1ff2985 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_10.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.10 : Pass - 1 ms @ 2023-08-10T21:35:52.251Z

+

Case Description

Send close with valid close code 3000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=232&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: vU56We8MQhtjg8SoWXddJw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iYWTmTimPWXkfMesnDlFdbDLGwM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode3000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode3000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323332266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0bb8
+
003 TX OCTETS: 88020bb8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882930c9d3e98b4
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3933306339643365
+
               0x0bb8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_10.json b/autobahn/client/hornbeam_case_7_7_10.json new file mode 100644 index 0000000..2735e5b --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_10.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 232, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 3000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 3000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=232&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: vU56We8MQhtjg8SoWXddJw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iYWTmTimPWXkfMesnDlFdbDLGwM=\r\n\r\n", + "id": "7.7.10", + "isServer": true, + "localCloseCode": 3000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 3000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.251Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323332266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0bb8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020bb8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882930c9d3e98b4" + ] + ], + [ + "RF", + [ + 2, + "0x0bb8" + ], + 8, + true, + 0, + true, + "930c9d3e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_11.html b/autobahn/client/hornbeam_case_7_7_11.html new file mode 100644 index 0000000..a9fadfe --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_11.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.11 : Pass - 1 ms @ 2023-08-10T21:35:52.256Z

+

Case Description

Send close with valid close code 3999

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=233&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Ollg39ZbYtuTf+4YQ8ORVg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cVefj02DxSJI9ZGplceQFtOH1KA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode3999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode3999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
717
1841184
Total3192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323333266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0f9f
+
003 TX OCTETS: 88020f9f
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88
+
006 RX OCTETS: 82be22d365b1bd
+
007 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6265323264333635
+
               0x0f9f
+
008 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_11.json b/autobahn/client/hornbeam_case_7_7_11.json new file mode 100644 index 0000000..71c7322 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_11.json @@ -0,0 +1,129 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 233, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 3999", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 3999 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=233&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Ollg39ZbYtuTf+4YQ8ORVg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cVefj02DxSJI9ZGplceQFtOH1KA=\r\n\r\n", + "id": "7.7.11", + "isServer": true, + "localCloseCode": 3999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 3999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.256Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323333266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0f9f" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020f9f" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82be22d365b1bd" + ] + ], + [ + "RF", + [ + 2, + "0x0f9f" + ], + 8, + true, + 0, + true, + "be22d365" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_12.html b/autobahn/client/hornbeam_case_7_7_12.html new file mode 100644 index 0000000..2117d57 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_12.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.12 : Pass - 1 ms @ 2023-08-10T21:35:52.259Z

+

Case Description

Send close with valid close code 4000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=234&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: P4S3Ar2V0sWtbOp+7W39gg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bqm08j+iCCkdT+IN7riozvI1SVw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode4000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode4000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323334266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0fa0
+
003 TX OCTETS: 88020fa0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882a53c25d8aa9c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6135336332356438
+
               0x0fa0
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_12.json b/autobahn/client/hornbeam_case_7_7_12.json new file mode 100644 index 0000000..1f521fd --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_12.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 234, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 4000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 4000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=234&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: P4S3Ar2V0sWtbOp+7W39gg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bqm08j+iCCkdT+IN7riozvI1SVw=\r\n\r\n", + "id": "7.7.12", + "isServer": true, + "localCloseCode": 4000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 4000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.259Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323334266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0fa0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020fa0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882a53c25d8aa9c" + ] + ], + [ + "RF", + [ + 2, + "0x0fa0" + ], + 8, + true, + 0, + true, + "a53c25d8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_13.html b/autobahn/client/hornbeam_case_7_7_13.html new file mode 100644 index 0000000..35e9153 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_13.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.13 : Pass - 2 ms @ 2023-08-10T21:35:52.261Z

+

Case Description

Send close with valid close code 4999

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=235&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: r0445SaztG/rl1MJPB+BQQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LXP1oqjRqwwKG/yze7kF1k3MaMs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode4999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode4999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323335266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x1387
+
003 TX OCTETS: 88021387
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882138eaa9d0009
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3133386561613964
+
               0x1387
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_13.json b/autobahn/client/hornbeam_case_7_7_13.json new file mode 100644 index 0000000..eacb38f --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_13.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 235, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 4999", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 4999 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=235&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: r0445SaztG/rl1MJPB+BQQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LXP1oqjRqwwKG/yze7kF1k3MaMs=\r\n\r\n", + "id": "7.7.13", + "isServer": true, + "localCloseCode": 4999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 4999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.261Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323335266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x1387" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88021387" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882138eaa9d0009" + ] + ], + [ + "RF", + [ + 2, + "0x1387" + ], + 8, + true, + 0, + true, + "138eaa9d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_2.html b/autobahn/client/hornbeam_case_7_7_2.html new file mode 100644 index 0000000..5866cc1 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_2.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.2 : Pass - 2 ms @ 2023-08-10T21:35:52.225Z

+

Case Description

Send close with valid close code 1001

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=224&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ptIlNVgdzdOh85h2ZiKwdQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: GPkq2d/hw2C8P8aI1M1CsXGX8Ac=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323234266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9
+
003 TX OCTETS: 880203e9
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888201066a6e02ef
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3031303636613665
+
               0x03e9
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_2.json b/autobahn/client/hornbeam_case_7_7_2.json new file mode 100644 index 0000000..b138bc5 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_2.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 224, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1001", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1001 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=224&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ptIlNVgdzdOh85h2ZiKwdQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: GPkq2d/hw2C8P8aI1M1CsXGX8Ac=\r\n\r\n", + "id": "7.7.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1001, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.225Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323234266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e9" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e9" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888201066a6e02ef" + ] + ], + [ + "RF", + [ + 2, + "0x03e9" + ], + 8, + true, + 0, + true, + "01066a6e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_3.html b/autobahn/client/hornbeam_case_7_7_3.html new file mode 100644 index 0000000..12502ca --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_3.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.3 : Pass - 1 ms @ 2023-08-10T21:35:52.228Z

+

Case Description

Send close with valid close code 1002

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=225&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tQgmUlUsYQi2A4TzMTUrzQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: L4XbaBr82wbPvJ2JdmSamszou18=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1002The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323235266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ea
+
003 TX OCTETS: 880203ea
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888277182bd874f2
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3737313832626438
+
               0x03ea
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_3.json b/autobahn/client/hornbeam_case_7_7_3.json new file mode 100644 index 0000000..5eb5b5f --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_3.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 225, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1002", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1002 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=225&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tQgmUlUsYQi2A4TzMTUrzQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: L4XbaBr82wbPvJ2JdmSamszou18=\r\n\r\n", + "id": "7.7.3", + "isServer": true, + "localCloseCode": 1002, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.228Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323235266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ea" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ea" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888277182bd874f2" + ] + ], + [ + "RF", + [ + 2, + "0x03ea" + ], + 8, + true, + 0, + true, + "77182bd8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_4.html b/autobahn/client/hornbeam_case_7_7_4.html new file mode 100644 index 0000000..d23ab76 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_4.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.4 : Pass - 4 ms @ 2023-08-10T21:35:52.231Z

+

Case Description

Send close with valid close code 1003

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=226&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 5Kaiiwy7HxVAPmneHdTHZw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Z2iF2bSfqxdlPNlOEBeW3a2+B9k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1003The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1003The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323236266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03eb
+
003 TX OCTETS: 880203eb
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882b79e84e8b475
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6237396538346538
+
               0x03eb
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_4.json b/autobahn/client/hornbeam_case_7_7_4.json new file mode 100644 index 0000000..d547b75 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_4.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 226, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1003", + "droppedByMe": true, + "duration": 4, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1003 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=226&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 5Kaiiwy7HxVAPmneHdTHZw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Z2iF2bSfqxdlPNlOEBeW3a2+B9k=\r\n\r\n", + "id": "7.7.4", + "isServer": true, + "localCloseCode": 1003, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1003, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.231Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323236266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03eb" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203eb" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882b79e84e8b475" + ] + ], + [ + "RF", + [ + 2, + "0x03eb" + ], + 8, + true, + 0, + true, + "b79e84e8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_5.html b/autobahn/client/hornbeam_case_7_7_5.html new file mode 100644 index 0000000..6eb12db --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_5.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.5 : Pass - 2 ms @ 2023-08-10T21:35:52.236Z

+

Case Description

Send close with valid close code 1007

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=227&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: 9uJIu3zcHAVsvQoU8fZr0Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CQDfEfaaEifXlzvH91FPVixSWCQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1007The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323237266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ef
+
003 TX OCTETS: 880203ef
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888297bbf5f59454
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3937626266356635
+
               0x03ef
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_5.json b/autobahn/client/hornbeam_case_7_7_5.json new file mode 100644 index 0000000..bf8e972 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_5.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 227, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1007", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1007 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=227&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: 9uJIu3zcHAVsvQoU8fZr0Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CQDfEfaaEifXlzvH91FPVixSWCQ=\r\n\r\n", + "id": "7.7.5", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1007, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.236Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323237266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ef" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ef" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888297bbf5f59454" + ] + ], + [ + "RF", + [ + 2, + "0x03ef" + ], + 8, + true, + 0, + true, + "97bbf5f5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_6.html b/autobahn/client/hornbeam_case_7_7_6.html new file mode 100644 index 0000000..0be1a51 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_6.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.6 : Pass - 1 ms @ 2023-08-10T21:35:52.239Z

+

Case Description

Send close with valid close code 1008

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=228&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Vk0tec6f0MkAiCuB9yHInQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2x3TYihx9zSc14KN9m69PApyQUY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1008The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1008The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
717
1841184
Total3192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323238266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f0
+
003 TX OCTETS: 880203f0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88
+
006 RX OCTETS: 82b49d3d1eb76d
+
007 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6234396433643165
+
               0x03f0
+
008 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_6.json b/autobahn/client/hornbeam_case_7_7_6.json new file mode 100644 index 0000000..ef17ef5 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_6.json @@ -0,0 +1,129 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 228, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1008", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1008 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=228&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Vk0tec6f0MkAiCuB9yHInQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2x3TYihx9zSc14KN9m69PApyQUY=\r\n\r\n", + "id": "7.7.6", + "isServer": true, + "localCloseCode": 1008, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1008, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.239Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323238266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82b49d3d1eb76d" + ] + ], + [ + "RF", + [ + 2, + "0x03f0" + ], + 8, + true, + 0, + true, + "b49d3d1e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_7.html b/autobahn/client/hornbeam_case_7_7_7.html new file mode 100644 index 0000000..3b6af26 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_7.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.7 : Pass - 1 ms @ 2023-08-10T21:35:52.242Z

+

Case Description

Send close with valid close code 1009

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=229&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: afcE4+qLhaRTYJ8nVXDojw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: MvVidRqZiyDHvWmuapmAQqDgD8Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1009The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1009The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323239266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f1
+
003 TX OCTETS: 880203f1
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888225b6e8c92647
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3235623665386339
+
               0x03f1
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_7.json b/autobahn/client/hornbeam_case_7_7_7.json new file mode 100644 index 0000000..78dd335 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_7.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 229, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1009", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1009 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=229&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: afcE4+qLhaRTYJ8nVXDojw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: MvVidRqZiyDHvWmuapmAQqDgD8Y=\r\n\r\n", + "id": "7.7.7", + "isServer": true, + "localCloseCode": 1009, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1009, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.242Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323239266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f1" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f1" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888225b6e8c92647" + ] + ], + [ + "RF", + [ + 2, + "0x03f1" + ], + 8, + true, + 0, + true, + "25b6e8c9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_8.html b/autobahn/client/hornbeam_case_7_7_8.html new file mode 100644 index 0000000..50f22c1 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_8.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.8 : Pass - 3 ms @ 2023-08-10T21:35:52.245Z

+

Case Description

Send close with valid close code 1010

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=230&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: rFsW1qzI+m/XGH5Xj80Oww==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3LgMx+xgMmzfcqlC8oUqxDhCpVc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1010The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1010The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323330266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f2
+
003 TX OCTETS: 880203f2
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882afaddd91ac5f
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6166616464643931
+
               0x03f2
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_8.json b/autobahn/client/hornbeam_case_7_7_8.json new file mode 100644 index 0000000..7dabb8c --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_8.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 230, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1010", + "droppedByMe": true, + "duration": 3, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1010 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=230&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: rFsW1qzI+m/XGH5Xj80Oww==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3LgMx+xgMmzfcqlC8oUqxDhCpVc=\r\n\r\n", + "id": "7.7.8", + "isServer": true, + "localCloseCode": 1010, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1010, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.245Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323330266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f2" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f2" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882afaddd91ac5f" + ] + ], + [ + "RF", + [ + 2, + "0x03f2" + ], + 8, + true, + 0, + true, + "afaddd91" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_7_9.html b/autobahn/client/hornbeam_case_7_7_9.html new file mode 100644 index 0000000..fce71b3 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_9.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.7.9 : Pass - 1 ms @ 2023-08-10T21:35:52.249Z

+

Case Description

Send close with valid close code 1011

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=231&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: gq+x4nK95w4sSxdlfYyHJQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0Oa51dwBoGimjfroOp1fd8vismQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1011The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1011The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323331266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f3
+
003 TX OCTETS: 880203f3
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882468ffe43457c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3436386666653433
+
               0x03f3
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_7_9.json b/autobahn/client/hornbeam_case_7_7_9.json new file mode 100644 index 0000000..6a6ef36 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_7_9.json @@ -0,0 +1,121 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 231, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1011", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1011 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=231&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: gq+x4nK95w4sSxdlfYyHJQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0Oa51dwBoGimjfroOp1fd8vismQ=\r\n\r\n", + "id": "7.7.9", + "isServer": true, + "localCloseCode": 1011, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1011, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.249Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323331266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f3" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f3" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882468ffe43457c" + ] + ], + [ + "RF", + [ + 2, + "0x03f3" + ], + 8, + true, + 0, + true, + "468ffe43" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_1.html b/autobahn/client/hornbeam_case_7_9_1.html new file mode 100644 index 0000000..3d9c8bf --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_1.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.1 : Fail - 1 ms @ 2023-08-10T21:35:52.264Z

+

Case Description

Send close with invalid close code 0

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=236&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: +D2oX+2yqNXrvi/M3Leoxw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: R1Hz7EewaAMviurhyrdcrcuN4NE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode0The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode0The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323336266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 88020000
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88821a12502f1a12
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3161313235303266
+
               
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_1.json b/autobahn/client/hornbeam_case_7_9_1.json new file mode 100644 index 0000000..f214f38 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_1.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 236, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 0", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=236&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: +D2oX+2yqNXrvi/M3Leoxw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: R1Hz7EewaAMviurhyrdcrcuN4NE=\r\n\r\n", + "id": "7.9.1", + "isServer": true, + "localCloseCode": 0, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 0, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.264Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323336266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0000\u0000" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020000" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88821a12502f1a12" + ] + ], + [ + "RF", + [ + 2, + "\u0000\u0000" + ], + 8, + true, + 0, + true, + "1a12502f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_2.html b/autobahn/client/hornbeam_case_7_9_2.html new file mode 100644 index 0000000..e5da9b3 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_2.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.2 : Fail - 2 ms @ 2023-08-10T21:35:52.268Z

+

Case Description

Send close with invalid close code 999

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=237&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: hVhHFwcPiT0/MbjMQPEX0A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EoX8Bf2d9xpHX74cig26Gu67FNk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323337266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e7
+
003 TX OCTETS: 880203e7
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882deced62ddd29
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6465636564363264
+
               0x03e7
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_2.json b/autobahn/client/hornbeam_case_7_9_2.json new file mode 100644 index 0000000..6ed2fa8 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_2.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 237, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 999", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=237&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: hVhHFwcPiT0/MbjMQPEX0A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EoX8Bf2d9xpHX74cig26Gu67FNk=\r\n\r\n", + "id": "7.9.2", + "isServer": true, + "localCloseCode": 999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.268Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323337266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e7" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e7" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882deced62ddd29" + ] + ], + [ + "RF", + [ + 2, + "0x03e7" + ], + 8, + true, + 0, + true, + "deced62d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_3.html b/autobahn/client/hornbeam_case_7_9_3.html new file mode 100644 index 0000000..88f84cd --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_3.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.3 : Fail - 2 ms @ 2023-08-10T21:35:52.270Z

+

Case Description

Send close with invalid close code 1004

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=238&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: FGh6nZ7tOdna0+k4ogGL0Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VKLedpOrEJcz33brT4+C1FssjIg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1004The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1004The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323338266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ec
+
003 TX OCTETS: 880203ec
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88823183cf0c326f
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3331383363663063
+
               0x03ec
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_3.json b/autobahn/client/hornbeam_case_7_9_3.json new file mode 100644 index 0000000..c2940c4 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_3.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 238, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1004", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=238&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: FGh6nZ7tOdna0+k4ogGL0Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VKLedpOrEJcz33brT4+C1FssjIg=\r\n\r\n", + "id": "7.9.3", + "isServer": true, + "localCloseCode": 1004, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1004, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.270Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323338266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ec" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ec" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88823183cf0c326f" + ] + ], + [ + "RF", + [ + 2, + "0x03ec" + ], + 8, + true, + 0, + true, + "3183cf0c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_4.html b/autobahn/client/hornbeam_case_7_9_4.html new file mode 100644 index 0000000..17efe9d --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_4.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.4 : Fail - 2 ms @ 2023-08-10T21:35:52.273Z

+

Case Description

Send close with invalid close code 1005

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=239&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: c+453PA81+vU+cY3UXUSvw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: a0Swc/bpNvIgkjDCMm6zjbGOCss=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1005The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1005The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323339266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ed
+
003 TX OCTETS: 880203ed
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882edf7cbb9ee1a
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6564663763626239
+
               0x03ed
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_4.json b/autobahn/client/hornbeam_case_7_9_4.json new file mode 100644 index 0000000..6ac348c --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_4.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 239, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1005", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=239&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: c+453PA81+vU+cY3UXUSvw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: a0Swc/bpNvIgkjDCMm6zjbGOCss=\r\n\r\n", + "id": "7.9.4", + "isServer": true, + "localCloseCode": 1005, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1005, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.273Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323339266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ed" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ed" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882edf7cbb9ee1a" + ] + ], + [ + "RF", + [ + 2, + "0x03ed" + ], + 8, + true, + 0, + true, + "edf7cbb9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_5.html b/autobahn/client/hornbeam_case_7_9_5.html new file mode 100644 index 0000000..9a1be44 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_5.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.5 : Fail - 6 ms @ 2023-08-10T21:35:52.276Z

+

Case Description

Send close with invalid close code 1006

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=240&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: utRVauK3BrKpmmvMvjmr6g==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vH7Gj2lj04JSmv1lUeyNDdxSR2M=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1006The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1006The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323430266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ee
+
003 TX OCTETS: 880203ee
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882bbfc15f8b812
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6262666331356638
+
               0x03ee
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_5.json b/autobahn/client/hornbeam_case_7_9_5.json new file mode 100644 index 0000000..0ff7a31 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_5.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 240, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1006", + "droppedByMe": true, + "duration": 6, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=240&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: utRVauK3BrKpmmvMvjmr6g==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vH7Gj2lj04JSmv1lUeyNDdxSR2M=\r\n\r\n", + "id": "7.9.5", + "isServer": true, + "localCloseCode": 1006, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1006, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.276Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323430266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ee" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ee" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882bbfc15f8b812" + ] + ], + [ + "RF", + [ + 2, + "0x03ee" + ], + 8, + true, + 0, + true, + "bbfc15f8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_6.html b/autobahn/client/hornbeam_case_7_9_6.html new file mode 100644 index 0000000..4c9724d --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_6.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.6 : Fail - 3 ms @ 2023-08-10T21:35:52.283Z

+

Case Description

Send close with invalid close code 1016

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=241&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ytBC/QxiJiGXuoqms42NDA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: w7uC5zwyDoDuOnpZ7otZkBp9FMk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1016The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1016The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323431266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f8
+
003 TX OCTETS: 880203f8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88824b096f0d48f1
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462303936663064
+
               0x03f8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_6.json b/autobahn/client/hornbeam_case_7_9_6.json new file mode 100644 index 0000000..0c6a707 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_6.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 241, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1016", + "droppedByMe": true, + "duration": 3, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=241&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ytBC/QxiJiGXuoqms42NDA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: w7uC5zwyDoDuOnpZ7otZkBp9FMk=\r\n\r\n", + "id": "7.9.6", + "isServer": true, + "localCloseCode": 1016, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1016, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.283Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323431266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88824b096f0d48f1" + ] + ], + [ + "RF", + [ + 2, + "0x03f8" + ], + 8, + true, + 0, + true, + "4b096f0d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_7.html b/autobahn/client/hornbeam_case_7_9_7.html new file mode 100644 index 0000000..dcbb933 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_7.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.7 : Fail - 1 ms @ 2023-08-10T21:35:52.287Z

+

Case Description

Send close with invalid close code 1100

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=242&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: jWdySa6MXmjnguqRDjjf8Q==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TfsRQWfZ7dL0FJ1elQ36dIPGy1s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1100The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1100The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323432266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               L
+
003 TX OCTETS: 8802044c
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88829be139c89fad
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3962653133396338
+
               L
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_7.json b/autobahn/client/hornbeam_case_7_9_7.json new file mode 100644 index 0000000..13b4b84 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_7.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 242, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1100", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=242&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: jWdySa6MXmjnguqRDjjf8Q==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TfsRQWfZ7dL0FJ1elQ36dIPGy1s=\r\n\r\n", + "id": "7.9.7", + "isServer": true, + "localCloseCode": 1100, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1100, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.287Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323432266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0004L" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8802044c" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88829be139c89fad" + ] + ], + [ + "RF", + [ + 2, + "\u0004L" + ], + 8, + true, + 0, + true, + "9be139c8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_8.html b/autobahn/client/hornbeam_case_7_9_8.html new file mode 100644 index 0000000..a17a6d3 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_8.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.8 : Fail - 1 ms @ 2023-08-10T21:35:52.289Z

+

Case Description

Send close with invalid close code 2000

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=243&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: B4+zYKGzFw7VfNm9fGeA9A==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PbZYJLCUgpPWQzQDv1wx8ot8sP4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode2000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode2000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
1841184
Total2192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323433266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x07d0
+
003 TX OCTETS: 880207d0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882a4b17c3fa361
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6134623137633366
+
               0x07d0
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_8.json b/autobahn/client/hornbeam_case_7_9_8.json new file mode 100644 index 0000000..91f8b66 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_8.json @@ -0,0 +1,120 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 243, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 2000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=243&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: B4+zYKGzFw7VfNm9fGeA9A==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PbZYJLCUgpPWQzQDv1wx8ot8sP4=\r\n\r\n", + "id": "7.9.8", + "isServer": true, + "localCloseCode": 2000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 2000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.289Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323433266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x07d0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880207d0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882a4b17c3fa361" + ] + ], + [ + "RF", + [ + 2, + "0x07d0" + ], + 8, + true, + 0, + true, + "a4b17c3f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_7_9_9.html b/autobahn/client/hornbeam_case_7_9_9.html new file mode 100644 index 0000000..0b5d2e8 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_9.html @@ -0,0 +1,294 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 7.9.9 : Fail - 2 ms @ 2023-08-10T21:35:52.292Z

+

Case Description

Send close with invalid close code 2999

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

The close code should have been 1002 or empty

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

The close code should have been 1002 or empty (WRONG CODE)

+

+

Opening Handshake

+
GET /runCase?case=244&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: Eun5uLfZenf74rP3ziRCXQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HFyrQ32G5yAoSaoOeluKY37RPxY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode2999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode2999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
111
717
1841184
Total3192
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323434266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0bb7
+
003 TX OCTETS: 88020bb7
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88
+
006 RX OCTETS: 8238b747a43300
+
007 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3338623734376134
+
               0x0bb7
+
008 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_7_9_9.json b/autobahn/client/hornbeam_case_7_9_9.json new file mode 100644 index 0000000..8c6fb90 --- /dev/null +++ b/autobahn/client/hornbeam_case_7_9_9.json @@ -0,0 +1,128 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "case": 244, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 2999", + "droppedByMe": true, + "duration": 2, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=244&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: Eun5uLfZenf74rP3ziRCXQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HFyrQ32G5yAoSaoOeluKY37RPxY=\r\n\r\n", + "id": "7.9.9", + "isServer": true, + "localCloseCode": 2999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 2999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "The close code should have been 1002 or empty", + "resultClose": "The close code should have been 1002 or empty", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "7": 1, + "184": 1 + }, + "started": "2023-08-10T21:35:52.292Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323434266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0bb7" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020bb7" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "8238b747a43300" + ] + ], + [ + "RF", + [ + 2, + "0x0bb7" + ], + 8, + true, + 0, + true, + "38b747a4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_1.html b/autobahn/client/hornbeam_case_9_1_1.html new file mode 100644 index 0000000..aa46066 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_1.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.1 : Pass - 176 ms @ 2023-08-10T21:35:52.307Z

+

Case Description

Send text message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 65536.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=247&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: tRmSYBLFipYzQ9+cxt0rWQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dB+NPL+f77D+Wso75mow89zAFKE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
111
818
1841184
13032113032
23557123557
28960128960
Total665742
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323437266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882c6c3e198c52b
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6336633365313938
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_1.json b/autobahn/client/hornbeam_case_9_1_1.json new file mode 100644 index 0000000..f27fd22 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_1.json @@ -0,0 +1,125 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 247, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 64 * 2**10 (64k).", + "droppedByMe": true, + "duration": 176, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=247&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: tRmSYBLFipYzQ9+cxt0rWQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dB+NPL+f77D+Wso75mow89zAFKE=\r\n\r\n", + "id": "9.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 65536.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "184": 1, + "13032": 1, + "23557": 1, + "28960": 1 + }, + "started": "2023-08-10T21:35:52.307Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323437266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c6c3e198c52b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c6c3e198" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_2.html b/autobahn/client/hornbeam_case_9_1_2.html new file mode 100644 index 0000000..a87c264 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.2 : Pass - 707 ms @ 2023-08-10T21:35:52.484Z

+

Case Description

Send text message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 262144.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=248&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: WFB1izKDbk/8lZzMt2JAVQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dooj1nql//Gcv81581tTuuoy8OY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + +
Chop SizeCountOctets
122
717
1841184
13032113032
23557123557
28960128960
655363196608
Total10262350
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
2621541262154
Total3262364
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323438266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88
+
006 RX OCTETS: 82e8200da1ebc8
+
007 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6538323030646131
+
               0x03e8
+
008 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_2.json b/autobahn/client/hornbeam_case_9_1_2.json new file mode 100644 index 0000000..4ff8618 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_2.json @@ -0,0 +1,133 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 248, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 256 * 2**10 (256k).", + "droppedByMe": true, + "duration": 707, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=248&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: WFB1izKDbk/8lZzMt2JAVQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dooj1nql//Gcv81581tTuuoy8OY=\r\n\r\n", + "id": "9.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 262144.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 2, + "7": 1, + "184": 1, + "13032": 1, + "23557": 1, + "28960": 1, + "65536": 3 + }, + "started": "2023-08-10T21:35:52.484Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "262154": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323438266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 1, + "88" + ] + ], + [ + "RO", + [ + 7, + "82e8200da1ebc8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e8200da1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_3.html b/autobahn/client/hornbeam_case_9_1_3.html new file mode 100644 index 0000000..5e39fc3 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_3.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.3 : Pass - 3047 ms @ 2023-08-10T21:35:53.204Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=249&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: KVUdPVQ5t/Sh5egU5rCZuQ==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NddYheD33bO/lticyPU4DP7Mo8A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + +
Chop SizeCountOctets
111
818
13113
1841184
13032113032
24080124080
28424128424
6553615983040
Total221048782
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
104858611048586
Total31048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323439266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882215844db22b0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3231353834346462
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_3.json b/autobahn/client/hornbeam_case_9_1_3.json new file mode 100644 index 0000000..fc1cd11 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_3.json @@ -0,0 +1,127 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 249, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M).", + "droppedByMe": true, + "duration": 3047, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=249&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: KVUdPVQ5t/Sh5egU5rCZuQ==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NddYheD33bO/lticyPU4DP7Mo8A=\r\n\r\n", + "id": "9.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "13": 1, + "184": 1, + "13032": 1, + "24080": 1, + "28424": 1, + "65536": 15 + }, + "started": "2023-08-10T21:35:53.204Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "1048586": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323439266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882215844db22b0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "215844db" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_4.html b/autobahn/client/hornbeam_case_9_1_4.html new file mode 100644 index 0000000..a79caa4 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_4.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.4 : Pass - 11433 ms @ 2023-08-10T21:35:56.257Z

+

Case Description

Send text message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=250&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: DNpwCTqqmppIAYnV5Cz5RA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pELuIG9xmbGIytpBIFzsuhPhxxs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + +
Chop SizeCountOctets
111
818
1841184
13032113032
24093124093
28424128424
65536634128768
Total694194510
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
419431414194314
Total34194524
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323530266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888294bdea6d9755
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3934626465613664
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_4.json b/autobahn/client/hornbeam_case_9_1_4.json new file mode 100644 index 0000000..94c4470 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_4.json @@ -0,0 +1,126 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 250, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 4 * 2**20 (4M).", + "droppedByMe": true, + "duration": 11433, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=250&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: DNpwCTqqmppIAYnV5Cz5RA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pELuIG9xmbGIytpBIFzsuhPhxxs=\r\n\r\n", + "id": "9.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "184": 1, + "13032": 1, + "24093": 1, + "28424": 1, + "65536": 63 + }, + "started": "2023-08-10T21:35:56.257Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323530266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888294bdea6d9755" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "94bdea6d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_5.html b/autobahn/client/hornbeam_case_9_1_5.html new file mode 100644 index 0000000..084f058 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_5.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.5 : Pass - 23670 ms @ 2023-08-10T21:36:07.706Z

+

Case Description

Send text message message with payload of length 8 * 2**20 (8M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 8388608.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=251&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: aLEM7b4edfVEo9XgzI3cmg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +iq5dJrzZM+AvFLTPYThL0IjdIo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + +
Chop SizeCountOctets
111
818
1841184
13032113032
23557123557
28960128960
655361278323072
Total1338388814
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
838861818388618
Total38388828
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323531266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888230ad0e953345
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3330616430653935
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_5.json b/autobahn/client/hornbeam_case_9_1_5.json new file mode 100644 index 0000000..5be6cdd --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_5.json @@ -0,0 +1,126 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 251, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 8 * 2**20 (8M).", + "droppedByMe": true, + "duration": 23670, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=251&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: aLEM7b4edfVEo9XgzI3cmg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +iq5dJrzZM+AvFLTPYThL0IjdIo=\r\n\r\n", + "id": "9.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 8388608.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "1": 1, + "8": 1, + "184": 1, + "13032": 1, + "23557": 1, + "28960": 1, + "65536": 127 + }, + "started": "2023-08-10T21:36:07.706Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "8388618": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323531266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888230ad0e953345" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "30ad0e95" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_1_6.html b/autobahn/client/hornbeam_case_9_1_6.html new file mode 100644 index 0000000..ad9226b --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_6.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.1.6 : Pass - 49073 ms @ 2023-08-10T21:36:31.378Z

+

Case Description

Send text message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 16777216.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=252&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: f4Hl3EC4A2Fs5EozEcoP2w==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LDjSlPLK6eUAhlXTzS4zLSJKHiw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
414
818
10110
1841184
6553625616777216
Total26016777422
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
16777226116777226
Total316777436
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323532266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88821129848212c1
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3131323938343832
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_1_6.json b/autobahn/client/hornbeam_case_9_1_6.json new file mode 100644 index 0000000..6b37f56 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_1_6.json @@ -0,0 +1,124 @@ +{ + "agent": "Hornbeam", + "behavior": "OK", + "behaviorClose": "OK", + "case": 252, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 16 * 2**20 (16M).", + "droppedByMe": true, + "duration": 49073, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=252&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: f4Hl3EC4A2Fs5EozEcoP2w==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LDjSlPLK6eUAhlXTzS4zLSJKHiw=\r\n\r\n", + "id": "9.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 16777216.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "4": 1, + "8": 1, + "10": 1, + "184": 1, + "65536": 256 + }, + "started": "2023-08-10T21:36:31.378Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "16777226": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323532266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821129848212c1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "11298482" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_2_1.html b/autobahn/client/hornbeam_case_9_2_1.html new file mode 100644 index 0000000..68439e6 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_1.html @@ -0,0 +1,289 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.2.1 : Fail - 227 ms @ 2023-08-10T21:37:20.451Z

+

Case Description

Send binary message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Did not receive message within 10 seconds.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (UNCLEAN)

+

+

Opening Handshake

+
GET /runCase?case=253&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: ByRhvprmhCytfp81XT7JyA==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DcTbL+yYSzIVVW3SuP3gQTpQQt0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonencountered invalid UTF-8 while processing text message at payload octet index 1The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
1841184
724117241
17376117376
Total324801
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
84184
2061206
65546165546
Total365836
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+

Wire log after handshake disabled!

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323533266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_2_1.json b/autobahn/client/hornbeam_case_9_2_1.json new file mode 100644 index 0000000..9611b60 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_1.json @@ -0,0 +1,78 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "case": 253, + "closedByMe": true, + "createStats": true, + "createWirelog": false, + "description": "Send binary message message with payload of length 64 * 2**10 (64k).", + "droppedByMe": true, + "duration": 227, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=253&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: ByRhvprmhCytfp81XT7JyA==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DcTbL+yYSzIVVW3SuP3gQTpQQt0=\r\n\r\n", + "id": "9.2.1", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": "encountered invalid UTF-8 while processing text message at payload octet index 1", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Did not receive message within 10 seconds.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": {}, + "rxOctetStats": { + "184": 1, + "7241": 1, + "17376": 1 + }, + "started": "2023-08-10T21:37:20.451Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "84": 1, + "206": 1, + "65546": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323533266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_2_2.html b/autobahn/client/hornbeam_case_9_2_2.html new file mode 100644 index 0000000..e2d386c --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_2.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.2.2 : Fail - 775 ms @ 2023-08-10T21:37:20.688Z

+

Case Description

Send binary message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Did not receive message within 10 seconds.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (UNCLEAN)

+

+

Opening Handshake

+
GET /runCase?case=254&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: QbCcIyrW/fw9HXHTwNDyiw==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iMN7Elfp8E3xL23Ve9UK5cM9ThM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonencountered invalid UTF-8 while processing text message at payload octet index 1The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
1841184
13032113032
28960128960
Total442177
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
84184
2061206
2621541262154
Total3262444
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+

Wire log after handshake disabled!

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323534266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_2_2.json b/autobahn/client/hornbeam_case_9_2_2.json new file mode 100644 index 0000000..331c9a6 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_2.json @@ -0,0 +1,79 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "case": 254, + "closedByMe": true, + "createStats": true, + "createWirelog": false, + "description": "Send binary message message with payload of length 256 * 2**10 (256k).", + "droppedByMe": true, + "duration": 775, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=254&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: QbCcIyrW/fw9HXHTwNDyiw==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iMN7Elfp8E3xL23Ve9UK5cM9ThM=\r\n\r\n", + "id": "9.2.2", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": "encountered invalid UTF-8 while processing text message at payload octet index 1", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Did not receive message within 10 seconds.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": {}, + "rxOctetStats": { + "1": 1, + "184": 1, + "13032": 1, + "28960": 1 + }, + "started": "2023-08-10T21:37:20.688Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "84": 1, + "206": 1, + "262154": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323534266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_2_3.html b/autobahn/client/hornbeam_case_9_2_3.html new file mode 100644 index 0000000..82819c0 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_3.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.2.3 : Fail - 2790 ms @ 2023-08-10T21:37:21.465Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Did not receive message within 10 seconds.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (UNCLEAN)

+

+

Opening Handshake

+
GET /runCase?case=255&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: duDHcBrN7+VXiLgAkDBfrg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 28njz+3cKL+/2YqCYZ8FIeMVU+w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeTrueTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonencountered invalid UTF-8 while processing text message at payload octet index 1The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
111
1841184
13032113032
28424128424
Total441641
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
84184
2061206
104858611048586
Total31048876
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+

Wire log after handshake disabled!

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323535266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_2_3.json b/autobahn/client/hornbeam_case_9_2_3.json new file mode 100644 index 0000000..6fcc370 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_3.json @@ -0,0 +1,79 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "case": 255, + "closedByMe": true, + "createStats": true, + "createWirelog": false, + "description": "Send binary message message with payload of length 1 * 2**20 (1M).", + "droppedByMe": true, + "duration": 2790, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": true, + "httpRequest": "GET /runCase?case=255&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: duDHcBrN7+VXiLgAkDBfrg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 28njz+3cKL+/2YqCYZ8FIeMVU+w=\r\n\r\n", + "id": "9.2.3", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": "encountered invalid UTF-8 while processing text message at payload octet index 1", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Did not receive message within 10 seconds.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": {}, + "rxOctetStats": { + "1": 1, + "184": 1, + "13032": 1, + "28424": 1 + }, + "started": "2023-08-10T21:37:21.465Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "84": 1, + "206": 1, + "1048586": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323535266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/hornbeam_case_9_2_4.html b/autobahn/client/hornbeam_case_9_2_4.html new file mode 100644 index 0000000..97afc42 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Hornbeam - Case 9.2.4 : Fail - 11015 ms @ 2023-08-10T21:37:24.257Z

+

Case Description

Send binary message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Did not receive message within 10 seconds.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

The spec requires the connection to be failed cleanly here (UNCLEAN)

+

+

Opening Handshake

+
GET /runCase?case=256&agent=Hornbeam HTTP/1.1
+Host: localhost:9001
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: mgmDAXtexxxQhm06nRw+Qg==
+Sec-WebSocket-Version: 13
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rhRvUENkdgVbkr1FHIo7vS++87k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer did not respond (in time) in closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutTrueWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
1841184
Total1184
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
2061206
419431414194314
Total34194522
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+

Wire log after handshake disabled!

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323536266167656e743d486f726e6265616d20485454502f312e310d0a486f73
+
               743a206c6f63616c686f73743a39 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 CLOSING CONNECTION
+
004 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/hornbeam_case_9_2_4.json b/autobahn/client/hornbeam_case_9_2_4.json new file mode 100644 index 0000000..6606811 --- /dev/null +++ b/autobahn/client/hornbeam_case_9_2_4.json @@ -0,0 +1,79 @@ +{ + "agent": "Hornbeam", + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "case": 256, + "closedByMe": true, + "createStats": true, + "createWirelog": false, + "description": "Send binary message message with payload of length 4 * 2**20 (4M).", + "droppedByMe": true, + "duration": 11015, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=256&agent=Hornbeam HTTP/1.1\r\nHost: localhost:9001\r\nUpgrade: websocket\r\nConnection: upgrade\r\nSec-WebSocket-Key: mgmDAXtexxxQhm06nRw+Qg==\r\nSec-WebSocket-Version: 13\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rhRvUENkdgVbkr1FHIo7vS++87k=\r\n\r\n", + "id": "9.2.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Did not receive message within 10 seconds.", + "resultClose": "The spec requires the connection to be failed cleanly here", + "rxFrameStats": {}, + "rxOctetStats": { + "184": 1 + }, + "started": "2023-08-10T21:37:24.257Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": true, + "wasNotCleanReason": "peer did not respond (in time) in closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 184, + "474554202f72756e436173653f636173653d323536266167656e743d486f726e6265616d20485454502f312e310d0a486f73743a206c6f63616c686f73743a39 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TIE" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/index.html b/autobahn/client/index.html new file mode 100644 index 0000000..a1a57a0 --- /dev/null +++ b/autobahn/client/index.html @@ -0,0 +1,5923 @@ + + + + + + + + + +
Toggle Details
+ +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Summary report generated on 2023-08-10T21:50:28.396Z (UTC) by Autobahn WebSocket Testsuite v0.8.2/v0.10.9.

+ + + + + + + + + + + + + + + + + + + + + + +
PassTest case was executed and passed successfully.
Non-StrictTest case was executed and passed non-strictly. + A non-strict behavior is one that does not adhere to a SHOULD-behavior as described in the protocol specification or + a well-defined, canonical behavior that appears to be desirable but left open in the protocol specification. + An implementation with non-strict behavior is still conformant to the protocol specification.
FailTest case was executed and failed. An implementation which fails a test case - other + than a performance/limits related one - is non-conforming to a MUST-behavior as described in the protocol specification.
InfoInformational test case which detects certain implementation behavior left unspecified by the spec + but nevertheless potentially interesting to implementors.
MissingTest case is missing, either because it was skipped via the test suite configuration + or deactivated, i.e. because the implementation does not implement the tested feature or breaks during running + the test case.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1 FramingHornbeam
1.1 Text Messages
Case 1.1.1Pass1000
Case 1.1.2Pass1000
Case 1.1.3Pass1000
Case 1.1.4Pass1000
Case 1.1.5Pass1000
Case 1.1.6Pass1000
Case 1.1.7Pass1000
Case 1.1.8Pass1000
1 FramingHornbeam
1.2 Binary Messages
Case 1.2.1Pass1000
Case 1.2.2Pass1000
Case 1.2.3Pass1000
Case 1.2.4Pass1000
Case 1.2.5Pass1000
Case 1.2.6Pass1000
Case 1.2.7Pass1000
Case 1.2.8Pass1000
2 Pings/PongsHornbeam
Case 2.1FailNone
Case 2.2FailNone
Case 2.3FailNone
Case 2.4FailNone
Case 2.5PassFail
Case 2.6FailNone
Case 2.7Pass1000
Case 2.8Pass1000
Case 2.9FailNone
Case 2.10FailNone
Case 2.11FailNone
3 Reserved BitsHornbeam
Case 3.1FailFail
Case 3.2FailFail
Case 3.3FailFail
Case 3.4FailFail
Case 3.5PassFail
Case 3.6FailFail
Case 3.7PassNone
4 OpcodesHornbeam
4.1 Non-control Opcodes
Case 4.1.1PassNone
Case 4.1.2PassNone
Case 4.1.3PassNone
Case 4.1.4PassNone
Case 4.1.5PassNone
4 OpcodesHornbeam
4.2 Control Opcodes
Case 4.2.1PassNone
Case 4.2.2PassNone
Case 4.2.3PassNone
Case 4.2.4PassNone
Case 4.2.5PassNone
5 FragmentationHornbeam
Case 5.1PassNone
Case 5.2PassNone
Case 5.3FailFail
Case 5.4FailFail
Case 5.5FailFail
Case 5.6FailFail
Case 5.7FailFail
Case 5.8FailFail
Case 5.9PassNone
Case 5.10PassNone
Case 5.11PassNone
Case 5.12PassNone
Case 5.13PassNone
Case 5.14PassNone
Case 5.15FailNone
Case 5.16PassNone
Case 5.17PassNone
Case 5.18FailFail
Case 5.19FailFail
Case 5.20FailFail
6 UTF-8 HandlingHornbeam
6.1 Valid UTF-8 with zero payload fragments
Case 6.1.1Pass1000
Case 6.1.2PassUnclean
Case 6.1.3FailFail
6 UTF-8 HandlingHornbeam
6.2 Valid UTF-8 unfragmented, fragmented on code-points and within code-points
Case 6.2.1Pass1000
Case 6.2.2FailFail
Case 6.2.3FailFail
Case 6.2.4FailFail
6 UTF-8 HandlingHornbeam
6.3 Invalid UTF-8 differently fragmented
Case 6.3.1FailFail
Case 6.3.2FailNone
6 UTF-8 HandlingHornbeam
6.4 Fail-fast on invalid UTF-8
Case 6.4.1FailNone
Case 6.4.2FailNone
Case 6.4.3FailNone
Case 6.4.4FailNone
6 UTF-8 HandlingHornbeam
6.5 Some valid UTF-8 sequences
Case 6.5.1Pass1000
Case 6.5.2Pass1000
Case 6.5.3Pass1000
Case 6.5.4Pass1000
Case 6.5.5Pass1000
6 UTF-8 HandlingHornbeam
6.6 All prefixes of a valid UTF-8 string that contains multi-byte code points
Case 6.6.1FailFail
Case 6.6.2Pass1000
Case 6.6.3FailFail
Case 6.6.4FailFail
Case 6.6.5Pass1000
Case 6.6.6FailFail
Case 6.6.7Pass1000
Case 6.6.8FailFail
Case 6.6.9Pass1000
Case 6.6.10FailFail
Case 6.6.11Pass1000
6 UTF-8 HandlingHornbeam
6.7 First possible sequence of a certain length
Case 6.7.1Pass1000
Case 6.7.2Pass1000
Case 6.7.3Pass1000
Case 6.7.4Pass1000
6 UTF-8 HandlingHornbeam
6.8 First possible sequence length 5/6 (invalid codepoints)
Case 6.8.1FailFail
Case 6.8.2FailFail
6 UTF-8 HandlingHornbeam
6.9 Last possible sequence of a certain length
Case 6.9.1Pass1000
Case 6.9.2Pass1000
Case 6.9.3Pass1000
Case 6.9.4Pass1000
6 UTF-8 HandlingHornbeam
6.10 Last possible sequence length 4/5/6 (invalid codepoints)
Case 6.10.1FailFail
Case 6.10.2FailFail
Case 6.10.3FailFail
6 UTF-8 HandlingHornbeam
6.11 Other boundary conditions
Case 6.11.1Pass1000
Case 6.11.2Pass1000
Case 6.11.3Pass1000
Case 6.11.4Pass1000
Case 6.11.5FailFail
6 UTF-8 HandlingHornbeam
6.12 Unexpected continuation bytes
Case 6.12.1FailFail
Case 6.12.2FailFail
Case 6.12.3FailFail
Case 6.12.4FailFail
Case 6.12.5FailFail
Case 6.12.6FailFail
Case 6.12.7FailFail
Case 6.12.8FailFail
6 UTF-8 HandlingHornbeam
6.13 Lonely start characters
Case 6.13.1FailFail
Case 6.13.2FailFail
Case 6.13.3FailFail
Case 6.13.4FailFail
Case 6.13.5FailFail
6 UTF-8 HandlingHornbeam
6.14 Sequences with last continuation byte missing
Case 6.14.1FailFail
Case 6.14.2FailFail
Case 6.14.3FailFail
Case 6.14.4FailFail
Case 6.14.5FailFail
Case 6.14.6FailFail
Case 6.14.7FailFail
Case 6.14.8FailFail
Case 6.14.9FailFail
Case 6.14.10FailFail
6 UTF-8 HandlingHornbeam
6.15 Concatenation of incomplete sequences
Case 6.15.1FailFail
6 UTF-8 HandlingHornbeam
6.16 Impossible bytes
Case 6.16.1FailFail
Case 6.16.2FailFail
Case 6.16.3FailFail
6 UTF-8 HandlingHornbeam
6.17 Examples of an overlong ASCII character
Case 6.17.1FailFail
Case 6.17.2FailFail
Case 6.17.3FailFail
Case 6.17.4FailFail
Case 6.17.5FailFail
6 UTF-8 HandlingHornbeam
6.18 Maximum overlong sequences
Case 6.18.1FailFail
Case 6.18.2FailFail
Case 6.18.3FailFail
Case 6.18.4FailFail
Case 6.18.5FailFail
6 UTF-8 HandlingHornbeam
6.19 Overlong representation of the NUL character
Case 6.19.1FailFail
Case 6.19.2FailFail
Case 6.19.3FailFail
Case 6.19.4FailFail
Case 6.19.5FailFail
6 UTF-8 HandlingHornbeam
6.20 Single UTF-16 surrogates
Case 6.20.1FailFail
Case 6.20.2FailFail
Case 6.20.3FailFail
Case 6.20.4FailFail
Case 6.20.5FailFail
Case 6.20.6FailFail
Case 6.20.7FailFail
6 UTF-8 HandlingHornbeam
6.21 Paired UTF-16 surrogates
Case 6.21.1FailFail
Case 6.21.2FailFail
Case 6.21.3FailFail
Case 6.21.4FailFail
Case 6.21.5FailFail
Case 6.21.6FailFail
Case 6.21.7FailFail
Case 6.21.8FailFail
6 UTF-8 HandlingHornbeam
6.22 Non-character code points (valid UTF-8)
Case 6.22.1Pass1000
Case 6.22.2Pass1000
Case 6.22.3Pass1000
Case 6.22.4Pass1000
Case 6.22.5Pass1000
Case 6.22.6Pass1000
Case 6.22.7Pass1000
Case 6.22.8Pass1000
Case 6.22.9Pass1000
Case 6.22.10Pass1000
Case 6.22.11Pass1000
Case 6.22.12Pass1000
Case 6.22.13Pass1000
Case 6.22.14Pass1000
Case 6.22.15Pass1000
Case 6.22.16Pass1000
Case 6.22.17Pass1000
Case 6.22.18Pass1000
Case 6.22.19Pass1000
Case 6.22.20Pass1000
Case 6.22.21Pass1000
Case 6.22.22Pass1000
Case 6.22.23Pass1000
Case 6.22.24Pass1000
Case 6.22.25Pass1000
Case 6.22.26Pass1000
Case 6.22.27Pass1000
Case 6.22.28Pass1000
Case 6.22.29Pass1000
Case 6.22.30Pass1000
Case 6.22.31Pass1000
Case 6.22.32Pass1000
Case 6.22.33Pass1000
Case 6.22.34Pass1000
6 UTF-8 HandlingHornbeam
6.23 Unicode specials (i.e. replacement char)
Case 6.23.1Pass1000
Case 6.23.2Pass1000
Case 6.23.3Pass1000
Case 6.23.4Pass1000
Case 6.23.5Pass1000
Case 6.23.6Pass1000
Case 6.23.7Pass1000
7 Close HandlingHornbeam
7.1 Basic close behavior (fuzzer initiated)
Case 7.1.1Pass1000
Case 7.1.2Pass1000
Case 7.1.3Pass1000
Case 7.1.4Pass1000
Case 7.1.5Fail1000
Case 7.1.6InfoNone
7 Close HandlingHornbeam
7.3 Close frame structure: payload length (fuzzer initiated)
Case 7.3.1PassNone
Case 7.3.2PassNone
Case 7.3.3Pass1000
Case 7.3.4Pass1000
Case 7.3.5Pass1000
Case 7.3.6PassNone
7 Close HandlingHornbeam
7.5 Close frame structure: payload value (fuzzer initiated)
Case 7.5.1Fail1000
7 Close HandlingHornbeam
7.7 Close frame structure: valid close codes (fuzzer initiated)
Case 7.7.1Pass1000
Case 7.7.2Pass1001
Case 7.7.3Pass1002
Case 7.7.4Pass1003
Case 7.7.5Pass1007
Case 7.7.6Pass1008
Case 7.7.7Pass1009
Case 7.7.8Pass1010
Case 7.7.9Pass1011
Case 7.7.10Pass3000
Case 7.7.11Pass3999
Case 7.7.12Pass4000
Case 7.7.13Pass4999
7 Close HandlingHornbeam
7.9 Close frame structure: invalid close codes (fuzzer initiated)
Case 7.9.1Fail0
Case 7.9.2Fail999
Case 7.9.3Fail1004
Case 7.9.4Fail1005
Case 7.9.5Fail1006
Case 7.9.6Fail1016
Case 7.9.7Fail1100
Case 7.9.8Fail2000
Case 7.9.9Fail2999
7 Close HandlingHornbeam
7.13 Informational close information (fuzzer initiated)
Case 7.13.1Info5000
Case 7.13.2Info65535
9 Limits/PerformanceHornbeam
9.1 Text Message (increasing size)
Case 9.1.1Pass
176 ms
1000
Case 9.1.2Pass
707 ms
1000
Case 9.1.3Pass
3047 ms
1000
Case 9.1.4Pass
11433 ms
1000
Case 9.1.5Pass
23670 ms
1000
Case 9.1.6Pass
49073 ms
1000
9 Limits/PerformanceHornbeam
9.2 Binary Message (increasing size)
Case 9.2.1Fail
227 ms
Unclean
Case 9.2.2Fail
775 ms
Unclean
Case 9.2.3Fail
2790 ms
Unclean
Case 9.2.4Fail
11015 ms
Unclean
Case 9.2.5Missing
Case 9.2.6Missing
9 Limits/PerformanceHornbeam
9.3 Fragmented Text Message (fixed size, increasing fragment size)
Case 9.3.1Missing
Case 9.3.2Missing
Case 9.3.3Missing
Case 9.3.4Missing
Case 9.3.5Missing
Case 9.3.6Missing
Case 9.3.7Missing
Case 9.3.8Missing
Case 9.3.9Missing
9 Limits/PerformanceHornbeam
9.4 Fragmented Binary Message (fixed size, increasing fragment size)
Case 9.4.1Missing
Case 9.4.2Missing
Case 9.4.3Missing
Case 9.4.4Missing
Case 9.4.5Missing
Case 9.4.6Missing
Case 9.4.7Missing
Case 9.4.8Missing
Case 9.4.9Missing
9 Limits/PerformanceHornbeam
9.5 Text Message (fixed size, increasing chop size)
Case 9.5.1Missing
Case 9.5.2Missing
Case 9.5.3Missing
Case 9.5.4Missing
Case 9.5.5Missing
Case 9.5.6Missing
9 Limits/PerformanceHornbeam
9.6 Binary Text Message (fixed size, increasing chop size)
Case 9.6.1Missing
Case 9.6.2Missing
Case 9.6.3Missing
Case 9.6.4Missing
Case 9.6.5Missing
Case 9.6.6Missing
9 Limits/PerformanceHornbeam
9.7 Text Message Roundtrip Time (fixed number, increasing size)
Case 9.7.1Missing
Case 9.7.2Missing
Case 9.7.3Missing
Case 9.7.4Missing
Case 9.7.5Missing
Case 9.7.6Missing
9 Limits/PerformanceHornbeam
9.8 Binary Message Roundtrip Time (fixed number, increasing size)
Case 9.8.1Missing
Case 9.8.2Missing
Case 9.8.3Missing
Case 9.8.4Missing
Case 9.8.5Missing
Case 9.8.6Missing
10 MiscHornbeam
10.1 Auto-Fragmentation
Case 10.1.1Missing
12 WebSocket Compression (different payloads)Hornbeam
12.1 Large JSON data file (utf8, 194056 bytes)
Case 12.1.1Missing
Case 12.1.2Missing
Case 12.1.3Missing
Case 12.1.4Missing
Case 12.1.5Missing
Case 12.1.6Missing
Case 12.1.7Missing
Case 12.1.8Missing
Case 12.1.9Missing
Case 12.1.10Missing
Case 12.1.11Missing
Case 12.1.12Missing
Case 12.1.13Missing
Case 12.1.14Missing
Case 12.1.15Missing
Case 12.1.16Missing
Case 12.1.17Missing
Case 12.1.18Missing
12 WebSocket Compression (different payloads)Hornbeam
12.2 Lena Picture, Bitmap 512x512 bw (binary, 263222 bytes)
Case 12.2.1Missing
Case 12.2.2Missing
Case 12.2.3Missing
Case 12.2.4Missing
Case 12.2.5Missing
Case 12.2.6Missing
Case 12.2.7Missing
Case 12.2.8Missing
Case 12.2.9Missing
Case 12.2.10Missing
Case 12.2.11Missing
Case 12.2.12Missing
Case 12.2.13Missing
Case 12.2.14Missing
Case 12.2.15Missing
Case 12.2.16Missing
Case 12.2.17Missing
Case 12.2.18Missing
12 WebSocket Compression (different payloads)Hornbeam
12.3 Human readable text, Goethe's Faust I (German) (binary, 222218 bytes)
Case 12.3.1Missing
Case 12.3.2Missing
Case 12.3.3Missing
Case 12.3.4Missing
Case 12.3.5Missing
Case 12.3.6Missing
Case 12.3.7Missing
Case 12.3.8Missing
Case 12.3.9Missing
Case 12.3.10Missing
Case 12.3.11Missing
Case 12.3.12Missing
Case 12.3.13Missing
Case 12.3.14Missing
Case 12.3.15Missing
Case 12.3.16Missing
Case 12.3.17Missing
Case 12.3.18Missing
12 WebSocket Compression (different payloads)Hornbeam
12.4 Large HTML file (utf8, 263527 bytes)
Case 12.4.1Missing
Case 12.4.2Missing
Case 12.4.3Missing
Case 12.4.4Missing
Case 12.4.5Missing
Case 12.4.6Missing
Case 12.4.7Missing
Case 12.4.8Missing
Case 12.4.9Missing
Case 12.4.10Missing
Case 12.4.11Missing
Case 12.4.12Missing
Case 12.4.13Missing
Case 12.4.14Missing
Case 12.4.15Missing
Case 12.4.16Missing
Case 12.4.17Missing
Case 12.4.18Missing
12 WebSocket Compression (different payloads)Hornbeam
12.5 A larger PDF (binary, 1042328 bytes)
Case 12.5.1Missing
Case 12.5.2Missing
Case 12.5.3Missing
Case 12.5.4Missing
Case 12.5.5Missing
Case 12.5.6Missing
Case 12.5.7Missing
Case 12.5.8Missing
Case 12.5.9Missing
Case 12.5.10Missing
Case 12.5.11Missing
Case 12.5.12Missing
Case 12.5.13Missing
Case 12.5.14Missing
Case 12.5.15Missing
Case 12.5.16Missing
Case 12.5.17Missing
Case 12.5.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.1 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]
Case 13.1.1Missing
Case 13.1.2Missing
Case 13.1.3Missing
Case 13.1.4Missing
Case 13.1.5Missing
Case 13.1.6Missing
Case 13.1.7Missing
Case 13.1.8Missing
Case 13.1.9Missing
Case 13.1.10Missing
Case 13.1.11Missing
Case 13.1.12Missing
Case 13.1.13Missing
Case 13.1.14Missing
Case 13.1.15Missing
Case 13.1.16Missing
Case 13.1.17Missing
Case 13.1.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.2 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]
Case 13.2.1Missing
Case 13.2.2Missing
Case 13.2.3Missing
Case 13.2.4Missing
Case 13.2.5Missing
Case 13.2.6Missing
Case 13.2.7Missing
Case 13.2.8Missing
Case 13.2.9Missing
Case 13.2.10Missing
Case 13.2.11Missing
Case 13.2.12Missing
Case 13.2.13Missing
Case 13.2.14Missing
Case 13.2.15Missing
Case 13.2.16Missing
Case 13.2.17Missing
Case 13.2.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.3 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]
Case 13.3.1Missing
Case 13.3.2Missing
Case 13.3.3Missing
Case 13.3.4Missing
Case 13.3.5Missing
Case 13.3.6Missing
Case 13.3.7Missing
Case 13.3.8Missing
Case 13.3.9Missing
Case 13.3.10Missing
Case 13.3.11Missing
Case 13.3.12Missing
Case 13.3.13Missing
Case 13.3.14Missing
Case 13.3.15Missing
Case 13.3.16Missing
Case 13.3.17Missing
Case 13.3.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.4 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]
Case 13.4.1Missing
Case 13.4.2Missing
Case 13.4.3Missing
Case 13.4.4Missing
Case 13.4.5Missing
Case 13.4.6Missing
Case 13.4.7Missing
Case 13.4.8Missing
Case 13.4.9Missing
Case 13.4.10Missing
Case 13.4.11Missing
Case 13.4.12Missing
Case 13.4.13Missing
Case 13.4.14Missing
Case 13.4.15Missing
Case 13.4.16Missing
Case 13.4.17Missing
Case 13.4.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.5 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]
Case 13.5.1Missing
Case 13.5.2Missing
Case 13.5.3Missing
Case 13.5.4Missing
Case 13.5.5Missing
Case 13.5.6Missing
Case 13.5.7Missing
Case 13.5.8Missing
Case 13.5.9Missing
Case 13.5.10Missing
Case 13.5.11Missing
Case 13.5.12Missing
Case 13.5.13Missing
Case 13.5.14Missing
Case 13.5.15Missing
Case 13.5.16Missing
Case 13.5.17Missing
Case 13.5.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.6 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]
Case 13.6.1Missing
Case 13.6.2Missing
Case 13.6.3Missing
Case 13.6.4Missing
Case 13.6.5Missing
Case 13.6.6Missing
Case 13.6.7Missing
Case 13.6.8Missing
Case 13.6.9Missing
Case 13.6.10Missing
Case 13.6.11Missing
Case 13.6.12Missing
Case 13.6.13Missing
Case 13.6.14Missing
Case 13.6.15Missing
Case 13.6.16Missing
Case 13.6.17Missing
Case 13.6.18Missing
13 WebSocket Compression (different parameters)Hornbeam
13.7 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]
Case 13.7.1Missing
Case 13.7.2Missing
Case 13.7.3Missing
Case 13.7.4Missing
Case 13.7.5Missing
Case 13.7.6Missing
Case 13.7.7Missing
Case 13.7.8Missing
Case 13.7.9Missing
Case 13.7.10Missing
Case 13.7.11Missing
Case 13.7.12Missing
Case 13.7.13Missing
Case 13.7.14Missing
Case 13.7.15Missing
Case 13.7.16Missing
Case 13.7.17Missing
Case 13.7.18Missing
+

+
+
+ +

Case 1.1.1

+ Up +

Case Description

Send text message with payload 0.

+

Case Expectation

Receive echo'ed text message (with empty payload). Clean close with normal code.

+
+ +

Case 1.1.2

+ Up +

Case Description

Send text message message with payload of length 125.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.3

+ Up +

Case Description

Send text message message with payload of length 126.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.4

+ Up +

Case Description

Send text message message with payload of length 127.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.5

+ Up +

Case Description

Send text message message with payload of length 128.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.6

+ Up +

Case Description

Send text message message with payload of length 65535.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.7

+ Up +

Case Description

Send text message message with payload of length 65536.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.8

+ Up +

Case Description

Send text message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.1

+ Up +

Case Description

Send binary message with payload 0.

+

Case Expectation

Receive echo'ed binary message (with empty payload). Clean close with normal code.

+
+ +

Case 1.2.2

+ Up +

Case Description

Send binary message message with payload of length 125.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.3

+ Up +

Case Description

Send binary message message with payload of length 126.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.4

+ Up +

Case Description

Send binary message message with payload of length 127.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.5

+ Up +

Case Description

Send binary message message with payload of length 128.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.6

+ Up +

Case Description

Send binary message message with payload of length 65535.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.7

+ Up +

Case Description

Send binary message message with payload of length 65536.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.8

+ Up +

Case Description

Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 2.1

+ Up +

Case Description

Send ping without payload.

+

Case Expectation

Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.2

+ Up +

Case Description

Send ping with small text payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.3

+ Up +

Case Description

Send ping with small binary (non UTF-8) payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.4

+ Up +

Case Description

Send ping with binary payload of 125 octets.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.5

+ Up +

Case Description

Send ping with binary payload of 126 octets.

+

Case Expectation

Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..

+
+ +

Case 2.6

+ Up +

Case Description

Send ping with binary payload of 125 octets, send in octet-wise chops.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.

+
+ +

Case 2.7

+ Up +

Case Description

Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+
+ +

Case 2.8

+ Up +

Case Description

Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+
+ +

Case 2.9

+ Up +

Case Description

Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.

+

Case Expectation

Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.

+
+ +

Case 2.10

+ Up +

Case Description

Send 10 Pings with payload.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+
+ +

Case 2.11

+ Up +

Case Description

Send 10 Pings with payload. Send out octets in octet-wise chops.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+
+ +

Case 3.1

+ Up +

Case Description

Send small text message with RSV = 1.

+

Case Expectation

The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.

+
+ +

Case 3.2

+ Up +

Case Description

Send small text message, then send again with RSV = 2, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.3

+ Up +

Case Description

Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.4

+ Up +

Case Description

Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.5

+ Up +

Case Description

Send small binary message with RSV = 5.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 3.6

+ Up +

Case Description

Send Ping with RSV = 6.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 3.7

+ Up +

Case Description

Send Close with RSV = 7.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 4.1.1

+ Up +

Case Description

Send frame with reserved non-control Opcode = 3.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.1.2

+ Up +

Case Description

Send frame with reserved non-control Opcode = 4 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.1.3

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.1.4

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.1.5

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.1

+ Up +

Case Description

Send frame with reserved control Opcode = 11.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.2.2

+ Up +

Case Description

Send frame with reserved control Opcode = 12 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.2.3

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 13, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.4

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.5

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 5.1

+ Up +

Case Description

Send Ping fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+
+ +

Case 5.2

+ Up +

Case Description

Send Pong fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+
+ +

Case 5.3

+ Up +

Case Description

Send text Message fragmented into 2 fragments.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.4

+ Up +

Case Description

Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.5

+ Up +

Case Description

Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.6

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.7

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.8

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.9

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.10

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.11

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.12

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.13

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.14

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.15

+ Up +

Case Description

Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.16

+ Up +

Case Description

Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.17

+ Up +

Case Description

Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.18

+ Up +

Case Description

Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.

+

Case Expectation

The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.

+
+ +

Case 5.19

+ Up +

Case Description

A fragmented text message is sent in multiple frames. After + sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s, + then we send 2 more text fragments, another Ping and then the final text fragment. + Everything is legal.

+

Case Expectation

The peer immediately answers the first Ping before + it has received the last text message fragment. The peer pong's back the Ping's + payload exactly, and echo's the payload of the fragmented message back to us.

+
+ +

Case 5.20

+ Up +

Case Description

Same as Case 5.19, but send all frames with SYNC = True. + Note, this does not change the octets sent in any way, only how the stream + is chopped up on the wire.

+

Case Expectation

Same as Case 5.19. Implementations must be agnostic to how + octet stream is chopped up on wire (must be TCP clean).

+
+ +

Case 6.1.1

+ Up +

Case Description

Send text message of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+
+ +

Case 6.1.2

+ Up +

Case Description

Send fragmented text message, 3 fragments each of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+
+ +

Case 6.1.3

+ Up +

Case Description

Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.

+

Case Expectation

A message is echo'ed back to us (with payload = payload of middle fragment).

+
+ +

Case 6.2.1

+ Up +

Case Description

Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.2

+ Up +

Case Description

Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.3

+ Up +

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.4

+ Up +

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.3.1

+ Up +

Case Description

Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.3.2

+ Up +

Case Description

Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.4.1

+ Up +

Case Description

Send invalid UTF-8 text message in 3 fragments (frames). +First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest. +Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range). +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.2

+ Up +

Case Description

Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 = 8080656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.3

+ Up +

Case Description

Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.4

+ Up +

Case Description

Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 =
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.5.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.9

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.10

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.11

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.8.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.8.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.9.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.10.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.10.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.10.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.11.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.9

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.10

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.15.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.22.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.6

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.8

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.9

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.10

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.11

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.12

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.13

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.14

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.15

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.16

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.17

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.18

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.19

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.20

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.21

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.22

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.23

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.24

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.25

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.26

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.27

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.28

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.29

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.30

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.31

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.32

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.33

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.34

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.6

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 7.1.1

+ Up +

Case Description

Send a message followed by a close frame

+

Case Expectation

Echoed message followed by clean close with normal code.

+
+ +

Case 7.1.2

+ Up +

Case Description

Send two close frames

+

Case Expectation

Clean close with normal code. Second close frame ignored.

+
+ +

Case 7.1.3

+ Up +

Case Description

Send a ping after close message

+

Case Expectation

Clean close with normal code, no pong.

+
+ +

Case 7.1.4

+ Up +

Case Description

Send text message after sending a close frame.

+

Case Expectation

Clean close with normal code. Text message ignored.

+
+ +

Case 7.1.5

+ Up +

Case Description

Send message fragment1 followed by close then fragment

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.1.6

+ Up +

Case Description

Send 256K message followed by close then a ping

+

Case Expectation

Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.

+
+ +

Case 7.3.1

+ Up +

Case Description

Send a close frame with payload length 0 (no close code, no close reason)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.2

+ Up +

Case Description

Send a close frame with payload length 1

+

Case Expectation

Clean close with protocol error or drop TCP.

+
+ +

Case 7.3.3

+ Up +

Case Description

Send a close frame with payload length 2 (regular close with a code)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.4

+ Up +

Case Description

Send a close frame with close code and close reason

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.5

+ Up +

Case Description

Send a close frame with close code and close reason of maximum length (123)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.6

+ Up +

Case Description

Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets

+

Case Expectation

Clean close with protocol error code or dropped TCP connection.

+
+ +

Case 7.5.1

+ Up +

Case Description

Send a close frame with invalid UTF8 payload

+

Case Expectation

Clean close with protocol error or invalid utf8 code or dropped TCP.

+
+ +

Case 7.7.1

+ Up +

Case Description

Send close with valid close code 1000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.2

+ Up +

Case Description

Send close with valid close code 1001

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.3

+ Up +

Case Description

Send close with valid close code 1002

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.4

+ Up +

Case Description

Send close with valid close code 1003

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.5

+ Up +

Case Description

Send close with valid close code 1007

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.6

+ Up +

Case Description

Send close with valid close code 1008

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.7

+ Up +

Case Description

Send close with valid close code 1009

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.8

+ Up +

Case Description

Send close with valid close code 1010

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.9

+ Up +

Case Description

Send close with valid close code 1011

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.10

+ Up +

Case Description

Send close with valid close code 3000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.11

+ Up +

Case Description

Send close with valid close code 3999

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.12

+ Up +

Case Description

Send close with valid close code 4000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.13

+ Up +

Case Description

Send close with valid close code 4999

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.9.1

+ Up +

Case Description

Send close with invalid close code 0

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.2

+ Up +

Case Description

Send close with invalid close code 999

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.3

+ Up +

Case Description

Send close with invalid close code 1004

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.4

+ Up +

Case Description

Send close with invalid close code 1005

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.5

+ Up +

Case Description

Send close with invalid close code 1006

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.6

+ Up +

Case Description

Send close with invalid close code 1016

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.7

+ Up +

Case Description

Send close with invalid close code 1100

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.8

+ Up +

Case Description

Send close with invalid close code 2000

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.9

+ Up +

Case Description

Send close with invalid close code 2999

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.13.1

+ Up +

Case Description

Send close with close code 5000

+

Case Expectation

Actual events are undefined by the spec.

+
+ +

Case 7.13.2

+ Up +

Case Description

Send close with close code 65536

+

Case Expectation

Actual events are undefined by the spec.

+
+ +

Case 9.1.1

+ Up +

Case Description

Send text message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.2

+ Up +

Case Description

Send text message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.3

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.4

+ Up +

Case Description

Send text message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.5

+ Up +

Case Description

Send text message message with payload of length 8 * 2**20 (8M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.6

+ Up +

Case Description

Send text message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.2.1

+ Up +

Case Description

Send binary message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.2

+ Up +

Case Description

Send binary message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.3

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.4

+ Up +

Case Description

Send binary message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.5

+ Up +

Case Description

Send binary message message with payload of length 8 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.6

+ Up +

Case Description

Send binary message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.3.1

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.2

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.3

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.4

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.5

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.6

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.7

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.8

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.9

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (8M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.4.1

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.2

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.3

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.4

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.5

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.6

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.7

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.8

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.9

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.5.1

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.2

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.3

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.4

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.5

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.6

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.1

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.6.2

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.3

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.4

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.5

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.6

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.7.1

+ Up +

Case Description

Send 1000 text messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.2

+ Up +

Case Description

Send 1000 text messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.3

+ Up +

Case Description

Send 1000 text messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.4

+ Up +

Case Description

Send 1000 text messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 9.7.5

+ Up +

Case Description

Send 1000 text messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 9.7.6

+ Up +

Case Description

Send 1000 text messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 9.8.1

+ Up +

Case Description

Send 1000 binary messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.2

+ Up +

Case Description

Send 1000 binary messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.3

+ Up +

Case Description

Send 1000 binary messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.4

+ Up +

Case Description

Send 1000 binary messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 9.8.5

+ Up +

Case Description

Send 1000 binary messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 9.8.6

+ Up +

Case Description

Send 1000 binary messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 10.1.1

+ Up +

Case Description

Send text message with payload of length 65536 auto-fragmented with autoFragmentSize = 1300.

+

Case Expectation

Receive echo'ed text message (with payload as sent and transmitted frame counts as expected). Clean close with normal code.

+
+ +

Case 12.1.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.1.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.1.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.1.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.1.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.2.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.2.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.2.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.2.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.3.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.3.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.3.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.3.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.4.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.4.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.4.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.4.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.5.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.5.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.5.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.5.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.1.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.1.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.1.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.1.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.2.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.2.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.2.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.2.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.3.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.3.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.3.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.3.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.4.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.4.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.4.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.4.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.5.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.5.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.5.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.5.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.6.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.6.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.6.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.6.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.7.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.7.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.7.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.7.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+

+ + diff --git a/autobahn/client/index.json b/autobahn/client/index.json new file mode 100644 index 0000000..73e8723 --- /dev/null +++ b/autobahn/client/index.json @@ -0,0 +1,1796 @@ +{ + "Hornbeam": { + "1.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_1.json" + }, + "1.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_2.json" + }, + "1.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_3.json" + }, + "1.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_4.json" + }, + "1.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_5.json" + }, + "1.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 210, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_6.json" + }, + "1.1.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 186, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_7.json" + }, + "1.1.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 221, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_1_8.json" + }, + "1.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 50, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_1.json" + }, + "1.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_2.json" + }, + "1.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_3.json" + }, + "1.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_4.json" + }, + "1.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_5.json" + }, + "1.2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 697, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_6.json" + }, + "1.2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 395, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_7.json" + }, + "1.2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 602, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_1_2_8.json" + }, + "2.1": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_1.json" + }, + "2.10": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 3004, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_10.json" + }, + "2.11": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 3004, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_11.json" + }, + "2.2": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_2.json" + }, + "2.3": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_3.json" + }, + "2.4": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_4.json" + }, + "2.5": { + "behavior": "OK", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_2_5.json" + }, + "2.6": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 2003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_6.json" + }, + "2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_2_7.json" + }, + "2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_2_8.json" + }, + "2.9": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_2_9.json" + }, + "3.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1002, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_3_1.json" + }, + "3.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_3_2.json" + }, + "3.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1002, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_3_3.json" + }, + "3.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_3_4.json" + }, + "3.5": { + "behavior": "OK", + "behaviorClose": "FAILED", + "duration": 44, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_3_5.json" + }, + "3.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_3_6.json" + }, + "3.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_3_7.json" + }, + "4.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_1_1.json" + }, + "4.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_1_2.json" + }, + "4.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_1_3.json" + }, + "4.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_1_4.json" + }, + "4.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_1_5.json" + }, + "4.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_2_1.json" + }, + "4.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_2_2.json" + }, + "4.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_2_3.json" + }, + "4.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_2_4.json" + }, + "4.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_4_2_5.json" + }, + "5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_1.json" + }, + "5.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_10.json" + }, + "5.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_11.json" + }, + "5.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_12.json" + }, + "5.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_13.json" + }, + "5.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_14.json" + }, + "5.15": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_15.json" + }, + "5.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_16.json" + }, + "5.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_17.json" + }, + "5.18": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_5_18.json" + }, + "5.19": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_19.json" + }, + "5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_2.json" + }, + "5.20": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_20.json" + }, + "5.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_3.json" + }, + "5.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_4.json" + }, + "5.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_5.json" + }, + "5.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_6.json" + }, + "5.7": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_7.json" + }, + "5.8": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_8.json" + }, + "5.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_5_9.json" + }, + "6.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_1_1.json" + }, + "6.1.2": { + "behavior": "OK", + "behaviorClose": "UNCLEAN", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_1_2.json" + }, + "6.1.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_1_3.json" + }, + "6.10.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_10_1.json" + }, + "6.10.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_10_2.json" + }, + "6.10.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_10_3.json" + }, + "6.11.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_11_1.json" + }, + "6.11.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_11_2.json" + }, + "6.11.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_11_3.json" + }, + "6.11.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_11_4.json" + }, + "6.11.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_11_5.json" + }, + "6.12.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_1.json" + }, + "6.12.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_2.json" + }, + "6.12.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_3.json" + }, + "6.12.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_4.json" + }, + "6.12.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_5.json" + }, + "6.12.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_6.json" + }, + "6.12.7": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_7.json" + }, + "6.12.8": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_12_8.json" + }, + "6.13.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_13_1.json" + }, + "6.13.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_13_2.json" + }, + "6.13.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_13_3.json" + }, + "6.13.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_13_4.json" + }, + "6.13.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_13_5.json" + }, + "6.14.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 504, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_1.json" + }, + "6.14.10": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_10.json" + }, + "6.14.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_2.json" + }, + "6.14.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_3.json" + }, + "6.14.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_4.json" + }, + "6.14.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 517, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_5.json" + }, + "6.14.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 524, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_6.json" + }, + "6.14.7": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 540, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_7.json" + }, + "6.14.8": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 543, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_8.json" + }, + "6.14.9": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_14_9.json" + }, + "6.15.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 504, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_15_1.json" + }, + "6.16.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_16_1.json" + }, + "6.16.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_16_2.json" + }, + "6.16.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 504, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_16_3.json" + }, + "6.17.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_17_1.json" + }, + "6.17.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_17_2.json" + }, + "6.17.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_17_3.json" + }, + "6.17.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_17_4.json" + }, + "6.17.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_17_5.json" + }, + "6.18.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_18_1.json" + }, + "6.18.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_18_2.json" + }, + "6.18.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_18_3.json" + }, + "6.18.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_18_4.json" + }, + "6.18.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_18_5.json" + }, + "6.19.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_19_1.json" + }, + "6.19.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_19_2.json" + }, + "6.19.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_19_3.json" + }, + "6.19.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_19_4.json" + }, + "6.19.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_19_5.json" + }, + "6.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_2_1.json" + }, + "6.2.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_2_2.json" + }, + "6.2.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_2_3.json" + }, + "6.2.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_2_4.json" + }, + "6.20.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_1.json" + }, + "6.20.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_2.json" + }, + "6.20.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_3.json" + }, + "6.20.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_4.json" + }, + "6.20.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_5.json" + }, + "6.20.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_6.json" + }, + "6.20.7": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_20_7.json" + }, + "6.21.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 511, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_1.json" + }, + "6.21.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_2.json" + }, + "6.21.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_3.json" + }, + "6.21.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_4.json" + }, + "6.21.5": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_5.json" + }, + "6.21.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_6.json" + }, + "6.21.7": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 502, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_7.json" + }, + "6.21.8": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_21_8.json" + }, + "6.22.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 49, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_1.json" + }, + "6.22.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_10.json" + }, + "6.22.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_11.json" + }, + "6.22.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_12.json" + }, + "6.22.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_13.json" + }, + "6.22.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 49, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_14.json" + }, + "6.22.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 48, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_15.json" + }, + "6.22.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_16.json" + }, + "6.22.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_17.json" + }, + "6.22.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_18.json" + }, + "6.22.19": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_19.json" + }, + "6.22.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_2.json" + }, + "6.22.20": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_20.json" + }, + "6.22.21": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_21.json" + }, + "6.22.22": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_22.json" + }, + "6.22.23": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_23.json" + }, + "6.22.24": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_24.json" + }, + "6.22.25": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_25.json" + }, + "6.22.26": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_26.json" + }, + "6.22.27": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_27.json" + }, + "6.22.28": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_28.json" + }, + "6.22.29": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_29.json" + }, + "6.22.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_3.json" + }, + "6.22.30": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_30.json" + }, + "6.22.31": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_31.json" + }, + "6.22.32": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_32.json" + }, + "6.22.33": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_33.json" + }, + "6.22.34": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_34.json" + }, + "6.22.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_4.json" + }, + "6.22.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_5.json" + }, + "6.22.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_6.json" + }, + "6.22.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 48, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_7.json" + }, + "6.22.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_8.json" + }, + "6.22.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_22_9.json" + }, + "6.23.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 50, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_1.json" + }, + "6.23.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_2.json" + }, + "6.23.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_3.json" + }, + "6.23.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_4.json" + }, + "6.23.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_5.json" + }, + "6.23.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 48, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_6.json" + }, + "6.23.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_23_7.json" + }, + "6.3.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 1003, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_3_1.json" + }, + "6.3.2": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_3_2.json" + }, + "6.4.1": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_4_1.json" + }, + "6.4.2": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_4_2.json" + }, + "6.4.3": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 2004, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_4_3.json" + }, + "6.4.4": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 2004, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_6_4_4.json" + }, + "6.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 49, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_5_1.json" + }, + "6.5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_5_2.json" + }, + "6.5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_5_3.json" + }, + "6.5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_5_4.json" + }, + "6.5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_5_5.json" + }, + "6.6.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_1.json" + }, + "6.6.10": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_10.json" + }, + "6.6.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_6_11.json" + }, + "6.6.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_6_2.json" + }, + "6.6.3": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_3.json" + }, + "6.6.4": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_4.json" + }, + "6.6.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_6_5.json" + }, + "6.6.6": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_6.json" + }, + "6.6.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_6_7.json" + }, + "6.6.8": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_6_8.json" + }, + "6.6.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_6_9.json" + }, + "6.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_7_1.json" + }, + "6.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_7_2.json" + }, + "6.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_7_3.json" + }, + "6.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_7_4.json" + }, + "6.8.1": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_8_1.json" + }, + "6.8.2": { + "behavior": "FAILED", + "behaviorClose": "FAILED", + "duration": 503, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_6_8_2.json" + }, + "6.9.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 48, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_9_1.json" + }, + "6.9.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_9_2.json" + }, + "6.9.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 46, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_9_3.json" + }, + "6.9.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_6_9_4.json" + }, + "7.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_1_1.json" + }, + "7.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_1_2.json" + }, + "7.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_1_3.json" + }, + "7.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_1_4.json" + }, + "7.1.5": { + "behavior": "FAILED", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_1_5.json" + }, + "7.1.6": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 723, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_7_1_6.json" + }, + "7.13.1": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 1, + "remoteCloseCode": 5000, + "reportfile": "hornbeam_case_7_13_1.json" + }, + "7.13.2": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 2, + "remoteCloseCode": 65535, + "reportfile": "hornbeam_case_7_13_2.json" + }, + "7.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_7_3_1.json" + }, + "7.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_7_3_2.json" + }, + "7.3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_3_3.json" + }, + "7.3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_3_4.json" + }, + "7.3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_3_5.json" + }, + "7.3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_7_3_6.json" + }, + "7.5.1": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_5_1.json" + }, + "7.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_7_7_1.json" + }, + "7.7.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 3000, + "reportfile": "hornbeam_case_7_7_10.json" + }, + "7.7.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 3999, + "reportfile": "hornbeam_case_7_7_11.json" + }, + "7.7.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 4000, + "reportfile": "hornbeam_case_7_7_12.json" + }, + "7.7.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 4999, + "reportfile": "hornbeam_case_7_7_13.json" + }, + "7.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1001, + "reportfile": "hornbeam_case_7_7_2.json" + }, + "7.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "hornbeam_case_7_7_3.json" + }, + "7.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": 1003, + "reportfile": "hornbeam_case_7_7_4.json" + }, + "7.7.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1007, + "reportfile": "hornbeam_case_7_7_5.json" + }, + "7.7.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1008, + "reportfile": "hornbeam_case_7_7_6.json" + }, + "7.7.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1009, + "reportfile": "hornbeam_case_7_7_7.json" + }, + "7.7.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1010, + "reportfile": "hornbeam_case_7_7_8.json" + }, + "7.7.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1011, + "reportfile": "hornbeam_case_7_7_9.json" + }, + "7.9.1": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 1, + "remoteCloseCode": 0, + "reportfile": "hornbeam_case_7_9_1.json" + }, + "7.9.2": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 2, + "remoteCloseCode": 999, + "reportfile": "hornbeam_case_7_9_2.json" + }, + "7.9.3": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 2, + "remoteCloseCode": 1004, + "reportfile": "hornbeam_case_7_9_3.json" + }, + "7.9.4": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 2, + "remoteCloseCode": 1005, + "reportfile": "hornbeam_case_7_9_4.json" + }, + "7.9.5": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 6, + "remoteCloseCode": 1006, + "reportfile": "hornbeam_case_7_9_5.json" + }, + "7.9.6": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 3, + "remoteCloseCode": 1016, + "reportfile": "hornbeam_case_7_9_6.json" + }, + "7.9.7": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 1, + "remoteCloseCode": 1100, + "reportfile": "hornbeam_case_7_9_7.json" + }, + "7.9.8": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 1, + "remoteCloseCode": 2000, + "reportfile": "hornbeam_case_7_9_8.json" + }, + "7.9.9": { + "behavior": "FAILED", + "behaviorClose": "WRONG CODE", + "duration": 2, + "remoteCloseCode": 2999, + "reportfile": "hornbeam_case_7_9_9.json" + }, + "9.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 176, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_1.json" + }, + "9.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 707, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_2.json" + }, + "9.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3047, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_3.json" + }, + "9.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11433, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_4.json" + }, + "9.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 23670, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_5.json" + }, + "9.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 49073, + "remoteCloseCode": 1000, + "reportfile": "hornbeam_case_9_1_6.json" + }, + "9.2.1": { + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "duration": 227, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_9_2_1.json" + }, + "9.2.2": { + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "duration": 775, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_9_2_2.json" + }, + "9.2.3": { + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "duration": 2790, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_9_2_3.json" + }, + "9.2.4": { + "behavior": "FAILED", + "behaviorClose": "UNCLEAN", + "duration": 11015, + "remoteCloseCode": null, + "reportfile": "hornbeam_case_9_2_4.json" + } + } +} \ No newline at end of file diff --git a/autobahn/server.json b/autobahn/server.json new file mode 100644 index 0000000..c887c35 --- /dev/null +++ b/autobahn/server.json @@ -0,0 +1,7 @@ +{ + "url": "ws://127.0.0.1:9001", + "outdir": "./autobahn/client", + "cases": ["*"], + "exclude-cases": [], + "exclude-agent-cases": {} +} diff --git a/hornbeam-autobahn-client/Cargo.toml b/hornbeam-autobahn-client/Cargo.toml new file mode 100644 index 0000000..d183b04 --- /dev/null +++ b/hornbeam-autobahn-client/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "hornbeam-autobahn-client" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +hornbeam = { version = "0.1.0", path = "../hornbeam" } +url = "2.4" +simple_logger = "4.2" +log = "0.4" \ No newline at end of file diff --git a/hornbeam-autobahn-client/src/main.rs b/hornbeam-autobahn-client/src/main.rs new file mode 100644 index 0000000..b9eca75 --- /dev/null +++ b/hornbeam-autobahn-client/src/main.rs @@ -0,0 +1,115 @@ +use std::error::Error; +use std::io::Read; +use std::net::TcpStream; +use std::str::FromStr; +use std::time::Duration; +use log::{debug, error, info}; +use url::Url; +use hornbeam::frame::Message; +use hornbeam::handshake_client::ClientConnectionInfo; +use hornbeam::stream::{MessageReadable, MessageReadError, MessageWritable, MessageWriteError}; + +fn get_case_count() -> u32 { + // ws://localhost:9001/getCaseCount + let mut socket = TcpStream::connect("localhost:9001").unwrap(); + let info = ClientConnectionInfo::from(Url::from_str("ws://localhost:9001/getCaseCount").unwrap()); + info.send_handshake(&mut socket).unwrap(); + let mut ws = info.read_handshake(socket).unwrap(); + let msg = ws.read_message().unwrap(); + ws.close(None, None).unwrap(); + match msg { + hornbeam::frame::Message::Text(s) => s.parse().unwrap(), + _ => panic!("unexpected getCaseCount response") + } +} + +fn update_reports() { + // ws://localhost:9001/updateReports?agent=Hornbeam + let mut socket = TcpStream::connect("localhost:9001").unwrap(); + let info = ClientConnectionInfo::from(Url::from_str("ws://localhost:9001/updateReports?agent=Hornbeam").unwrap()); + info.send_handshake(&mut socket).unwrap(); + let mut ws = info.read_handshake(socket).unwrap(); + ws.close(None, None).unwrap(); +} + +fn run_test(test_id: u32) -> Result<(), MessageReadError> { + info!("Running test case {}", test_id); + + let mut socket = TcpStream::connect("localhost:9001")?; + socket.set_read_timeout(Some(Duration::from_secs(1))).unwrap(); + let info = ClientConnectionInfo::from(Url::from_str(&format!("ws://localhost:9001/runCase?case={}&agent=Hornbeam", test_id)).unwrap()); + info.send_handshake(&mut socket).unwrap(); +/* + loop { + let mut buf: [u8; 1024] = [0u8; 1024]; + let bytes = socket.read(&mut buf).unwrap(); + if bytes == 0 { break; } + let bytes = &buf[0..bytes]; + debug!("{:x?}", bytes); + } + + Ok(()) + + */ + + let mut ws = info.read_handshake(socket).unwrap(); + + loop { + let msg = ws.read_message()?; + match msg { + Message::Text(_) => ws.write_message(msg).unwrap(), + Message::Binary(_) => ws.write_message(msg).unwrap(), + Message::Ping(_) => {} + Message::Pong(_) => {} + } + } +} + +fn main() { + simple_logger::init_with_env().unwrap(); + + info!("-=- Hornbeam Websockets -=-"); + info!("Autobahn Testsuite - Client"); + info!("Fetching case count..."); + + info!("Starting tests..."); + + let mut args = std::env::args(); + + let run; + + if args.len() == 1 { + let case_count = get_case_count(); + run = 1..=case_count; + } else { + let test_number = args.nth(1).unwrap().parse().unwrap(); + run = test_number..=test_number; + } + + info!("Running tests ({:?}) ...", run); + + for test in run { + match run_test(test) { + Ok(_) => {} + Err(e) => match e { + MessageReadError::IoError(e) => { + error!("io error on test {}: {}", test, e); + }, + MessageReadError::FrameReadError(e) => { + error!("frame read error on test {}: {}", test, e); + }, + MessageReadError::ContinuationOutsideFragment => { + error!("continuation outside fragment on test {}", test); + }, + MessageReadError::FrameWriteError(e) => { + error!("frame write error on test {}: {}", test, e); + }, + _ => {} + } + } + } + + info!("Tests complete, generating reports..."); + update_reports(); + info!("All done!"); +} \ No newline at end of file diff --git a/hornbeam/src/frame/frame_ops.rs b/hornbeam/src/frame/frame_ops.rs new file mode 100644 index 0000000..a53faee --- /dev/null +++ b/hornbeam/src/frame/frame_ops.rs @@ -0,0 +1,44 @@ +use crate::frame::{Frame, Message, Opcode}; + +pub trait AsFrame { + /// Gets a Frame for this type, ready to be sent over the network + fn as_frame(&self, mask: bool) -> Frame; +} +pub trait FromFrame { + /// Converts a Frame received over the network into this type, to be passed to the application + fn from_frame(frame: &Frame) -> Self; +} + +impl AsFrame for Message { + fn as_frame(&self, mask: bool) -> Frame { + let (payload, opcode) = match self { + Message::Text(txt) => (txt.as_bytes().to_vec(), Opcode::Text), + Message::Binary(bin) => (bin.clone(), Opcode::Binary), + Message::Ping(bin) => (bin.clone(), Opcode::Ping), + Message::Pong(bin) => (bin.clone(), Opcode::Pong) + }; + Frame { + fin: true, + rsv1: false, + rsv2: false, + rsv3: false, + opcode, + mask, + payload_len: payload.len() as u64, + masking_key: if mask { Some(crate::random::masking_key()) } else { None }, + payload_data: payload, + } + } +} +impl FromFrame for Message { + fn from_frame(frame: &Frame) -> Self { + match frame.opcode { + Opcode::Continuation => panic!("Message::from_frame called with a continuation frame"), + Opcode::Text => Self::Text(String::from_utf8_lossy(&frame.payload_data).to_string()), + Opcode::Binary => Self::Binary(frame.payload_data.clone()), + Opcode::ConnectionClose => panic!("Message::from_frame called with a close frame"), + Opcode::Ping => Self::Ping(frame.payload_data.clone()), + Opcode::Pong => Self::Pong(frame.payload_data.clone()) + } + } +} \ No newline at end of file diff --git a/hornbeam/src/frame/mod.rs b/hornbeam/src/frame/mod.rs index 3964de0..e3d7586 100644 --- a/hornbeam/src/frame/mod.rs +++ b/hornbeam/src/frame/mod.rs @@ -8,39 +8,69 @@ pub mod read; pub mod length; /// Contains functions for frame masking pub mod mask; +/// Contains the AsFrame and FromFrame traits and their implementations for Message +pub mod frame_ops; #[derive(PartialEq, Eq, Clone, Debug)] pub struct Frame { + /// Is this a continuation packet? pub fin: bool, // 1 bit + /// Reserved bit 1 pub rsv1: bool, // 1 bit + /// Reserved bit 2 pub rsv2: bool, // 1 bit + /// Reserved bit 3 pub rsv3: bool, // 1 bit + /// Message opcode pub opcode: Opcode, // 4 bits // -- byte boundary -- + /// Is this message masked? pub mask: bool, // 1 bit + /// How long is the payload pub payload_len: u64, // 7 bits, or 7 + 16 bits, or 7 + 64 bits // -- byte boundary -- + /// If masked, what is the masking key? pub masking_key: Option<[u8; 4]>, // 4 bytes // -- byte boundary -- + /// Payload pub payload_data: Vec } #[derive(Clone, PartialEq, Eq, Debug)] #[repr(u8)] pub enum Opcode { + /// This message is a continuation of a previous packet Continuation = 0x0, + /// This message is a text packet Text = 0x1, + /// This message is a binary packet Binary = 0x2, + /// This message is a connection close packet ConnectionClose = 0x8, + /// This message is a ping Ping = 0x9, + /// This message is a pong Pong = 0xa } pub trait AsBit { + /// Converts the type into a single-bit representation, using the LSB (rightmost) bit. fn as_bit(&self) -> u8; } impl AsBit for bool { fn as_bit(&self) -> u8 { if *self { 1u8 } else { 0u8 } } +} + +#[derive(Clone, PartialEq, Eq, Debug)] +pub enum Message { + /// A UTF-8 text message + Text(String), + /// An arbitrary binary message + Binary(Vec), + /// A ping message with arbitrary contents + Ping(Vec), + /// A pong message with arbitrary contents + Pong(Vec) } \ No newline at end of file diff --git a/hornbeam/src/frame/read.rs b/hornbeam/src/frame/read.rs index b7a7c68..f1afe78 100644 --- a/hornbeam/src/frame/read.rs +++ b/hornbeam/src/frame/read.rs @@ -32,41 +32,26 @@ impl FrameReadable for R { fn read_frame(&mut self) -> Result { // read the first two bytes + trace!("frame read : tinyheader"); let mut first_two = [0u8; 2]; + self.read_exact(&mut first_two)?; + trace!("first two: {:x?}", first_two); + let fin = (first_two[0] & 0b1000_0000) >> 7; let rsv1 = (first_two[0] & 0b0100_0000) >> 6; let rsv2 = (first_two[0] & 0b0010_0000) >> 5; let rsv3 = (first_two[0] & 0b0001_0000) >> 4; - let opcode = first_two[0] & 0b0000_1111; + let opcode_u8 = first_two[0] & 0b0000_1111; - let do_mask = (first_two[1] & 0b1000_0000) >> 7; - let length_without_mask = first_two[1] & 0b0111_1111; + trace!("Frame:"); + trace!(" FIN: {}", fin); + trace!(" RSV1: {}", rsv1); + trace!(" RSV2: {}", rsv2); + trace!(" RSV3: {}", rsv3); - - let length: u64 = WireLength::read_length(length_without_mask, self)?.into(); - - - let mut mask_key = None; - - if do_mask == 1 { - let mut buf = [0u8; 4]; - - self.read_exact(&mut buf)?; - - mask_key = Some(buf); - } - - let mut payload = vec![0u8; length as usize]; - - self.read_exact(&mut payload)?; - - if let Some(key) = mask_key { - mask(&mut payload, key); - } - - let opcode = match opcode { + let opcode = match opcode_u8 { 0 => Opcode::Continuation, 1 => Opcode::Text, 2 => Opcode::Binary, @@ -76,6 +61,46 @@ impl FrameReadable for R { _ => return Err(FrameReadError::InvalidOpcode) }; + trace!(" OP: {} = {:?}", opcode_u8, opcode); + + let do_mask = (first_two[1] & 0b1000_0000) >> 7; + let length_without_mask = first_two[1] & 0b0111_1111; + + trace!(" Mask: {}", do_mask); + trace!(" Length: {}", length_without_mask); + + let length: u64 = WireLength::read_length(length_without_mask, self)?.into(); + + trace!(" Parsed length: {}", length); + + let mut mask_key = None; + + if do_mask == 1 { + let mut buf = [0u8; 4]; + + trace!("reading mask"); + + self.read_exact(&mut buf)?; + + mask_key = Some(buf); + } + + let mut payload; + + if length != 0 { + payload = vec![0u8; length as usize]; + + self.read_exact(&mut payload)?; + + trace!("payload read {:x?}", payload); + + if let Some(key) = mask_key { + mask(&mut payload, key); + } + } else { + payload = vec![]; + } + Ok(Frame { fin: fin == 1, rsv1: rsv1 == 1, @@ -93,8 +118,10 @@ impl FrameReadable for R { #[cfg(test)] mod tests { use std::io::{Cursor, Write}; + use std::sync::Once; use crate::frame::{Frame, Opcode}; use crate::frame::wire::{FrameReadable, FrameWritable}; + use crate::tests::setup_logger; #[test] fn decoding_6455_5_7_a() { @@ -132,5 +159,24 @@ mod tests { }); } + #[test] + fn decoding_autobahn_1_1_1_close_frame() { + setup_logger(); + + let mut buf: Cursor> = Cursor::new(vec![0x88, 0x0c, 0x03, 0xe9, 0x47, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x77, 0x61, 0x79]); + + assert_eq!(buf.read_frame().unwrap(), Frame { + fin: true, + rsv1: false, + rsv2: false, + rsv3: false, + opcode: Opcode::ConnectionClose, + mask: false, + payload_len: 12, + masking_key: None, + payload_data: [3, 233, 71, 111, 105, 110, 103, 32, 65, 119, 97, 121].to_vec(), + }); + } + // 5.7(e) and 5.7(f) are skipped because they are impractical to write } \ No newline at end of file diff --git a/hornbeam/src/frame/write.rs b/hornbeam/src/frame/write.rs index 5dd18a1..dec53b0 100644 --- a/hornbeam/src/frame/write.rs +++ b/hornbeam/src/frame/write.rs @@ -35,13 +35,21 @@ impl FrameWritable for W { let flags: u8 = (frame.fin.as_bit() << 7) | (frame.rsv1.as_bit() << 6) | (frame.rsv2.as_bit() << 5) | (frame.rsv3.as_bit() << 4); let opcode: u8 = (frame.opcode.clone()) as u8; let byte_0 = flags | opcode; + + trace!("wrote frame tinyheader, {:b}", byte_0); + self.write_all(&[byte_0])?; // write the mask bit and length WireLength::from(frame.payload_len).write_length(frame.mask, self)?; + trace!("wrote mask and length {}", frame.payload_len); + let mut data = frame.payload_data.clone(); + trace!("data length: {}", data.len()); + trace!("data: {:x?}", data); + if frame.mask { if let Some(key) = frame.masking_key { self.write_all(&key)?; diff --git a/hornbeam/src/handshake_client.rs b/hornbeam/src/handshake_client.rs index 07e064f..ba26d84 100644 --- a/hornbeam/src/handshake_client.rs +++ b/hornbeam/src/handshake_client.rs @@ -1,12 +1,14 @@ use std::error::Error; use std::fmt::{Display, Formatter}; use std::io; -use std::io::{Read, Write}; +use std::io::{BufReader, Chain, Cursor, Read, Write}; use std::string::FromUtf8Error; use url::Url; use crate::b64::impl_b64::base64_encode; use crate::handshake_common::{derive_handshake_response, HeaderMap, WEBSOCKET_PROTOCOL_VERSION}; use crate::random::websocket_client_key; +use crate::splittable::Splittable; +use crate::stream::WebsocketStream; /// Contains the information needed to perform the WebSocket client handshake. Create from a URL with `ClientConnectionInfo::from(url)`, /// or build from it's components with `ClientConnectionInfo::build()`. @@ -147,13 +149,25 @@ impl ClientConnectionInfo { /// # Errors /// This function will return an error if the handshake fails for any reason. /// See `ClientHandshakeError` for more details. - pub fn send_handshake(&self, w: &mut W) -> Result<(), ClientHandshakeSendError> { - let resource_url = self.url.path().to_string() + self.url.query().unwrap_or(""); + pub fn send_handshake(&self, w: &mut W) -> Result<(), ClientHandshakeSendError> { + let mut resource_url = self.url.path().to_string(); + + if let Some(query) = self.url.query() { + resource_url += "?"; + resource_url += query; + } + + debug!("resource URL: {}", resource_url); + + let mut host = self.url.host_str().ok_or(ClientHandshakeSendError::UrlMissingHost)?.to_string(); + if let Some(port) = self.url.port() { + host += &format!(":{}", port); + } // send the handshake: // 1. HTTP GET write!(w, "GET {resource_url} HTTP/1.1\r\n")?; - write!(w, "Host: {}\r\n", self.url.host_str().ok_or(ClientHandshakeSendError::UrlMissingHost)?)?; + write!(w, "Host: {}\r\n", host)?; write!(w, "Upgrade: websocket\r\n")?; write!(w, "Connection: upgrade\r\n")?; write!(w, "Sec-WebSocket-Key: {}\r\n", crate::b64::impl_b64::base64_encode(&self.websocket_key))?; @@ -174,29 +188,51 @@ impl ClientConnectionInfo { Ok(()) } - /// Read the WebSocket handshake response from the given stream. + /// Read the WebSocket handshake response from the given stream, upgrading it to a WebsocketStream. /// # Errors /// This function will return an error in many circumstances. See `ClientHandshakeRecvError` for details. - pub fn read_handshake(&self, r: &mut R) -> Result<(), ClientHandshakeRecvError> { + pub fn read_handshake(&self, mut stream: S) -> Result>, S>, S>, ClientHandshakeRecvError> { // read until we see the double \r\n let mut read_bytes = vec![]; let mut read_buf = [0u8; 1024]; + + let mut extra_bytes = vec![]; + loop { - let read = r.read(&mut read_buf)?; + let read = stream.read(&mut read_buf)?; + + debug!("read {}", read); if read == 0 { return Err(ClientHandshakeRecvError::UnexpectedEOF); } - read_bytes.extend_from_slice(&read_buf[0..read-1]); + debug!("{:x?}", &read_buf[0..read-1]); + + read_bytes.extend_from_slice(&read_buf[0..read]); if read_bytes.ends_with(&[0x0d, 0x0a, 0x0d]) || read_bytes.ends_with(&[0x0d, 0x0a, 0x0d, 0x0a]) { // we have hit the end of the server ws handshake break; } + // we might have read a bit into the first packet + // go through one by one to see if it was there + // this is ok, because its the handshake, and its ok to be slow here + let mut should_break = false; + for i in 0..read_bytes.len() { + let read_slice = &read_bytes[0..i+1]; + if read_slice.ends_with(&[0x0d, 0x0a, 0x0d, 0x0a]) { + extra_bytes = read_bytes[i+1..].to_vec(); + debug!("extra bytes: {:x?}", extra_bytes); + read_bytes = read_slice.to_vec(); + should_break = true; + break; + } + } + if should_break { break; } } - debug!("read {:?} bytes from server, parsing as handshake", read_bytes); + debug!("read {:x?} bytes from server, parsing as handshake", read_bytes); let handshake_response = String::from_utf8(read_bytes)?; @@ -259,7 +295,7 @@ impl ClientConnectionInfo { return Err(ClientHandshakeRecvError::MissingSecWebsocketAccept); } - Ok(()) + Ok(WebsocketStream::create(true, stream, extra_bytes)) } } @@ -280,14 +316,9 @@ mod tests { use std::io::{Cursor}; use std::net::TcpStream; use std::str::FromStr; - use std::sync::Once; use url::Url; use crate::handshake_client::ClientConnectionInfo; - - static LOG: Once = Once::new(); - fn setup_logger() { - LOG.call_once(|| simple_logger::init().unwrap()); - } + use crate::tests::setup_logger; #[test] fn client_handshake_test() { @@ -329,7 +360,7 @@ mod tests { let mut tcpstream = TcpStream::connect("10.16.1.1:3204").unwrap(); client.send_handshake(&mut tcpstream).unwrap(); - client.read_handshake(&mut tcpstream).unwrap(); + client.read_handshake(tcpstream).unwrap(); panic!(); } diff --git a/hornbeam/src/lib.rs b/hornbeam/src/lib.rs index b7f1243..2883ba4 100644 --- a/hornbeam/src/lib.rs +++ b/hornbeam/src/lib.rs @@ -84,4 +84,17 @@ pub mod random; pub(crate) mod b64; /// WebSocket frame encoding and decoding -pub mod frame; \ No newline at end of file +pub mod frame; + +/// Adds a generic TryClone method to allow for generalization of it +pub mod splittable; + +#[cfg(test)] +pub(crate) mod tests { + use std::sync::Once; + + static LOG: Once = Once::new(); + pub(crate) fn setup_logger() { + LOG.call_once(|| simple_logger::init().unwrap()); + } +} \ No newline at end of file diff --git a/hornbeam/src/splittable.rs b/hornbeam/src/splittable.rs new file mode 100644 index 0000000..21d1502 --- /dev/null +++ b/hornbeam/src/splittable.rs @@ -0,0 +1,10 @@ +use std::net::TcpStream; + +pub trait Splittable { + fn try_split(&self) -> std::io::Result where Self: Sized; +} +impl Splittable for TcpStream { + fn try_split(&self) -> std::io::Result where Self: Sized { + self.try_clone() + } +} \ No newline at end of file diff --git a/hornbeam/src/stream.rs b/hornbeam/src/stream.rs index 0c723a8..3bab287 100644 --- a/hornbeam/src/stream.rs +++ b/hornbeam/src/stream.rs @@ -1,4 +1,301 @@ -/// An upgraded TCP stream, used to send WebSocket frames. -pub struct WebsocketStream { - enable_masking: bool +use std::error::Error; +use std::fmt::{Display, Formatter}; +use std::io; +use std::io::{Chain, Cursor, ErrorKind, Read, Write}; +use std::string::FromUtf8Error; +use crate::frame::{Frame, Message, Opcode}; +use crate::frame::frame_ops::{AsFrame, FromFrame}; +use crate::frame::read::FrameReadError; +use crate::frame::wire::{FrameReadable, FrameWritable}; +use crate::frame::write::FrameWriteError; +use crate::random::masking_key; +use crate::splittable::Splittable; + +/// An upgraded TCP stream, used to send WebSocket messages. +pub struct WebsocketStream { + enable_masking: bool, + read: R, + write: W, + is_in_fragment: bool, + fragment_buf: Vec, + fragment_opcode: Opcode, + closing: bool, + closed: bool, + close_code: Option, + close_message: Option +} + +impl WebsocketStream>, S>, S> { + pub(crate) fn create(mask: bool, stream: S, extra_bytes: Vec) -> Self { + let extra_bytes_cur = Cursor::new(extra_bytes); + Self { + enable_masking: mask, + read: extra_bytes_cur.chain(stream.try_split().unwrap()), + write: stream, + is_in_fragment: false, + fragment_buf: vec![], + fragment_opcode: Opcode::Continuation, + closed: false, + closing: false, + close_code: None, + close_message: None + } + } +} + +impl FrameWritable for WebsocketStream { + type Error = FrameWriteError; + + fn write_frame(&mut self, frame: &Frame) -> Result<(), Self::Error> { + self.write.write_frame(frame) + } +} + +impl FrameReadable for WebsocketStream { + type Error = FrameReadError; + + fn read_frame(&mut self) -> Result { + loop { + let res = self.read.read_frame(); + match res { + Ok(f) => return Ok(f), + Err(e) => { + match e { + FrameReadError::IoError(e) if matches!(e.kind(), ErrorKind::WouldBlock) => { + continue; + } + _ => return Err(e) + } + } + } + } + } +} + +pub trait MessageReadable: FrameReadable { + type Err; + + fn read_message(&mut self) -> Result; +} +pub trait MessageWritable: FrameWritable { + type Err; + + fn write_message(&mut self, msg: impl AsFrame) -> Result<(), Self::Err>; +} + +#[derive(Debug)] +pub enum MessageReadError { + /// An IO error occured while reading the message + IoError(io::Error), + /// An error occured while reading the frame + FrameReadError(FrameReadError), + /// Received a continuation frame while not processing a fragment + ContinuationOutsideFragment, + /// The connection was closed + ConnectionClosed { + code: Option, + message: Option + }, + /// There was an error writing a response to an internal frame to the stream + FrameWriteError(FrameWriteError), + /// There was an error parsing a UTF-8 byte literal + FromUtf8Error(FromUtf8Error) +} +impl Display for MessageReadError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + Self::IoError(e) => write!(f, "io error: {}", e), + Self::FrameReadError(e) => write!(f, "frame read error: {}", e), + Self::ContinuationOutsideFragment => write!(f, "received continuation frame while not in fragment"), + Self::ConnectionClosed { code, message } => { + write!(f, "channel closed (code: {:?}, message: {:?})", code, message) + }, + Self::FrameWriteError(e) => write!(f, "frame write error: {}", e), + Self::FromUtf8Error(e) => write!(f, "invalid UTF-8: {}", e) + } + } +} +impl Error for MessageReadError {} +impl From for MessageReadError { + fn from(value: io::Error) -> Self { + Self::IoError(value) + } +} +impl From for MessageReadError { + fn from(value: FrameReadError) -> Self { + Self::FrameReadError(value) + } +} +impl From for MessageReadError { + fn from(value: FrameWriteError) -> Self { + Self::FrameWriteError(value) + } +} +impl From for MessageReadError { + fn from(value: FromUtf8Error) -> Self { + Self::FromUtf8Error(value) + } +} + +impl MessageReadable for WebsocketStream { + type Err = MessageReadError; + + fn read_message(&mut self) -> Result { + // loop until we have a full message to send upwards + loop { + debug!("reading a frame"); + // read a frame + let frame = self.read_frame()?; + + debug!("read frame {} bytes, opcode {:?}", frame.payload_len, frame.opcode); + + if frame.opcode == Opcode::Continuation && self.is_in_fragment { + self.fragment_buf.extend_from_slice(&frame.payload_data); + if frame.fin { + // fragment over + let mut frame = frame; + frame.payload_data = self.fragment_buf.clone(); + frame.opcode = self.fragment_opcode.clone(); + frame.payload_len = frame.payload_data.len() as u64; + self.is_in_fragment = false; + self.fragment_buf = vec![]; + self.fragment_opcode = Opcode::Continuation; + return Ok(Message::from_frame(&frame)); + } + // fragment not over, keep loopin' + continue; + } + + return match frame.opcode { + Opcode::Continuation => Err(MessageReadError::ContinuationOutsideFragment), + Opcode::Text | Opcode::Binary | Opcode::Ping | Opcode::Pong => Ok(Message::from_frame(&frame)), + Opcode::ConnectionClose => { + if !self.closing { + // send a response + self.write_frame(&Frame { + fin: true, + rsv1: false, + rsv2: false, + rsv3: false, + opcode: Opcode::ConnectionClose, + mask: self.enable_masking, + payload_len: 2, + masking_key: if self.enable_masking { Some(masking_key()) } else { None }, + payload_data: vec![0x03, 0xe8], + })?; + } + self.closed = true; + if frame.payload_len == 2 { + // just has a close reason + let close_code = [frame.payload_data[0], frame.payload_data[1]]; + let close_code = u16::from_be_bytes(close_code); + self.close_code = Some(close_code); + return Err(MessageReadError::ConnectionClosed { + code: Some(close_code), + message: None + }) + } else if frame.payload_len > 2 { + // close reason and message + let close_code = [frame.payload_data[0], frame.payload_data[1]]; + let close_code = u16::from_be_bytes(close_code); + + let close_message = &frame.payload_data[2..]; + let close_message = String::from_utf8(close_message.to_vec())?; + self.close_code = Some(close_code); + self.close_message = Some(close_message.clone()); + return Err(MessageReadError::ConnectionClosed { + code: Some(close_code), + message: Some(close_message) + }) + } + Err(MessageReadError::ConnectionClosed { + code: None, + message: None + }) + } + } + } + } +} + +#[derive(Debug)] +pub enum MessageWriteError { + /// An IO error occured while reading the message + IoError(io::Error), + /// The connection is closed + ConnectionClosed { + code: Option, + message: Option + }, + /// There was an error writing the frame + FrameWriteError(FrameWriteError), +} +impl Display for MessageWriteError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + Self::IoError(e) => write!(f, "io error: {}", e), + Self::ConnectionClosed { code, message } => { + write!(f, "channel closed (code: {:?}, message: {:?})", code, message) + }, + Self::FrameWriteError(e) => write!(f, "frame write error: {}", e), + } + } +} +impl Error for MessageWriteError {} +impl From for MessageWriteError { + fn from(value: io::Error) -> Self { + Self::IoError(value) + } +} +impl From for MessageWriteError { + fn from(value: FrameWriteError) -> Self { + Self::FrameWriteError(value) + } +} + +impl MessageWritable for WebsocketStream { + type Err = MessageWriteError; + + fn write_message(&mut self, msg: impl AsFrame) -> Result<(), Self::Err> { + if self.closed { + return Err(MessageWriteError::ConnectionClosed { + code: self.close_code, + message: self.close_message.clone() + }); + } + + self.write_frame(&msg.as_frame(self.enable_masking))?; + + Ok(()) + } +} + +impl WebsocketStream { + pub fn close(&mut self, code: Option, message: Option) -> Result<(), MessageWriteError> { + self.closing = true; + self.close_code = code; + self.close_message = message; + + let mut payload = vec![]; + if let Some(c) = code { + payload.extend_from_slice(&c.to_be_bytes()); + } + if let Some(t) = self.close_message.as_ref() { + payload.extend_from_slice(&t.as_bytes()) + } + + self.write_frame(&Frame { + fin: true, + rsv1: false, + rsv2: false, + rsv3: false, + opcode: Opcode::ConnectionClose, + mask: self.enable_masking, + payload_len: payload.len() as u64, + masking_key: if self.enable_masking { Some(masking_key()) } else { None }, + payload_data: payload, + })?; + + Ok(()) + } } \ No newline at end of file