[Groonga-commit] groonga/express-kotoumi [master] test: Test behaviors about request-response style command of Socket.IO API with multiple clients

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Feb 13 16:21:47 JST 2013


YUKI Hiroshi	2013-02-13 16:21:47 +0900 (Wed, 13 Feb 2013)

  New Revision: 5db5c00d2f2db667372841f4cc75d5b220005e29
  https://github.com/groonga/express-kotoumi/commit/5db5c00d2f2db667372841f4cc75d5b220005e29

  Log:
    test: Test behaviors about request-response style command of Socket.IO API with multiple clients

  Modified files:
    test/frontend-socket.io-adaptor.test.js
    test/test-utils.js

  Modified: test/frontend-socket.io-adaptor.test.js (+71 -48)
===================================================================
--- test/frontend-socket.io-adaptor.test.js    2013-02-13 16:06:09 +0900 (2f2b8d7)
+++ test/frontend-socket.io-adaptor.test.js    2013-02-13 16:21:47 +0900 (6a962c0)
@@ -155,11 +155,7 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-        return Deferred.parallel(
-          utils.createClientSocket(),
-          utils.createClientSocket(),
-          utils.createClientSocket()
-        );
+        return utils.createClientSockets(3);
       })
       .next(function(newClientSockets) {
         clientSockets = clientSockets.concat(newClientSockets);
@@ -204,21 +200,30 @@ suite('Socket.IO API', function() {
       });
   });
 
-  test('one way: single client, back to front', function(done) {
-    connection = utils.createMockedBackendConnection(testPlugin);
+  test('one way, back to front', function(done) {
+    connection = utils.createMockedBackendConnection(testPlugin, 3);
 
     var messages = [
       Math.random(),
       Math.random(),
+      Math.random(),
+      Math.random(),
+      Math.random(),
       Math.random()
     ];
     var clientReceiver = nodemock
           .mock('receive')
-            .takes(messages[0])
+            .takes(0, messages[0])
           .mock('receive')
-            .takes(messages[1])
+            .takes(1, messages[1])
           .mock('receive')
-            .takes(messages[2]);
+            .takes(2, messages[2])
+          .mock('receive')
+            .takes(0, messages[3])
+          .mock('receive')
+            .takes(1, messages[4])
+          .mock('receive')
+            .takes(2, messages[5]);
 
     var application = express();
     utils.setupServer(application)
@@ -228,22 +233,34 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-        return utils.createClientSocket();
+        return utils.createClientSockets(3);
       })
-      .next(function(newClientSocket) {
-        clientSockets.push(newClientSocket);
+      .next(function(newClientSockets) {
+        clientSockets = clientSockets.concat(newClientSockets);
         connection.assertThrows();
 
         clientSockets[0].on('publish-subscribe', function(data) {
-          clientReceiver.receive(data);
+          clientReceiver.receive(0, data);
+        });
+        clientSockets[1].on('publish-subscribe', function(data) {
+          clientReceiver.receive(1, data);
+        });
+        clientSockets[2].on('publish-subscribe', function(data) {
+          clientReceiver.receive(2, data);
         });
 
-        connection.controllers['publish-subscribe']
+        connection.controllers[0]['publish-subscribe']
           .trigger(createEnvelope('publish-subscribe', messages[0]));
-        connection.controllers['publish-subscribe']
+        connection.controllers[1]['publish-subscribe']
           .trigger(createEnvelope('publish-subscribe', messages[1]));
-        connection.controllers['publish-subscribe']
+        connection.controllers[2]['publish-subscribe']
           .trigger(createEnvelope('publish-subscribe', messages[2]));
+        connection.controllers[0]['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[3]));
+        connection.controllers[1]['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[4]));
+        connection.controllers[2]['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[5]));
       })
       .wait(0.01)
       .next(function() {
@@ -255,12 +272,15 @@ suite('Socket.IO API', function() {
       });
   });
 
-  test('request-response style message: single client', function(done) {
-    connection = utils.createMockedBackendConnection(testPlugin);
-    var onReceived = [{}, {}, {}];
+  test('request-response style message', function(done) {
+    connection = utils.createMockedBackendConnection(testPlugin, 3);
+    var onReceived = [{}, {}, {}, {}, {}, {}];
     var messages = [
       Math.random(),
       Math.random(),
+      Math.random(),
+      Math.random(),
+      Math.random(),
       Math.random()
     ];
     var clientReceiver;
@@ -273,48 +293,51 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-        return utils.createClientSocket();
+        return utils.createClientSockets(3);
       })
-      .next(function(newClientSocket) {
-        clientSockets.push(newClientSocket);
+      .next(function(newClientSockets) {
+        clientSockets = clientSockets.concat(newClientSockets);
         connection.assertThrows();
 
-        connection = connection
-          .mock('emitMessage')
-            .takes('request-response', messages[0], function() {}, {})
-            .ctrl(2, onReceived[0])
-          .mock('emitMessage')
-            .takes('request-response', messages[1], function() {}, {})
-            .ctrl(2, onReceived[1])
-          .mock('emitMessage')
-            .takes('request-response', messages[2], function() {}, {})
-            .ctrl(2, onReceived[2]);
+        for (var i = 0, maxi = messages.length; i < maxi; i++) {
+          connection = connection
+            .mock('emitMessage')
+              .takes('request-response', messages[i], function() {}, {})
+              .ctrl(2, onReceived[i]);
+        }
 
         clientSockets[0].emit('request-response', messages[0]);
-        clientSockets[0].emit('request-response', messages[1]);
-        clientSockets[0].emit('request-response', messages[2]);
+        clientSockets[1].emit('request-response', messages[1]);
+        clientSockets[2].emit('request-response', messages[2]);
+        clientSockets[0].emit('request-response', messages[3]);
+        clientSockets[1].emit('request-response', messages[4]);
+        clientSockets[2].emit('request-response', messages[5]);
       })
       .wait(0.01)
       .next(function() {
         connection.assertThrows();
 
         clientReceiver = nodemock
-          .mock('receive')
-            .takes(messages[0])
-          .mock('receive')
-            .takes(messages[1])
-          .mock('receive')
-            .takes(messages[2]);
+          .mock('receive').takes(0, messages[0])
+          .mock('receive').takes(1, messages[1])
+          .mock('receive').takes(2, messages[2])
+          .mock('receive').takes(0, messages[3])
+          .mock('receive').takes(1, messages[4])
+          .mock('receive').takes(2, messages[5]);
         clientSockets[0].on('request-response', function(data) {
-          clientReceiver.receive(data);
+          clientReceiver.receive(0, data);
+        });
+        clientSockets[1].on('request-response', function(data) {
+          clientReceiver.receive(1, data);
+        });
+        clientSockets[2].on('request-response', function(data) {
+          clientReceiver.receive(2, data);
         });
 
-        onReceived[0].trigger(null,
-                              createEnvelope('request-response', messages[0]));
-        onReceived[1].trigger(null,
-                              createEnvelope('request-response', messages[1]));
-        onReceived[2].trigger(null,
-                              createEnvelope('request-response', messages[2]));
+        for (var i = 0, maxi = messages.length; i < maxi; i++) {
+          onReceived[i].trigger(null,
+                                createEnvelope('request-response', messages[i]));
+        }
       })
       .wait(0.01)
       .next(function() {

  Modified: test/test-utils.js (+18 -0)
===================================================================
--- test/test-utils.js    2013-02-13 16:06:09 +0900 (ab65755)
+++ test/test-utils.js    2013-02-13 16:21:47 +0900 (759ffca)
@@ -137,6 +137,24 @@ function createClientSocket() {
   return deferred;
 }
 exports.createClientSocket = createClientSocket;
+Deferred.register('createClientSocket', function() { return createClientSocket.apply(this, arguments); });
+
+function createClientSockets(count) {
+  var sockets = [];
+  return Deferred.next(function loop() {
+    if (sockets.length < count) {
+      return createClientSocket()
+               .next(function(newSocket) {
+                 sockets.push(newSocket);
+               })
+               .next(loop);
+    } else {
+      return sockets;
+    }
+  });
+}
+exports.createClientSockets = createClientSockets;
+Deferred.register('createClientSockets', function() { return createClientSockets.apply(this, arguments); });
 
 function createMockedBackendConnection(socketCommands, clientCount) {
   socketCommands = socketCommands || {};
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index