From f047a2b369b6a4ebede8594cdab4e03c88739018 Mon Sep 17 00:00:00 2001 From: ivanvs Date: Sat, 18 Nov 2023 20:43:32 +0100 Subject: [PATCH] Add latency reset command --- packages/client/lib/client/commands.ts | 3 ++ .../client/lib/commands/LATENCY_RESET.spec.ts | 21 ++++++++++++++ packages/client/lib/commands/LATENCY_RESET.ts | 28 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 packages/client/lib/commands/LATENCY_RESET.spec.ts create mode 100644 packages/client/lib/commands/LATENCY_RESET.ts diff --git a/packages/client/lib/client/commands.ts b/packages/client/lib/client/commands.ts index 76ae5d73735..d7577e40c08 100644 --- a/packages/client/lib/client/commands.ts +++ b/packages/client/lib/client/commands.ts @@ -88,6 +88,7 @@ import * as LATENCY_DOCTOR from '../commands/LATENCY_DOCTOR'; import * as LATENCY_GRAPH from '../commands/LATENCY_GRAPH'; import * as LATENCY_HISTORY from '../commands/LATENCY_HISTORY'; import * as LATENCY_LATEST from '../commands/LATENCY_LATEST'; +import * as LATENCY_RESET from '../commands/LATENCY_RESET'; import * as LOLWUT from '../commands/LOLWUT'; import * as MEMORY_DOCTOR from '../commands/MEMORY_DOCTOR'; import * as MEMORY_MALLOC_STATS from '../commands/MEMORY_MALLOC-STATS'; @@ -303,6 +304,8 @@ export default { latencyHistory: LATENCY_HISTORY, LATENCY_LATEST, latencyLatest: LATENCY_LATEST, + LATENCY_RESET, + latencyReset: LATENCY_RESET, LOLWUT, lolwut: LOLWUT, MEMORY_DOCTOR, diff --git a/packages/client/lib/commands/LATENCY_RESET.spec.ts b/packages/client/lib/commands/LATENCY_RESET.spec.ts new file mode 100644 index 00000000000..2065099453c --- /dev/null +++ b/packages/client/lib/commands/LATENCY_RESET.spec.ts @@ -0,0 +1,21 @@ +import { strict as assert } from "assert"; +import testUtils, { GLOBAL } from "../test-utils"; +import { transformArguments } from "./LATENCY_RESET"; + +describe("LATENCY RESET", () => { + it("transformArguments", () => { + assert.deepEqual(transformArguments("command"), ["LATENCY", "RESET", "command"]); + assert.deepEqual(transformArguments(), ["LATENCY", "RESET"]); + assert.deepEqual(transformArguments(["command", "aof-stat"]), ["LATENCY", "RESET", "command", "aof-stat"]); + }); + + testUtils.testWithClient( + "client.latencyReset", + async (client) => { + await Promise.all([client.configSet("latency-monitor-threshold", "1"), client.sendCommand(["DEBUG", "SLEEP", "0.001"])]); + + assert.equal(typeof (await client.latencyReset("command")), "number"); + }, + GLOBAL.SERVERS.OPEN + ); +}); diff --git a/packages/client/lib/commands/LATENCY_RESET.ts b/packages/client/lib/commands/LATENCY_RESET.ts new file mode 100644 index 00000000000..958de495018 --- /dev/null +++ b/packages/client/lib/commands/LATENCY_RESET.ts @@ -0,0 +1,28 @@ +import { RedisCommandArguments } from "."; +import { pushVerdictArguments } from "./generic-transformers"; + +export type EventType = + | "active-defrag-cycle" + | "aof-fsync-always" + | "aof-stat" + | "aof-rewrite-diff-write" + | "aof-rename" + | "aof-write" + | "aof-write-active-child" + | "aof-write-alone" + | "aof-write-pending-fsync" + | "command" + | "expire-cycle" + | "eviction-cycle" + | "eviction-del" + | "fast-command" + | "fork" + | "rdb-unlink-temp-file"; + +export function transformArguments(events?: EventType | Array): RedisCommandArguments { + if (events === undefined) return ["LATENCY", "RESET"]; + + return pushVerdictArguments(["LATENCY", "RESET"], events); +} + +export declare function transformReply(): number;