THRIFT-2969
Client: nodejs
Patch: Andrew de Andrade
General node test cleanup and consolidation.
diff --git a/lib/nodejs/test/server.js b/lib/nodejs/test/server.js
old mode 100755
new mode 100644
index b6d28c7..2d53e11
--- a/lib/nodejs/test/server.js
+++ b/lib/nodejs/test/server.js
@@ -1,4 +1,4 @@
-#!/usr/bin/env nodejs
+#!/usr/bin/env node
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -21,53 +21,78 @@
var fs = require('fs');
var path = require('path');
-var thrift = require('thrift');
-var ThriftTest = require('./gen-nodejs/ThriftTest');
-var ThriftTestHandler = require('./test_handler').ThriftTestHandler;
-var ThriftTestHandlerPromise = require('./test_handler_promise').ThriftTestHandler;
-
+var thrift = require('../lib/thrift');
var program = require('commander');
+var helpers = require('./helpers');
+
+var ThriftTest = require('./gen-nodejs/ThriftTest');
+var SecondService = require('./gen-nodejs/SecondService');
+var ThriftTestHandler = require('./test_handler').AsyncThriftTestHandler;
+var ThriftTestHandlerPromise = require('./test_handler').SyncThriftTestHandler;
+var ttypes = require('./gen-nodejs/ThriftTest_types');
program
- .option('-p, --protocol <protocol>', 'Set thift protocol (binary|json) [protocol]')
- .option('-t, --transport <transport>', 'Set thift transport (buffered|framed) [transport]')
- .option('--port <port>', 'Set thift server port')
+ .option('-p, --protocol <protocol>', 'Set thift protocol (binary|json|compact)', 'binary')
+ .option('-t, --transport <transport>', 'Set thift transport (buffered|framed)', 'buffered')
.option('--ssl', 'use ssl transport')
+ .option('--port <port>', 'Set thift server port', 9090)
.option('--promise', 'test with promise style functions')
+ .option('-t, --type <type>', 'Select server type (tcp|multiplex|http)', 'tcp')
.parse(process.argv);
-var transport = thrift.TBufferedTransport;
-if (program.transport === "framed") {
- transport = thrift.TFramedTransport;
-}
+var port = program.port;
+var type = program.type;
+var ssl = program.ssl;
+var promise = program.promise;
-var protocol = thrift.TBinaryProtocol;
-if (program.protocol === "json") {
- protocol = thrift.TJSONProtocol;
-} else if (program.protocol === "compact") {
- protocol = thrift.TCompactProtocol;
-}
-
-var port = 9090;
-if (String(program.port) === "undefined"){
-} else {
- port = program.port;
-}
-
-var handler = ThriftTestHandler;
-if (program.promise) {
- handler = ThriftTestHandlerPromise;
-}
+var handler = program.promise ? ThriftTestHandler : ThriftTestHandlerPromise;
var options = {
- protocol: protocol,
- transport: transport
+ transport: helpers.transports[program.transport],
+ protocol: helpers.protocols[program.protocol]
};
-if (program.ssl) {
+
+if (type === 'http' || type ==='websocket') {
+ options.handler = handler;
+ options.processor = ThriftTest;
+
+ options = {
+ services: { "/test": options }
+ }
+}
+
+if (type === 'multiplex') {
+ var SecondServiceHandler = {
+ secondtestString: function(thing, result) {
+ console.log('testString(\'' + thing + '\')');
+ result(null, thing);
+ }
+ };
+
+ var processor = new thrift.MultiplexedProcessor();
+
+ processor.registerProcessor("ThriftTest",
+ new ThriftTest.Processor(ThriftTestHandler));
+
+ processor.registerProcessor("SecondService",
+ new SecondService.Processor(SecondServiceHandler));
+
+}
+
+if (ssl) {
options.tls = {
key: fs.readFileSync(path.resolve(__dirname, 'server.key')),
cert: fs.readFileSync(path.resolve(__dirname, 'server.crt'))
};
}
-thrift.createServer(ThriftTest, handler, options).listen(port);
+var server;
+if (type === 'tcp') {
+ server = thrift.createServer(ThriftTest, handler, options);
+} else if (type === 'multiplex') {
+ server = thrift.createMultiplexServer(processor, options);
+} else if (type === 'http' || type === 'websocket') {
+ server = thrift.createWebServer(options);
+}
+
+server.listen(port);