it("params", function() { jr = rpc.json({ 'xhr': { test: { fun: function(v, a, b) { return a + b; } } } }); m = new http.Request(); m.value = '/xhr/test'; m.setHeader("Content-Type", "application/json"); m.body.write(encoding.jsonEncode({ method: 'fun', params: [100, 200], id: 1234 })); jr.invoke(m); m.response.body.rewind(); assert.equal(m.response.body.read().toString(), '{"id":1234,"result":300}'); });
it("Garbage Collection", function() { GC(); var no1 = os.memoryUsage().nativeObjects.objects; rpc.json({}); GC(); assert.equal(no1, os.memoryUsage().nativeObjects.objects); });
it("function", function() { jr = rpc.json(function(m, p1, p2) { m.value = ''; return p1 + ',' + p2; }); jr.invoke(m); m.response.body.rewind(); assert.equal(m.response.body.read().toString(), '{"id":1234,"result":"100,200"}'); });
it("over tcp", function() { var hdlr = new http.Handler(rpc.json({ update: function(v) { return 1; } })); hdlr.crossDomain = true; new net.TcpServer(8090, hdlr).asyncRun(); var s = new net.Socket(); s.connect('127.0.0.1', 8090); var bs = new io.BufferedStream(s); bs.EOL = '\r\n'; for (var i = 0; i < 50; i++) { var req = new http.Request(); req.addHeader("content-type", "application/json"); req.body.write('{"method":"update","params":[{}]}'); req.sendTo(s); req.response.readFrom(bs); } });