jspurefix
Version:
pure node js fix engine
103 lines • 6.01 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const path = require("path");
const types_1 = require("../../types");
const setup_1 = require("../env/setup");
const test_recovery_1 = require("../env/test-recovery");
const root = path.join(__dirname, '../../../data');
let server;
let client;
let setup;
beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
setup = new setup_1.Setup('session/test-initiator.json', 'session/test-acceptor.json');
yield setup.init();
const serverConfig = setup.serverConfig;
const clientConfig = setup.clientConfig;
const views = yield setup.server.replayer.replayFixFile(path.join(root, 'examples/FIX.4.4/jsfix.test_client.txt'));
server = new test_recovery_1.TestRecovery(views, serverConfig);
client = new test_recovery_1.TestRecovery(views, clientConfig);
yield server.populate();
yield client.populate();
}), 45000);
test('expect 15 messages in log', () => {
expect(server.views.length).toEqual(15);
expect(client.views.length).toEqual(15);
});
test('server store states', () => __awaiter(void 0, void 0, void 0, function* () {
const s1 = yield server.recovery.store.getState();
expect(s1.length).toEqual(9);
}));
test('client store states', () => __awaiter(void 0, void 0, void 0, function* () {
const s1 = yield client.recovery.store.getState();
expect(s1.length).toEqual(1);
}));
test('server replay request from seq=1 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
const vec = yield server.recovery.getResendRequest(1, 10);
expect(vec).toBeTruthy();
expect(Array.isArray(vec));
expect(vec.length).toEqual(10);
checkSeqReset(vec[0], 1, 2);
expect(vec[1].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequestAck);
expect(vec[1].seqNum).toEqual(2);
expect((_b = (_a = vec[1].obj) === null || _a === void 0 ? void 0 : _a.StandardHeader) === null || _b === void 0 ? void 0 : _b.PossDupFlag).toBeTruthy();
expect((_d = (_c = vec[1].obj) === null || _c === void 0 ? void 0 : _c.StandardHeader) === null || _d === void 0 ? void 0 : _d.OrigSendingTime).toBeDefined();
for (let i = 2; i <= 6; ++i) {
expect(vec[i].msgType).toEqual(types_1.MsgType.TradeCaptureReport);
expect(vec[i].seqNum).toEqual(i + 1);
expect((_f = (_e = vec[i].obj) === null || _e === void 0 ? void 0 : _e.StandardHeader) === null || _f === void 0 ? void 0 : _f.PossDupFlag).toBeTruthy();
expect((_h = (_g = vec[i].obj) === null || _g === void 0 ? void 0 : _g.StandardHeader) === null || _h === void 0 ? void 0 : _h.OrigSendingTime).toBeDefined();
}
expect(vec[7].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequestAck);
expect(vec[7].seqNum).toEqual(8);
expect((_k = (_j = vec[7].obj) === null || _j === void 0 ? void 0 : _j.StandardHeader) === null || _k === void 0 ? void 0 : _k.PossDupFlag).toBeTruthy();
expect((_m = (_l = vec[7].obj) === null || _l === void 0 ? void 0 : _l.StandardHeader) === null || _m === void 0 ? void 0 : _m.OrigSendingTime).toBeDefined();
for (let i = 8; i < 10; ++i) {
expect(vec[i].msgType).toEqual(types_1.MsgType.TradeCaptureReport);
expect(vec[i].seqNum).toEqual(i + 1);
expect((_p = (_o = vec[1].obj) === null || _o === void 0 ? void 0 : _o.StandardHeader) === null || _p === void 0 ? void 0 : _p.PossDupFlag).toBeTruthy();
expect((_r = (_q = vec[i].obj) === null || _q === void 0 ? void 0 : _q.StandardHeader) === null || _r === void 0 ? void 0 : _r.OrigSendingTime).toBeDefined();
}
}));
test('client replay request from seq=1 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
var _s, _t, _u, _v;
const vec = yield client.recovery.getResendRequest(1, 10);
expect(vec).toBeTruthy();
expect(Array.isArray(vec));
expect(vec.length).toEqual(3);
checkSeqReset(vec[0], 1, 2);
expect(vec[1].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequest);
expect(vec[1].seqNum).toEqual(2);
expect((_t = (_s = vec[1].obj) === null || _s === void 0 ? void 0 : _s.StandardHeader) === null || _t === void 0 ? void 0 : _t.PossDupFlag).toBeTruthy();
expect((_v = (_u = vec[1].obj) === null || _u === void 0 ? void 0 : _u.StandardHeader) === null || _v === void 0 ? void 0 : _v.OrigSendingTime).toBeDefined();
checkSeqReset(vec[2], 3, 11);
}));
function checkSeqReset(rec, from, to) {
const reset = rec.obj;
expect(rec.msgType).toEqual(types_1.MsgType.SequenceReset);
expect(rec.obj).toBeTruthy();
expect(rec.seqNum).toEqual(from);
expect(reset.NewSeqNo).toEqual(to);
expect(reset.GapFillFlag).toBeTruthy();
expect(reset.StandardHeader.MsgType).toEqual(types_1.MsgType.SequenceReset);
expect(reset.StandardHeader.PossDupFlag).toBeTruthy();
expect(reset.StandardHeader.MsgSeqNum).toEqual(from);
}
test('client replay request from seq=4 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
const vec = yield client.recovery.getResendRequest(4, 10);
expect(vec).toBeTruthy();
expect(Array.isArray(vec));
expect(vec.length).toEqual(1);
checkSeqReset(vec[0], 4, 11);
}));
//# sourceMappingURL=ascii-store-replay.test.js.map