UNPKG

jspurefix

Version:
103 lines 6.01 kB
"use strict"; 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