diff --git a/packages/client/lib/client/commands.ts b/packages/client/lib/client/commands.ts index e164639ae91..f4eb1f1e172 100644 --- a/packages/client/lib/client/commands.ts +++ b/packages/client/lib/client/commands.ts @@ -81,6 +81,8 @@ import * as HELLO from '../commands/HELLO'; import * as INFO from '../commands/INFO'; 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 LOLWUT from '../commands/LOLWUT'; import * as MEMORY_DOCTOR from '../commands/MEMORY_DOCTOR'; import * as MEMORY_MALLOC_STATS from '../commands/MEMORY_MALLOC-STATS'; @@ -113,7 +115,6 @@ import * as SWAPDB from '../commands/SWAPDB'; import * as TIME from '../commands/TIME'; import * as UNWATCH from '../commands/UNWATCH'; import * as WAIT from '../commands/WAIT'; -import * as LATENCY_DOCTOR from '../commands/LATENCY_DOCTOR'; export default { ...CLUSTER_COMMANDS, @@ -283,6 +284,8 @@ export default { lastSave: LASTSAVE, LATENCY_DOCTOR, latencyDoctor: LATENCY_DOCTOR, + LATENCY_GRAPH, + latencyGraph: LATENCY_GRAPH, LOLWUT, lolwut: LOLWUT, MEMORY_DOCTOR, diff --git a/packages/client/lib/commands/LATENCY_GRAPH.spec.ts b/packages/client/lib/commands/LATENCY_GRAPH.spec.ts new file mode 100644 index 00000000000..df4d5d466ab --- /dev/null +++ b/packages/client/lib/commands/LATENCY_GRAPH.spec.ts @@ -0,0 +1,32 @@ +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import { transformArguments } from './LATENCY_GRAPH'; + +describe('LATENCY GRAPH', () => { + it('transformArguments', () => { + assert.deepEqual( + transformArguments('command'), + [ + 'LATENCY', + 'GRAPH', + 'command' + ] + ); + }); + + testUtils.testWithClient('client.latencyGraph', async client => { + await Promise.all([ + client.configSet('latency-monitor-threshold', '1'), + client.sendCommand(['DEBUG', 'SLEEP', '0.001']) + ]); + + assert.equal( + typeof await client.latencyGraph('command'), + 'string' + ); + }, { + serverArguments: testUtils.isVersionGreaterThan([7]) ? + ['--enable-debug-command', 'yes'] : + GLOBAL.SERVERS.OPEN.serverArguments + }); +}); diff --git a/packages/client/lib/commands/LATENCY_GRAPH.ts b/packages/client/lib/commands/LATENCY_GRAPH.ts new file mode 100644 index 00000000000..e4e078b90f2 --- /dev/null +++ b/packages/client/lib/commands/LATENCY_GRAPH.ts @@ -0,0 +1,25 @@ +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', 'GRAPH', event]; +} + +export declare function transformReply(): string;