Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(616)

Side by Side Diff: LayoutTests/http/tests/websocket/workers/resources/close.js

Issue 913273004: [OBSOLETE] De-flake the websocket/close.html layout test (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Hack around Mac timeouts. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « LayoutTests/http/tests/websocket/workers/close-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 function postResult(result, actual, expected) 1 importScripts("/js-test-resources/js-test.js", "../../resources/close-common.js" , "../../resources/mac-dropped-wakeup-workaround.js");
2 {
3 var message = result ? "PASS" : "FAIL";
4 message += ": worker: " + actual + " is ";
5 if (!result)
6 message += "not ";
7 message += expected;
8 postMessage(message);
9 }
10 2
11 function testPassed(message) 3 testClose();
12 {
13 postMessage("PASS: " + message);
14 }
15
16 function testFailed(message)
17 {
18 postMessage("FAIL: " + message);
19 }
20
21 function debug(message)
22 {
23 postMessage(message);
24 }
25
26 function shouldBe(actual, expected)
27 {
28 var _result = eval(actual + " == " + expected);
29 postResult(_result, actual, expected);
30 }
31
32 function shouldBeTrue(actual)
33 {
34 shouldBe(actual, "true");
35 }
36
37 function shouldBeFalse(actual)
38 {
39 shouldBe(actual, "false");
40 }
41
42 var exceptionName;
43 var exceptionProto;
44 var closeEvent;
45 var code;
46 var reason;
47 var result;
48 var invalidAccessErr = "InvalidAccessError";
49 var syntaxErr = "SyntaxError";
50 var normalClosure = 1000;
51 var abnormalClosure = 1006;
52 var url = "ws://127.0.0.1:8880/close";
53 var ws;
54 var testId;
55
56 var codeTestCodes = [
57 999, 1001, 2999, 5000, 65536 + 1000, 0x100000000 + 1000, 2999.9, NaN, "0", " 100", 1/0, -1/0, 0/0,
58 1000.0
59 ];
60
61 var reasonTestReasons = [
62 "123456789012345678901234567890123456789012345678901234567890123456789012345 6789012345678901234567890123456789012345678901234", // 124 Byte
63 "123456789012345678901234567890123456789012345678901234567890123456789012345 67890123456789012345678901234567890123456789012\u00a9", // length is 123, but 12 4 Byte in UTF-8
64 "123456789012345678901234567890123456789012345678901234567890123456789012345 678901234567890123456789012345678901234567890123", // 123 Byte
65 ];
66
67 var reasonTestResults = [
68 false,
69 false,
70 true,
71 ];
72
73 function handleOpen()
74 {
75 testFailed("handleOpen() was called.");
76 };
77
78 function handleError()
79 {
80 testFailed("handleError() was called.");
81 };
82
83 function handleClose()
84 {
85 testFailed("handleClose() was called.");
86 };
87
88 function handleMessage()
89 {
90 testFailed("handleMessage() was called.");
91 };
92
93 function setDefaultHandlers(ws)
94 {
95 ws.onopen = handleOpen;
96 ws.onerror = handleError;
97 ws.onclose = handleClose;
98 ws.onmessage = handleMessage;
99 }
100
101 function runCodeTest()
102 {
103 ws = new WebSocket(url);
104 setDefaultHandlers(ws);
105 for (var id = 0; id < codeTestCodes.length; id++) {
106 if (codeTestCodes[id] != normalClosure) {
107 debug("Invalid code test: " + id);
108 ws.onclose = handleClose;
109 } else {
110 ws.onclose = function (e)
111 {
112 debug("runCodeTest: onclose().");
113 closeEvent = e;
114 shouldBe("closeEvent.code", "abnormalClosure");
115 if (closeEvent.code == abnormalClosure)
116 runInvalidStringTest();
117 };
118 ws.onerror = function ()
119 {
120 testPassed("onerror() was called.");
121 };
122 }
123 try {
124 ws.close(codeTestCodes[id]);
125 } catch (e) {
126 debug("Code " + codeTestCodes[id] + " must cause " + invalidAccessEr r + '.');
127 exceptionName = e.name;
128 exceptionProto = Object.getPrototypeOf(e);
129 shouldBe("exceptionName", "invalidAccessErr");
130 }
131 }
132 }
133
134 function runInvalidStringTest()
135 {
136 // FIXME: unpaired surrogates throw SyntaxError
137 debug("Skip invalid string test.");
138 runReasonTest();
139 }
140
141 function runReasonTest()
142 {
143 ws = new WebSocket(url);
144 setDefaultHandlers(ws);
145 for (var id = 0; id < reasonTestReasons.length; id++) {
146 debug("Reason test: " + id);
147 if (!reasonTestResults[id]) {
148 debug(" with invalid reason: " + reasonTestReasons[id]);
149 ws.onclose = handleClose;
150 } else {
151 ws.onclose = function (e)
152 {
153 debug("runReasonTest: onclose().");
154 closeEvent = e;
155 shouldBe("closeEvent.code", "abnormalClosure");
156 if (closeEvent.code == abnormalClosure)
157 runCodeAndReasonTest();
158 };
159 ws.onerror = function ()
160 {
161 testPassed("onerror() was called.");
162 };
163 }
164 try {
165 ws.close(normalClosure, reasonTestReasons[id]);
166 } catch (e) {
167 debug("Reason " + reasonTestReasons[id] + " must cause " + syntaxErr + '.');
168 result = reasonTestResults[id];
169 exceptionName = e.name;
170 exceptionProto = Object.getPrototypeOf(e);
171 shouldBeFalse("result");
172 shouldBe("exceptionName", "syntaxErr");
173 }
174 }
175 }
176
177 function runCodeAndReasonTest()
178 {
179 var codes = [
180 1000,
181 3000,
182 4000,
183 4999
184 ];
185 var reasons = [
186 "OK, Bye!",
187 "3000",
188 "code is 4000",
189 "\u00a9 Google"
190 ];
191 (function test (id) {
192 debug("Code and reason test: " + id);
193 ws = new WebSocket(url);
194 setDefaultHandlers(ws);
195 ws.onopen = function ()
196 {
197 ws.close(codes[id], reasons[id]);
198 };
199 ws.onclose = function (e)
200 {
201 closeEvent = e;
202 code = codes[id];
203 reason = reasons[id];
204 debug("Code and reason must be");
205 debug(" code : " + code);
206 debug(" reason: " + reason);
207 shouldBeTrue("closeEvent.wasClean");
208 shouldBe("closeEvent.code", "code");
209 shouldBe("closeEvent.reason", "reason");
210 if (++id != codes.length)
211 test(id);
212 else
213 postMessage("DONE");
214 };
215 })(0);
216 }
217
218 runCodeTest();
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/websocket/workers/close-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698