diff --git a/packages/client/lib/client/commands.ts b/packages/client/lib/client/commands.ts index 2605962432a..1e2e5274c0a 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_LATEST from '../commands/LATENCY_LATEST'; import * as LOLWUT from '../commands/LOLWUT'; import * as MEMORY_DOCTOR from '../commands/MEMORY_DOCTOR'; import * as MEMORY_MALLOC_STATS from '../commands/MEMORY_MALLOC-STATS'; @@ -290,6 +291,8 @@ export default { latencyDoctor: LATENCY_DOCTOR, LATENCY_GRAPH, latencyGraph: LATENCY_GRAPH, + LATENCY_LATEST, + latencyLatest: LATENCY_LATEST, 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 index df4d5d466ab..21755a253b3 100644 --- a/packages/client/lib/commands/LATENCY_GRAPH.spec.ts +++ b/packages/client/lib/commands/LATENCY_GRAPH.spec.ts @@ -24,9 +24,5 @@ describe('LATENCY GRAPH', () => { typeof await client.latencyGraph('command'), 'string' ); - }, { - serverArguments: testUtils.isVersionGreaterThan([7]) ? - ['--enable-debug-command', 'yes'] : - GLOBAL.SERVERS.OPEN.serverArguments - }); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/client/lib/commands/LATENCY_LATEST.spec.ts b/packages/client/lib/commands/LATENCY_LATEST.spec.ts new file mode 100644 index 00000000000..4087f212139 --- /dev/null +++ b/packages/client/lib/commands/LATENCY_LATEST.spec.ts @@ -0,0 +1,27 @@ +import {strict as assert} from 'assert'; +import testUtils, {GLOBAL} from '../test-utils'; +import { transformArguments } from './LATENCY_LATEST'; + +describe('LATENCY LATEST', () => { + it('transformArguments', () => { + assert.deepEqual( + transformArguments(), + ['LATENCY', 'LATEST'] + ); + }); + + testUtils.testWithClient('client.latencyLatest', async client => { + await Promise.all([ + client.configSet('latency-monitor-threshold', '100'), + client.sendCommand(['DEBUG', 'SLEEP', '1']) + ]); + const latency = await client.latencyLatest(); + assert.ok(Array.isArray(latency)); + for (const [name, timestamp, latestLatency, allTimeLatency] of latency) { + assert.equal(typeof name, 'string'); + assert.equal(typeof timestamp, 'number'); + assert.equal(typeof latestLatency, 'number'); + assert.equal(typeof allTimeLatency, 'number'); + } + }, GLOBAL.SERVERS.OPEN); +}); diff --git a/packages/client/lib/commands/LATENCY_LATEST.ts b/packages/client/lib/commands/LATENCY_LATEST.ts new file mode 100644 index 00000000000..3e4dd6236c6 --- /dev/null +++ b/packages/client/lib/commands/LATENCY_LATEST.ts @@ -0,0 +1,12 @@ +import { RedisCommandArguments } from '.'; + +export function transformArguments(): RedisCommandArguments { + return ['LATENCY', 'LATEST']; +} + +export declare function transformReply(): Array<[ + name: string, + timestamp: number, + latestLatency: number, + allTimeLatency: number +]>; diff --git a/packages/client/lib/test-utils.ts b/packages/client/lib/test-utils.ts index 9032f1dd344..65d526f6019 100644 --- a/packages/client/lib/test-utils.ts +++ b/packages/client/lib/test-utils.ts @@ -2,18 +2,24 @@ import TestUtils from '@redis/test-utils'; import { SinonSpy } from 'sinon'; import { promiseTimeout } from './utils'; -export default new TestUtils({ - dockerImageName: 'redis', - dockerImageVersionArgument: 'redis-version' +const utils = new TestUtils({ + dockerImageName: 'redis', + dockerImageVersionArgument: 'redis-version' }); +export default utils; + +const DEBUG_MODE_ARGS = utils.isVersionGreaterThan([7]) ? + ['--enable-debug-command', 'yes'] : + []; + export const GLOBAL = { SERVERS: { OPEN: { - serverArguments: [] + serverArguments: [...DEBUG_MODE_ARGS] }, PASSWORD: { - serverArguments: ['--requirepass', 'password'], + serverArguments: ['--requirepass', 'password', ...DEBUG_MODE_ARGS], clientOptions: { password: 'password' } @@ -21,10 +27,10 @@ export const GLOBAL = { }, CLUSTERS: { OPEN: { - serverArguments: [] + serverArguments: [...DEBUG_MODE_ARGS] }, PASSWORD: { - serverArguments: ['--requirepass', 'password'], + serverArguments: ['--requirepass', 'password', ...DEBUG_MODE_ARGS], clusterConfiguration: { defaults: { password: 'password' @@ -32,7 +38,7 @@ export const GLOBAL = { } }, WITH_REPLICAS: { - serverArguments: [], + serverArguments: [...DEBUG_MODE_ARGS], numberOfMasters: 2, numberOfReplicas: 1, clusterConfiguration: {