From 8b38c9d87037cd76abdcf2f2d8fc39facc96a4fb Mon Sep 17 00:00:00 2001 From: avinashkrishna613 Date: Sun, 2 Jul 2023 11:36:46 +0530 Subject: [PATCH 1/3] added support for LATENCY_HISTORY command --- packages/client/lib/client/commands.ts | 3 ++ .../lib/commands/LATENCY_HISTORY.spec.ts | 26 +++++++++++++++++ .../client/lib/commands/LATENCY_HISTORY.ts | 29 +++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 packages/client/lib/commands/LATENCY_HISTORY.spec.ts create mode 100644 packages/client/lib/commands/LATENCY_HISTORY.ts diff --git a/packages/client/lib/client/commands.ts b/packages/client/lib/client/commands.ts index 1e2e5274c0a..631e1a80807 100644 --- a/packages/client/lib/client/commands.ts +++ b/packages/client/lib/client/commands.ts @@ -84,6 +84,7 @@ import * as KEYS from '../commands/KEYS'; import * as LASTSAVE from '../commands/LASTSAVE'; 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 LOLWUT from '../commands/LOLWUT'; import * as MEMORY_DOCTOR from '../commands/MEMORY_DOCTOR'; @@ -291,6 +292,8 @@ export default { latencyDoctor: LATENCY_DOCTOR, LATENCY_GRAPH, latencyGraph: LATENCY_GRAPH, + LATENCY_HISTORY, + latencyHistory: LATENCY_HISTORY, LATENCY_LATEST, latencyLatest: LATENCY_LATEST, LOLWUT, diff --git a/packages/client/lib/commands/LATENCY_HISTORY.spec.ts b/packages/client/lib/commands/LATENCY_HISTORY.spec.ts new file mode 100644 index 00000000000..e79e969b261 --- /dev/null +++ b/packages/client/lib/commands/LATENCY_HISTORY.spec.ts @@ -0,0 +1,26 @@ +import {strict as assert} from 'assert'; +import testUtils, {GLOBAL} from '../test-utils'; +import { transformArguments } from './LATENCY_HISTORY'; + +describe('LATENCY HISTORY', () => { + it('transformArguments', () => { + assert.deepEqual( + transformArguments('command'), + ['LATENCY', 'HISTORY', 'command'] + ); + }); + + testUtils.testWithClient('client.latencyHistory', async client => { + await Promise.all([ + client.configSet('latency-monitor-threshold', '100'), + client.sendCommand(['DEBUG', 'SLEEP', '1']) + ]); + + const latencyHisRes = await client.latencyHistory('command'); + assert.ok(Array.isArray(latencyHisRes)); + for (const [timestamp, latency] of latencyHisRes) { + assert.equal(typeof timestamp, 'number'); + assert.equal(typeof latency, 'number'); + } + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/LATENCY_HISTORY.ts b/packages/client/lib/commands/LATENCY_HISTORY.ts new file mode 100644 index 00000000000..d8d004734db --- /dev/null +++ b/packages/client/lib/commands/LATENCY_HISTORY.ts @@ -0,0 +1,29 @@ +import { RedisCommandArguments } from "."; + +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 (event: EventType): RedisCommandArguments { + return ['LATENCY', 'HISTORY', event]; +} + +export declare function transformReply(): Array<[ + timestamp: number, + latency: number, +]>; \ No newline at end of file From c0d9ed84a8d727b2eabec06740d9d80727bbff71 Mon Sep 17 00:00:00 2001 From: Leibale Eidelman Date: Mon, 18 Sep 2023 18:32:47 -0400 Subject: [PATCH 2/3] clean code --- .../client/lib/commands/LATENCY_HISTORY.ts | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/client/lib/commands/LATENCY_HISTORY.ts b/packages/client/lib/commands/LATENCY_HISTORY.ts index d8d004734db..4a952f51b73 100644 --- a/packages/client/lib/commands/LATENCY_HISTORY.ts +++ b/packages/client/lib/commands/LATENCY_HISTORY.ts @@ -1,25 +1,23 @@ -import { RedisCommandArguments } from "."; +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 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 (event: EventType): RedisCommandArguments { +export function transformArguments (event: EventType) { return ['LATENCY', 'HISTORY', event]; } From 899d65371c547f1d0f4b933ff99d7a743ad3beb1 Mon Sep 17 00:00:00 2001 From: Leibale Eidelman Date: Tue, 19 Sep 2023 15:58:23 -0400 Subject: [PATCH 3/3] Update LATENCY_HISTORY.ts --- packages/client/lib/commands/LATENCY_HISTORY.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/lib/commands/LATENCY_HISTORY.ts b/packages/client/lib/commands/LATENCY_HISTORY.ts index 4a952f51b73..c0b1964553e 100644 --- a/packages/client/lib/commands/LATENCY_HISTORY.ts +++ b/packages/client/lib/commands/LATENCY_HISTORY.ts @@ -17,11 +17,11 @@ export type EventType = ( 'rdb-unlink-temp-file' ); -export function transformArguments (event: EventType) { +export function transformArguments(event: EventType) { return ['LATENCY', 'HISTORY', event]; } export declare function transformReply(): Array<[ timestamp: number, latency: number, -]>; \ No newline at end of file +]>;