From b1aaff59365101cb188940c44642b8acd4da5202 Mon Sep 17 00:00:00 2001 From: sliptype Date: Thu, 30 May 2024 14:50:17 -0500 Subject: [PATCH] swallow dn selector test logs --- .../DiscoveryNodeSelector.test.ts | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/libs/src/sdk/services/DiscoveryNodeSelector/DiscoveryNodeSelector.test.ts b/packages/libs/src/sdk/services/DiscoveryNodeSelector/DiscoveryNodeSelector.test.ts index a41f7bc61a0..afa55ed85c7 100644 --- a/packages/libs/src/sdk/services/DiscoveryNodeSelector/DiscoveryNodeSelector.test.ts +++ b/packages/libs/src/sdk/services/DiscoveryNodeSelector/DiscoveryNodeSelector.test.ts @@ -12,10 +12,6 @@ import type { } from './healthCheckTypes' import type { DiscoveryNode } from './types' -// jest.mock('./healthChecks', () => ({ -// getHealthCheck: jest.fn(() => ({})) -// })) - const HEALTHY_NODE = 'https://healthy.audius.co' const BEHIND_BLOCKDIFF_NODE = 'https://behind-blockdiff.audius.co' const BEHIND_LARGE_BLOCKDIFF_NODE = 'https://behind-largeblockdiff.audius.co' @@ -181,6 +177,18 @@ const handlers = [ ] const server = setupServer(...handlers) +const logger = { + warn: jest.fn(), + info: jest.fn(), + debug: jest.fn(), + error: jest.fn() +} + +// Disable logging so test output is clean +const mockLogger = { + createPrefixedLogger: jest.fn(() => logger) +} + describe('discoveryNodeSelector', () => { beforeAll(() => { server.listen() @@ -195,6 +203,7 @@ describe('discoveryNodeSelector', () => { test('prefers a healthy service', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, healthCheckThresholds: { minVersion: '1.2.3' }, @@ -214,6 +223,7 @@ describe('discoveryNodeSelector', () => { test('falls back to patch version backup before blockdiff backup', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, healthCheckThresholds: { minVersion: '1.2.3' }, @@ -232,6 +242,7 @@ describe('discoveryNodeSelector', () => { test('falls back to best blockdiff backup', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, healthCheckThresholds: { minVersion: '1.2.3' }, @@ -248,6 +259,7 @@ describe('discoveryNodeSelector', () => { test('respects allowlist', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, allowlist: new Set([BEHIND_BLOCKDIFF_NODE]), healthCheckThresholds: { minVersion: '1.2.3' @@ -274,6 +286,7 @@ describe('discoveryNodeSelector', () => { test('respects blocklist', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, blocklist: new Set([HEALTHY_NODE]), healthCheckThresholds: { minVersion: '1.2.3' @@ -300,6 +313,7 @@ describe('discoveryNodeSelector', () => { test('uses configured default', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: BEHIND_BLOCKDIFF_NODE, requestTimeout: 50, bootstrapServices: [ @@ -316,6 +330,7 @@ describe('discoveryNodeSelector', () => { test('rejects configured default if blocklisted', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: BEHIND_BLOCKDIFF_NODE, blocklist: new Set([BEHIND_BLOCKDIFF_NODE]), requestTimeout: 1000, @@ -335,6 +350,7 @@ describe('discoveryNodeSelector', () => { test('selects fastest discovery node', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: [HEALTHY_NODE, ...generateSlowerHealthyNodes(5)].map( addDelegateOwnerWallets ), @@ -349,6 +365,7 @@ describe('discoveryNodeSelector', () => { test('does not select unhealthy nodes', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, requestTimeout: 50, bootstrapServices: [ CONTENT_NODE, @@ -366,6 +383,7 @@ describe('discoveryNodeSelector', () => { test('waits for existing selections to finish gracefully', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: generateHealthyNodes(100).map(addDelegateOwnerWallets), healthCheckThresholds: { minVersion: '1.2.3' @@ -386,6 +404,7 @@ describe('discoveryNodeSelector', () => { jest.useFakeTimers() const TEMP_BEHIND_BLOCKDIFF_NODE = 'https://temp-behind.audius.co' const selector = new DiscoveryNodeSelector({ + logger: mockLogger, backupsTTL: 10, unhealthyTTL: 0, bootstrapServices: [TEMP_BEHIND_BLOCKDIFF_NODE, HEALTHY_NODE].map( @@ -457,6 +476,7 @@ describe('discoveryNodeSelector', () => { describe('middleware', () => { test('prepends URL to requests', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: [HEALTHY_NODE].map(addDelegateOwnerWallets) }) const middleware = selector.createMiddleware() @@ -472,6 +492,7 @@ describe('discoveryNodeSelector', () => { test('reselects if request succeeds but node fell behind', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: BEHIND_BLOCKDIFF_NODE, bootstrapServices: [HEALTHY_NODE, BEHIND_BLOCKDIFF_NODE].map( addDelegateOwnerWallets @@ -509,6 +530,7 @@ describe('discoveryNodeSelector', () => { test("doesn't reselect if behind but was already behind", async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: [BEHIND_BLOCKDIFF_NODE].map(addDelegateOwnerWallets), healthCheckThresholds: { minVersion: '1.2.3' @@ -546,6 +568,7 @@ describe('discoveryNodeSelector', () => { test('reselects if request fails and node fell behind', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: BEHIND_BLOCKDIFF_NODE, bootstrapServices: [HEALTHY_NODE, BEHIND_BLOCKDIFF_NODE].map( addDelegateOwnerWallets @@ -591,6 +614,7 @@ describe('discoveryNodeSelector', () => { test('reselects if request fails and node unhealthy', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: UNHEALTHY_NODE, bootstrapServices: [HEALTHY_NODE, BEHIND_BLOCKDIFF_NODE].map( addDelegateOwnerWallets @@ -635,6 +659,7 @@ describe('discoveryNodeSelector', () => { test("doesn't reselect if request fails but node is healthy", async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, initialSelectedNode: HEALTHY_NODE, bootstrapServices: [HEALTHY_NODE, BEHIND_BLOCKDIFF_NODE].map( addDelegateOwnerWallets @@ -668,6 +693,7 @@ describe('discoveryNodeSelector', () => { test('resets isBehind when request shows the node is caught up', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: [BEHIND_BLOCKDIFF_NODE].map(addDelegateOwnerWallets), healthCheckThresholds: { minVersion: '1.2.3' @@ -705,6 +731,7 @@ describe('discoveryNodeSelector', () => { test('reselects when encountering network error', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: [BEHIND_BLOCKDIFF_NODE].map(addDelegateOwnerWallets), healthCheckThresholds: { minVersion: '1.2.3' @@ -764,6 +791,7 @@ describe('discoveryNodeSelector', () => { test('does not reselect for client error status', async () => { const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices: NETWORK_DISCOVERY_NODES.map(addDelegateOwnerWallets), healthCheckThresholds: { minVersion: '1.2.3' @@ -807,6 +835,7 @@ describe('discoveryNodeSelector', () => { ]) const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices, healthCheckThresholds: { minVersion: '1.2.3' @@ -837,6 +866,7 @@ describe('discoveryNodeSelector', () => { ]) const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices, unhealthyTTL: 0, allowlist: new Set(unhealthyNodes), @@ -870,6 +900,7 @@ describe('discoveryNodeSelector', () => { ]) const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices, unhealthyTTL: 0, blocklist: new Set(healthyNodes.slice(0, 1)), @@ -903,6 +934,7 @@ describe('discoveryNodeSelector', () => { ]) const selector = new DiscoveryNodeSelector({ + logger: mockLogger, bootstrapServices, healthCheckThresholds: { minVersion: '1.2.3'