mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-06 18:35:19 +00:00
THRIFT-1967 Node.js tests don't cover all services
Patch: Henrique Mendonça align with the tests we have for the original JS and C++ libraries it also corrects two small bugs on the test server and add nodejs to travis and make check
This commit is contained in:
parent
4a35d4c4d3
commit
08c34eae97
@ -48,6 +48,10 @@ before_install:
|
||||
- sudo apt-get install -qq ghc6 cabal-install libghc6-binary-dev libghc6-network-dev libghc6-http-dev
|
||||
# Thrift Compiler for Windows
|
||||
- sudo apt-get install -qq mingw32 mingw32-binutils mingw32-runtime
|
||||
# node.js
|
||||
- sudo apt-get install -qq nodejs npm
|
||||
- sudo npm install nodeunit -g
|
||||
- cd lib/nodejs; npm install; cd ../..
|
||||
|
||||
|
||||
install:
|
||||
@ -66,4 +70,3 @@ script:
|
||||
# TODO: add these steps
|
||||
# - sh bootstrap.sh ; sh contrib/mingw-cross-compile.sh
|
||||
# - sh bootstrap.sh ; dpkg-buildpackage -tc
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
"main": "./lib/thrift",
|
||||
"engines": { "node": ">= 0.2.4" },
|
||||
"dependencies": {
|
||||
"node-int64": "0.3.x"
|
||||
"node-int64": "~0.3.0",
|
||||
"nodeunit": "~0.8.0"
|
||||
}
|
||||
}
|
||||
|
@ -28,8 +28,8 @@ check: stubs
|
||||
fi
|
||||
@if which node &> /dev/null ; then \
|
||||
echo " Testing Client/Server"; \
|
||||
timeout 2 $(MAKE) server & \
|
||||
sleep 1; $(MAKE) client; sleep 1; \
|
||||
timeout -s14 3 $(MAKE) server & \
|
||||
sleep 1; $(MAKE) client; sleep 2; \
|
||||
fi
|
||||
|
||||
clean-local:
|
||||
|
@ -31,7 +31,7 @@ connection.on('error', function(err) {
|
||||
assert(false, err);
|
||||
});
|
||||
|
||||
// deepEqual doesn't work for binary64
|
||||
// deepEqual doesn't work with fields using node-int64
|
||||
function checkRecursively(map1, map2) {
|
||||
if (typeof map1 !== 'function' && typeof map2 !== 'function') {
|
||||
if (!map1 || typeof map1 !== 'object') {
|
||||
@ -47,7 +47,7 @@ function checkRecursively(map1, map2) {
|
||||
|
||||
client.testVoid(function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(undefined, response);
|
||||
assert.equal(undefined, response); //void
|
||||
});
|
||||
|
||||
|
||||
@ -83,6 +83,18 @@ client.testByte(1, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(1, response);
|
||||
});
|
||||
client.testByte(0, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(0, response);
|
||||
});
|
||||
client.testByte(-1, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-1, response);
|
||||
});
|
||||
client.testByte(-127, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-127, response);
|
||||
});
|
||||
|
||||
client.testI32(-1, function(err, response) {
|
||||
assert( ! err);
|
||||
@ -93,12 +105,10 @@ client.testI64(5, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(5, response);
|
||||
});
|
||||
|
||||
client.testI64(-5, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-5, response);
|
||||
});
|
||||
|
||||
client.testI64(-34359738368, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-34359738368, response);
|
||||
@ -108,7 +118,6 @@ client.testDouble(-5.2098523, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-5.2098523, response);
|
||||
});
|
||||
|
||||
client.testDouble(7.012052175215044, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(7.012052175215044, response);
|
||||
@ -126,6 +135,7 @@ client.testStruct(out, function(err, response) {
|
||||
checkRecursively(out, response);
|
||||
});
|
||||
|
||||
|
||||
var out2 = new ttypes.Xtruct2();
|
||||
out2.byte_thing = 1;
|
||||
out2.struct_thing = out;
|
||||
@ -135,6 +145,7 @@ client.testNest(out2, function(err, response) {
|
||||
checkRecursively(out2, response);
|
||||
});
|
||||
|
||||
|
||||
var mapout = {};
|
||||
for (var i = 0; i < 5; ++i) {
|
||||
mapout[i] = i-10;
|
||||
@ -144,27 +155,103 @@ client.testMap(mapout, function(err, response) {
|
||||
assert.deepEqual(mapout, response);
|
||||
});
|
||||
|
||||
/*
|
||||
* TODO: testSet, testList, testEnum, testTypedef, testMapMap, testInsanity
|
||||
*/
|
||||
|
||||
|
||||
client.testException('ApplicationException', function(err, response) {
|
||||
//assert.equal('ApplicationException', err);
|
||||
assert( ! response);
|
||||
});
|
||||
|
||||
client.testException('Xception', function(err, response) {
|
||||
assert.equal('Xception', err.message);
|
||||
assert( ! response);
|
||||
});
|
||||
|
||||
client.testException('success', function(err, response) {
|
||||
var mapTestInput = {
|
||||
"a":"123", "a b":"with spaces ", "same":"same", "0":"numeric key",
|
||||
"longValue":stringTest, stringTest:"long key"
|
||||
};
|
||||
client.testStringMap(mapTestInput, function(err, response) {
|
||||
assert( ! err);
|
||||
//assert.equal('success', response);
|
||||
assert.deepEqual(mapTestInput, response);
|
||||
});
|
||||
|
||||
|
||||
var setTestInput = [1,2,3];
|
||||
client.testSet(setTestInput, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.deepEqual(setTestInput, response);
|
||||
});
|
||||
client.testList(setTestInput, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.deepEqual(setTestInput, response);
|
||||
});
|
||||
|
||||
client.testEnum(ttypes.Numberz.ONE, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(ttypes.Numberz.ONE, response);
|
||||
});
|
||||
|
||||
client.testTypedef(69, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(69, response);
|
||||
});
|
||||
|
||||
|
||||
var mapMapTest = {
|
||||
"4": {"1":1, "2":2, "3":3, "4":4},
|
||||
"-4": {"-4":-4, "-3":-3, "-2":-2, "-1":-1}
|
||||
};
|
||||
client.testMapMap(mapMapTest, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.deepEqual(mapMapTest, response);
|
||||
});
|
||||
|
||||
var crazy = new ttypes.Insanity({
|
||||
"userMap":{ "5":5, "8":8 },
|
||||
"xtructs":[new ttypes.Xtruct({
|
||||
"string_thing":"Goodbye4",
|
||||
"byte_thing":4,
|
||||
"i32_thing":4,
|
||||
"i64_thing":4
|
||||
}), new ttypes.Xtruct({
|
||||
"string_thing":"Hello2",
|
||||
"byte_thing":2,
|
||||
"i32_thing":2,
|
||||
"i64_thing":2
|
||||
})]
|
||||
});
|
||||
var insanity = {
|
||||
"1":{ "2": crazy, "3": crazy },
|
||||
"2":{ "6":{ "userMap":null, "xtructs":null } }
|
||||
};
|
||||
client.testInsanity(crazy, function(err, response) {
|
||||
assert( ! err);
|
||||
checkRecursively(insanity, response);
|
||||
});
|
||||
|
||||
|
||||
client.testException('TException', function(err, response) {
|
||||
//assert(err); //BUG?
|
||||
assert( ! response);
|
||||
});
|
||||
client.testException('Xception', function(err, response) {
|
||||
assert( ! response);
|
||||
assert.equal(err.errorCode, 1001);
|
||||
assert.equal('Xception', err.message);
|
||||
});
|
||||
client.testException('no Exception', function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(undefined, response); //void
|
||||
});
|
||||
|
||||
|
||||
client.testOneway(1, function(err, response) {
|
||||
assert(false); //should not answer
|
||||
});
|
||||
|
||||
/**
|
||||
* redo a simple test after the oneway to make sure we aren't "off by one" --
|
||||
* if the server treated oneway void like normal void, this next test will
|
||||
* fail since it will get the void confirmation rather than the correct
|
||||
* result. In this circumstance, the client will throw the exception:
|
||||
*
|
||||
* TApplicationException: Wrong method namea
|
||||
*/
|
||||
client.testI32(-1, function(err, response) {
|
||||
assert( ! err);
|
||||
assert.equal(-1, response);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("Server successfully tested!");
|
||||
connection.end();
|
||||
|
@ -123,7 +123,9 @@ var server = thrift.createServer(ThriftTest, {
|
||||
},
|
||||
|
||||
testInsanity: function(argument, result) {
|
||||
console.log('testInsanity()');
|
||||
console.log('testInsanity(');
|
||||
console.log(argument);
|
||||
console.log(')');
|
||||
|
||||
var hello = new ttypes.Xtruct();
|
||||
hello.string_thing = 'Hello2';
|
||||
@ -141,9 +143,7 @@ var server = thrift.createServer(ThriftTest, {
|
||||
crazy.userMap = [];
|
||||
crazy.userMap[ttypes.Numberz.EIGHT] = 8;
|
||||
crazy.userMap[ttypes.Numberz.FIVE] = 5;
|
||||
crazy.xtructs = [];
|
||||
crazy.xtructs.add(goodbye);
|
||||
crazy.xtructs.add(hello);
|
||||
crazy.xtructs = [goodbye, hello];
|
||||
|
||||
var first_map = [];
|
||||
var second_map = [];
|
||||
@ -158,6 +158,8 @@ var server = thrift.createServer(ThriftTest, {
|
||||
insane[1] = first_map;
|
||||
insane[2] = second_map;
|
||||
|
||||
console.log('insane result:');
|
||||
console.log(insane);
|
||||
result(null, insane);
|
||||
},
|
||||
|
||||
@ -179,31 +181,29 @@ var server = thrift.createServer(ThriftTest, {
|
||||
x.errorCode = 1001;
|
||||
x.message = arg;
|
||||
result(x);
|
||||
} else if (arg === 'ApplicationException') {
|
||||
} else if (arg === 'TException') {
|
||||
result(new Thrift.TException(arg));
|
||||
} else {
|
||||
var res = new ttypes.Xtruct();
|
||||
res.string_thing = arg;
|
||||
result(null, res);
|
||||
result(null);
|
||||
}
|
||||
},
|
||||
|
||||
testMultiException: function(arg0, arg1, result) {
|
||||
console.log('testMultiException(' + arg0 + ', ' + arg1 + ')');
|
||||
if (arg0 === ('Xception')) {
|
||||
var x = new Xception();
|
||||
var x = new ttypes.Xception();
|
||||
x.errorCode = 1001;
|
||||
x.message = 'This is an Xception';
|
||||
result(x);
|
||||
} else if (arg0 === ('Xception2')) {
|
||||
var x = new Xception2();
|
||||
var x = new ttypes.Xception2();
|
||||
x.errorCode = 2002;
|
||||
x.struct_thing = new Xtruct();
|
||||
x.struct_thing = new ttypes.Xtruct();
|
||||
x.struct_thing.string_thing = 'This is an Xception2';
|
||||
result(x);
|
||||
}
|
||||
|
||||
var res = new Xtruct();
|
||||
var res = new ttypes.Xtruct();
|
||||
res.string_thing = arg1;
|
||||
result(null, res);
|
||||
},
|
||||
@ -211,9 +211,8 @@ var server = thrift.createServer(ThriftTest, {
|
||||
testOneway: function(sleepFor, result) {
|
||||
console.log('testOneway(' + sleepFor + ') => sleeping...');
|
||||
setTimeout(function(){
|
||||
console.log('Done sleeping!');
|
||||
}, sleepFor);
|
||||
result(null);
|
||||
console.log('Done sleeping for testOneway!');
|
||||
}, sleepFor*1000); //seconds
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -221,7 +221,7 @@ do_test "php-cpp" "binary" "buffered-ip" \
|
||||
do_test "nodejs-nodejs" "binary" "framed-ip" \
|
||||
"make -C nodejs/ client" \
|
||||
"make -C nodejs/ server" \
|
||||
"1" "10"
|
||||
"1" "5"
|
||||
do_test "nodejs-cpp" "binary" "framed-ip" \
|
||||
"make -C nodejs/ client" \
|
||||
"cpp/TestServer --transport=framed" \
|
||||
@ -229,6 +229,6 @@ do_test "nodejs-cpp" "binary" "framed-ip" \
|
||||
do_test "cpp-nodejs" "binary" "framed-ip" \
|
||||
"cpp/TestClient --transport=framed" \
|
||||
"make -C nodejs/ server" \
|
||||
"1" "10"
|
||||
"1" "5"
|
||||
|
||||
cd -
|
||||
|
Loading…
Reference in New Issue
Block a user