Deleted Added
1import time
2import struct
3import unittest
4from unit.applications.lang.node import TestApplicationNode
5from unit.applications.websockets import TestApplicationWebsocket
6
7
8class TestNodeWebsockets(TestApplicationNode):

--- 12 unchanged lines hidden (view full) ---

21 'clear keepalive_interval',
22 )
23
24 self.skip_alerts.extend(
25 [r'socket close\(\d+\) failed']
26 )
27
28 def close_connection(self, sock):
29 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty soc')
30
31 self.ws.frame_write(sock, self.ws.OP_CLOSE, self.ws.serialize_close())
32
33 self.check_close(sock)
34
35 def check_close(self, sock, code=1000, no_close=False):
36 frame = self.ws.frame_read(sock)
37

--- 417 unchanged lines hidden (view full) ---

455 def test_node_websockets_2_7__2_9(self):
456 self.load('websockets/mirror')
457
458 # 2_7
459
460 _, sock, _ = self.ws.upgrade()
461
462 self.ws.frame_write(sock, self.ws.OP_PONG, '')
463 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', '2_7')
464
465 # 2_8
466
467 self.ws.frame_write(sock, self.ws.OP_PONG, 'unsolicited pong payload')
468 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', '2_8')
469
470 # 2_9
471
472 payload = 'ping payload'
473
474 self.ws.frame_write(sock, self.ws.OP_PONG, 'unsolicited pong payload')
475 self.ws.frame_write(sock, self.ws.OP_PING, payload)
476

--- 49 unchanged lines hidden (view full) ---

526 self.ws.frame_write(sock, self.ws.OP_TEXT, payload, rsv2=True)
527 self.ws.frame_write(sock, self.ws.OP_PING, '')
528
529 frame = self.ws.frame_read(sock)
530 self.check_frame(frame, True, self.ws.OP_TEXT, payload)
531
532 self.check_close(sock, 1002, no_close=True)
533
534 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty 3_2')
535 sock.close()
536
537 # 3_3
538
539 _, sock, _ = self.ws.upgrade()
540
541 self.ws.frame_write(sock, self.ws.OP_TEXT, payload)
542
543 frame = self.ws.frame_read(sock)
544 self.check_frame(frame, True, self.ws.OP_TEXT, payload)
545
546 self.ws.frame_write(
547 sock, self.ws.OP_TEXT, payload, rsv1=True, rsv2=True
548 )
549
550 self.check_close(sock, 1002, no_close=True)
551
552 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty 3_3')
553 sock.close()
554
555 # 3_4
556
557 _, sock, _ = self.ws.upgrade()
558
559 self.ws.frame_write(sock, self.ws.OP_TEXT, payload, chopsize=1)
560 self.ws.frame_write(
561 sock, self.ws.OP_TEXT, payload, rsv3=True, chopsize=1
562 )
563 self.ws.frame_write(sock, self.ws.OP_PING, '')
564
565 frame = self.ws.frame_read(sock)
566 self.check_frame(frame, True, self.ws.OP_TEXT, payload)
567
568 self.check_close(sock, 1002, no_close=True)
569
570 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty 3_4')
571 sock.close()
572
573 # 3_5
574
575 _, sock, _ = self.ws.upgrade()
576
577 self.ws.frame_write(
578 sock,

--- 169 unchanged lines hidden (view full) ---

748 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment2', fin=True)
749
750 frame = self.ws.frame_read(sock)
751 self.check_frame(frame, True, self.ws.OP_TEXT, 'fragment1fragment2')
752
753 # 5_4
754
755 self.ws.frame_write(sock, self.ws.OP_TEXT, 'fragment1', fin=False)
756 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', '5_4')
757 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment2', fin=True)
758
759 frame = self.ws.frame_read(sock)
760 self.check_frame(frame, True, self.ws.OP_TEXT, 'fragment1fragment2')
761
762 # 5_5
763
764 self.ws.frame_write(

--- 20 unchanged lines hidden (view full) ---

785 frame = self.ws.frame_read(sock)
786 self.check_frame(frame, True, self.ws.OP_TEXT, 'fragment1fragment2')
787
788 # 5_7
789
790 ping_payload = 'ping payload'
791
792 self.ws.frame_write(sock, self.ws.OP_TEXT, 'fragment1', fin=False)
793 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', '5_7')
794
795 self.ws.frame_write(sock, self.ws.OP_PING, ping_payload)
796
797 frame = self.ws.frame_read(sock)
798 self.check_frame(frame, True, self.ws.OP_PONG, ping_payload)
799
800 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment2', fin=True)
801

--- 167 unchanged lines hidden (view full) ---

969
970 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment3', fin=False)
971 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment4', fin=False)
972 self.ws.frame_write(sock, self.ws.OP_PING, 'pongme 2!')
973
974 frame = self.ws.frame_read(sock)
975 self.check_frame(frame, True, self.ws.OP_PONG, 'pongme 2!')
976
977 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', '5_20')
978 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment5')
979
980 self.check_frame(
981 self.ws.frame_read(sock),
982 True,
983 self.ws.OP_TEXT,
984 'fragment1fragment2fragment3fragment4fragment5',
985 )

--- 116 unchanged lines hidden (view full) ---

1102 # 7_1_3
1103
1104 _, sock, _ = self.ws.upgrade()
1105
1106 self.ws.frame_write(sock, self.ws.OP_CLOSE, self.ws.serialize_close())
1107 self.check_close(sock, no_close=True)
1108
1109 self.ws.frame_write(sock, self.ws.OP_PING, '')
1110 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty soc')
1111
1112 sock.close()
1113
1114 # 7_1_4
1115
1116 _, sock, _ = self.ws.upgrade()
1117
1118 self.ws.frame_write(sock, self.ws.OP_CLOSE, self.ws.serialize_close())
1119 self.check_close(sock, no_close=True)
1120
1121 self.ws.frame_write(sock, self.ws.OP_TEXT, payload)
1122 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty soc')
1123
1124 sock.close()
1125
1126 # 7_1_5
1127
1128 _, sock, _ = self.ws.upgrade()
1129
1130 self.ws.frame_write(sock, self.ws.OP_TEXT, 'fragment1', fin=False)
1131 self.ws.frame_write(sock, self.ws.OP_CLOSE, self.ws.serialize_close())
1132 self.check_close(sock, no_close=True)
1133
1134 self.ws.frame_write(sock, self.ws.OP_CONT, 'fragment2')
1135 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty soc')
1136
1137 sock.close()
1138
1139 # 7_1_6
1140
1141 _, sock, _ = self.ws.upgrade()
1142
1143 self.ws.frame_write(sock, self.ws.OP_TEXT, 'BAsd7&jh23' * 26 * 2 ** 10)
1144 self.ws.frame_write(sock, self.ws.OP_TEXT, payload)
1145 self.ws.frame_write(sock, self.ws.OP_CLOSE, self.ws.serialize_close())
1146
1147 self.recvall(sock, read_timeout=1)
1148
1149 self.ws.frame_write(sock, self.ws.OP_PING, '')
1150 self.assertEqual(self.recvall(sock, read_timeout=0.1), b'', 'empty soc')
1151
1152 sock.close()
1153
1154 # 7_3_1
1155
1156 _, sock, _ = self.ws.upgrade()
1157
1158 self.ws.frame_write(sock, self.ws.OP_CLOSE, '')

--- 297 unchanged lines hidden ---