@ledgerhq/coin-modules-monitoring
Version:
Push monitoring metrics to Datadog
90 lines • 4.03 kB
JavaScript
import run from "./run";
import * as bridgeModule from "@ledgerhq/live-common/bridge/impl";
import { makeSync } from "@ledgerhq/coin-framework/bridge/jsHelpers";
import { encodeAccountId } from "@ledgerhq/coin-framework/account/accountId";
import BigNumber from "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: makeSync({
getAccountShape: async (info) => {
if (info.address === "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S") {
throw new Error("Unavailable");
}
const accountId = 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(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 run(["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