@ledgerhq/coin-modules-monitoring
Version:
Push monitoring metrics to Datadog
118 lines • 5.4 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const run_1 = __importDefault(require("./run"));
const bridgeModule = __importStar(require("@ledgerhq/live-common/bridge/impl"));
const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
const accountId_1 = require("@ledgerhq/coin-framework/account/accountId");
const bignumber_js_1 = __importDefault(require("bignumber.js"));
describe("Coin Modules Monitoring", () => {
afterAll(() => {
jest.resetAllMocks();
});
describe("run", () => {
it("produces log entries to be submitted, skipping failures", async () => {
jest.spyOn(bridgeModule, "getAccountBridgeByFamily").mockReturnValue({
sync: (0, jsHelpers_1.makeSync)({
getAccountShape: async (info) => {
if (info.address === "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S") {
throw new Error("Unavailable");
}
const accountId = (0, accountId_1.encodeAccountId)({
type: "js",
version: "2",
currencyId: info.currency.id,
xpubOrAddress: info.initialAccount?.xpub ?? info.address,
derivationMode: "",
});
const transactionCounts = {
Hj69wRzkrFuf1Nby4yzPEFHdsmQdMoVYjvDKZSLjZFEp: 500,
Hbac8tM3SMbua9ZBqPRbEJ2n3FtikRJc7wFmZzpqbtBv: 0,
};
return {
id: accountId,
balance: new bignumber_js_1.default(0),
operationsCount: transactionCounts[info.address],
};
},
}),
});
jest
.spyOn(Date, "now")
.mockReturnValueOnce(3000) // Start scan big
.mockReturnValueOnce(3000) // Start scan average
.mockReturnValueOnce(3050) // End scan average
.mockReturnValueOnce(3000) // Start sync average
.mockReturnValueOnce(3025) // End sync average
.mockReturnValueOnce(3000) // Start scan pristine
.mockReturnValueOnce(3020) // End scan pristine
.mockReturnValueOnce(3000) // Start sync pristine
.mockReturnValueOnce(3010); // End sync pristine
const logs = await (0, run_1.default)(["solana"]);
expect(logs).toEqual([
{
duration: 50,
currencyName: "solana",
coinModuleName: "solana",
operationType: "scan",
accountType: "average",
transactions: 500,
accountAddressOrXpub: "Hj69wRzkrFuf1Nby4yzPEFHdsmQdMoVYjvDKZSLjZFEp",
},
{
duration: 25,
currencyName: "solana",
coinModuleName: "solana",
operationType: "sync",
accountType: "average",
transactions: 500,
accountAddressOrXpub: "Hj69wRzkrFuf1Nby4yzPEFHdsmQdMoVYjvDKZSLjZFEp",
},
{
duration: 20,
currencyName: "solana",
coinModuleName: "solana",
operationType: "scan",
accountType: "pristine",
transactions: 0,
accountAddressOrXpub: "Hbac8tM3SMbua9ZBqPRbEJ2n3FtikRJc7wFmZzpqbtBv",
},
{
duration: 10,
currencyName: "solana",
coinModuleName: "solana",
operationType: "sync",
accountType: "pristine",
transactions: 0,
accountAddressOrXpub: "Hbac8tM3SMbua9ZBqPRbEJ2n3FtikRJc7wFmZzpqbtBv",
},
]);
});
});
});
//# sourceMappingURL=run.test.js.map