| 
					
				 | 
			
			
				@@ -33,7 +33,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var assert = require('assert'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var grpc = require('bindings')('grpc.node'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var port_picker = require('../port_picker'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * This is used for testing functions with multiple asynchronous calls that 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -58,143 +57,139 @@ function multiDone(done, count) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 describe('end-to-end', function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   it('should start and end a request without error', function(complete) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    port_picker.nextAvailablePort(function(port) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var server = new grpc.Server(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var done = multiDone(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        complete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server.shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.addHttp2Port(port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var channel = new grpc.Channel(port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var deadline = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      deadline.setSeconds(deadline.getSeconds() + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var status_text = 'xyz'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var call = new grpc.Call(channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               'dummy_method', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               deadline); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      call.startInvoke(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                           grpc.completionType.INVOKE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var server = new grpc.Server(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var done = multiDone(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server.shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var port_num = server.addHttp2Port('0.0.0.0:0'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var channel = new grpc.Channel('localhost:' + port_num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var deadline = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    deadline.setSeconds(deadline.getSeconds() + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var status_text = 'xyz'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var call = new grpc.Call(channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             'dummy_method', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             deadline); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    call.startInvoke(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         grpc.completionType.INVOKE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        call.writesDone(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      call.writesDone(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                           grpc.completionType.CLIENT_METADATA_READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         grpc.completionType.CLIENT_METADATA_READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var status = event.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(status.code, grpc.status.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(status.details, status_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    server.requestCall(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var server_call = event.call; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.notEqual(server_call, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.serverAccept(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var status = event.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(status.code, grpc.status.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(status.details, status_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.serverEndInitialMetadata(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.startWriteStatus( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          grpc.status.OK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          status_text, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.requestCall(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var server_call = event.call; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.notEqual(server_call, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.serverAccept(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.serverEndInitialMetadata(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.startWriteStatus( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            grpc.status.OK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            status_text, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  it('should send and receive data without error', function(complete) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var req_text = 'client_request'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var reply_text = 'server_response'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var server = new grpc.Server(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var done = multiDone(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      complete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server.shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var port_num = server.addHttp2Port('0.0.0.0:0'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var channel = new grpc.Channel('localhost:' + port_num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var deadline = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    deadline.setSeconds(deadline.getSeconds() + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var status_text = 'success'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var call = new grpc.Call(channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             'dummy_method', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             deadline); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    call.startInvoke(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         grpc.completionType.INVOKE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      call.startWrite( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          new Buffer(req_text), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               grpc.completionType.WRITE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            call.writesDone(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      call.startRead(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.type, grpc.completionType.READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.data.toString(), reply_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         grpc.completionType.CLIENT_METADATA_READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var status = event.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(status.code, grpc.status.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(status.details, status_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  it('should send and receive data without error', function(complete) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    port_picker.nextAvailablePort(function(port) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var req_text = 'client_request'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var reply_text = 'server_response'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var server = new grpc.Server(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var done = multiDone(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        complete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server.shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.addHttp2Port(port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var channel = new grpc.Channel(port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var deadline = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      deadline.setSeconds(deadline.getSeconds() + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var status_text = 'success'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var call = new grpc.Call(channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               'dummy_method', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               deadline); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      call.startInvoke(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                           grpc.completionType.INVOKE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        call.startWrite( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            new Buffer(req_text), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    server.requestCall(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var server_call = event.call; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      assert.notEqual(server_call, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.serverAccept(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.serverEndInitialMetadata(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      server_call.startRead(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.type, grpc.completionType.READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert.strictEqual(event.data.toString(), req_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        server_call.startWrite( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new Buffer(reply_text), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  grpc.completionType.WRITE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              call.writesDone(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                   grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              assert.strictEqual(event.data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              server_call.startWriteStatus( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  grpc.status.OK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  status_text, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        call.startRead(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.type, grpc.completionType.READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.data.toString(), reply_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                           grpc.completionType.CLIENT_METADATA_READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      },function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var status = event.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(status.code, grpc.status.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(status.details, status_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      server.requestCall(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var server_call = event.call; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert.notEqual(server_call, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.serverAccept(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.type, grpc.completionType.FINISHED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.serverEndInitialMetadata(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        server_call.startRead(function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.type, grpc.completionType.READ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          assert.strictEqual(event.data.toString(), req_text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          server_call.startWrite( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              new Buffer(reply_text), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                   grpc.completionType.WRITE_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                assert.strictEqual(event.data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                   grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                server_call.startWriteStatus( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    grpc.status.OK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    status_text, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      assert.strictEqual(event.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                         grpc.completionType.FINISH_ACCEPTED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      assert.strictEqual(event.data, grpc.opError.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 |