Skip to content

Commit

Permalink
add serializer integration test & benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
icebob committed Apr 9, 2017
1 parent cd70cd3 commit 1a0955a
Show file tree
Hide file tree
Showing 5 changed files with 453 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"request": "launch",
"name": "Launch benchmark",
"program": "${workspaceRoot}\\benchmark\\index.js",
"args": ["call"],
"args": ["serializers"],
"cwd": "${workspaceRoot}\\benchmark"
},
{
Expand Down
75 changes: 75 additions & 0 deletions benchmark/suites/serializers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"use strict";

const ServiceBroker = require("../../src/service-broker");
const FakeTransporter = require("../../src/transporters/fake");
const Serializers = require("../../src/serializers");
const P = require("../../src/packets");

const { getDataFile } = require("../utils");

const Benchmarkify = require("benchmarkify");
const benchmark = new Benchmarkify("Serializers benchmark").printHeader();

let dataFiles = ["10", "150", "1k", "10k", "50k", "100k", "1M"];

function createBrokers(Serializer, opts) {
const broker = new ServiceBroker({
nodeID: "node-1",
transporter: new FakeTransporter(),
serializer: new Serializer(opts)
});

return broker;
}

function runTest(dataName) {

let data = getDataFile(dataName + ".json");
let payload = JSON.parse(data);

let brokerJSON = createBrokers(Serializers.JSON);
let brokerAvro = createBrokers(Serializers.Avro);
let brokerMsgPack = createBrokers(Serializers.MsgPack);

let bench1 = benchmark.createSuite(`Serialize event packet with ${dataName}bytes`);

bench1.ref("JSON", () => {
return new P.PacketEvent(brokerJSON.transit, "user.created", data);
});

bench1.add("Avro", () => {
return new P.PacketEvent(brokerAvro.transit, "user.created", data);
});

bench1.add("MsgPack", () => {
return new P.PacketEvent(brokerMsgPack.transit, "user.created", data);
});

let bench2 = benchmark.createSuite(`Serialize request packet with ${dataName}bytes`);

bench2.ref("JSON", () => {
return new P.PacketRequest(brokerJSON.transit, "node-2-12345", "dcfef88f-7dbe-4eed-87f1-aba340279f4f", "post.update", data);
});

bench2.add("Avro", () => {
return new P.PacketRequest(brokerAvro.transit, "node-2-12345", "dcfef88f-7dbe-4eed-87f1-aba340279f4f", "post.update", data);
});

bench2.add("MsgPack", () => {
return new P.PacketRequest(brokerMsgPack.transit, "node-2-12345", "dcfef88f-7dbe-4eed-87f1-aba340279f4f", "post.update", data);
});

bench1.run()
.then(() => bench2.run())
.then(() => {
if (dataFiles.length > 0)
runTest(dataFiles.shift());
});

}

runTest(dataFiles.shift());

/*
*/
8 changes: 4 additions & 4 deletions src/serializers/avro.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@ schemas[P.PACKET_RESPONSE] = avro.Type.forSchema({
{ name: "sender", type: "string" },
{ name: "requestID", type: "string" },
{ name: "success", type: "boolean" },
{ name: "data", type: "string" },
/*{ name: "error", type: {
{ name: "data", type: [ "null", "string"] },
{ name: "error", type: [ "null", {
type: "record",
fields: [
{ name: "name", type: "string" },
{ name: "message", type: "string" },
{ name: "code", type: "string" },
{ name: "code", type: "int" },
{ name: "data", type: "string" }
]
} }*/
} ], default: null }
]
});

Expand Down
7 changes: 3 additions & 4 deletions src/serializers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@

module.exports = {
JSON: require("./json"),
Avro: require("./avro")
/*MsgPack: require("./msgpack"),
PSON: require("./pson")
*/
Avro: require("./avro"),
MsgPack: require("./msgpack"),
//PSON: require("./pson")
};
Loading

0 comments on commit 1a0955a

Please sign in to comment.