test: fix `http-upgrade-agent` flakiness
authorSantiago Gimeno <santiago.gimeno@gmail.com>
Sun, 3 Jan 2016 17:10:22 +0000 (18:10 +0100)
committerMyles Borins <mborins@us.ibm.com>
Mon, 15 Feb 2016 19:30:23 +0000 (11:30 -0800)
It's not guaranteed that the socket data is received in the same chunk
as the upgrade response. Listen for the `data` event to make sure all
the data is received.

PR-URL: https://github.com/nodejs/node/pull/4520
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
test/parallel/test-http-upgrade-agent.js

index 84cfee9..83f783a 100644 (file)
@@ -45,9 +45,14 @@ srv.listen(common.PORT, '127.0.0.1', function() {
   req.end();
 
   req.on('upgrade', function(res, socket, upgradeHead) {
-    // XXX: This test isn't fantastic, as it assumes that the entire response
-    //      from the server will arrive in a single data callback
-    assert.equal(upgradeHead, 'nurtzo');
+    var recvData = upgradeHead;
+    socket.on('data', function(d) {
+      recvData += d;
+    });
+
+    socket.on('close', common.mustCall(function() {
+      assert.equal(recvData, 'nurtzo');
+    }));
 
     console.log(res.headers);
     var expectedHeaders = { 'hello': 'world',