From ae2408b4ff1d035fd5e105d5e5754d89b561e0d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sun, 15 Dec 2024 22:01:14 +0100 Subject: [PATCH 1/2] log BackendFeatureMeta nicer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/funny-lemons-camp.md | 5 +++ .../src/wiring/BackendInitializer.test.ts | 9 +++++- .../src/wiring/BackendInitializer.ts | 32 +++++++++++++++---- packages/backend/src/instanceMetadata.ts | 4 ++- 4 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 .changeset/funny-lemons-camp.md diff --git a/.changeset/funny-lemons-camp.md b/.changeset/funny-lemons-camp.md new file mode 100644 index 0000000000..1cb99ff2ba --- /dev/null +++ b/.changeset/funny-lemons-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Add a `toString` on the default `BackendFeatureMeta` implementations diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 86b0b51bd9..a73a83027b 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -885,7 +885,7 @@ describe('BackendInitializer', () => { }); it('should properly add plugins + modules to the instance metadata service', async () => { - expect.assertions(1); + expect.assertions(2); const backend = new BackendInitializer(baseFactories); const plugin = createBackendPlugin({ pluginId: 'test', @@ -919,6 +919,13 @@ describe('BackendInitializer', () => { type: 'plugin', }, ]); + expect(instanceMetadata.getInstalledFeatures().map(String)).toEqual( + [ + 'plugin{pluginId=test}', + 'module{moduleId=test,pluginId=test}', + 'plugin{pluginId=instance-metadata}', + ], + ); }, }); }, diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index b8c37f7471..6148583bda 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -111,13 +111,33 @@ function createInstanceMetadataServiceFactory( .getRegistrations() .map(feature => { if (feature.type === 'plugin') { - return { type: 'plugin', pluginId: feature.pluginId }; + return Object.defineProperty( + { + type: 'plugin', + pluginId: feature.pluginId, + }, + 'toString', + { + enumerable: false, + configurable: false, + value: () => `plugin{pluginId=${feature.pluginId}}`, + }, + ); } else if (feature.type === 'module') { - return { - type: 'module', - pluginId: feature.pluginId, - moduleId: feature.moduleId, - }; + return Object.defineProperty( + { + type: 'module', + pluginId: feature.pluginId, + moduleId: feature.moduleId, + }, + 'toString', + { + enumerable: false, + configurable: false, + value: () => + `module{moduleId=${feature.moduleId},pluginId=${feature.pluginId}}`, + }, + ); } // Ignore unknown feature types. return undefined; diff --git a/packages/backend/src/instanceMetadata.ts b/packages/backend/src/instanceMetadata.ts index dd499aa40a..5f835f3117 100644 --- a/packages/backend/src/instanceMetadata.ts +++ b/packages/backend/src/instanceMetadata.ts @@ -30,7 +30,9 @@ export default createBackendPlugin({ }, async init({ instanceMetadata, logger }) { logger.info( - `Installed features on this instance: ${instanceMetadata.getInstalledFeatures()}`, + `Installed features on this instance: ${instanceMetadata + .getInstalledFeatures() + .join(', ')}`, ); }, }); From 4fd86b6afc18c7dcf56a32ba0886f317cf2c4304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 16 Dec 2024 08:37:13 +0100 Subject: [PATCH 2/2] use mock services too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../src/wiring/BackendInitializer.test.ts | 35 ++++--------------- .../src/wiring/BackendInitializer.ts | 4 +-- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index a73a83027b..39a54747d5 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -14,13 +14,9 @@ * limitations under the License. */ -import { rootLifecycleServiceFactory } from '@backstage/backend-defaults/rootLifecycle'; -import { lifecycleServiceFactory } from '@backstage/backend-defaults/lifecycle'; -import { loggerServiceFactory } from '@backstage/backend-defaults/logger'; import { createServiceRef, createServiceFactory, - coreServices, createBackendPlugin, createBackendModule, createExtensionPoint, @@ -29,26 +25,13 @@ import { } from '@backstage/backend-plugin-api'; import { BackendInitializer } from './BackendInitializer'; import { instanceMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; - -class MockLogger { - debug() {} - info() {} - warn() {} - error() {} - child() { - return this; - } -} +import { mockServices } from '@backstage/backend-test-utils'; const baseFactories = [ - lifecycleServiceFactory, - rootLifecycleServiceFactory, - createServiceFactory({ - service: coreServices.rootLogger, - deps: {}, - factory: () => new MockLogger(), - }), - loggerServiceFactory, + mockServices.rootLifecycle.factory(), + mockServices.lifecycle.factory(), + mockServices.rootLogger.factory(), + mockServices.logger.factory(), ]; function mkNoopFactory(ref: ServiceRef<{}, 'plugin'>) { @@ -707,12 +690,8 @@ describe('BackendInitializer', () => { const extA = createExtensionPoint({ id: 'a' }); const extB = createExtensionPoint({ id: 'b' }); const init = new BackendInitializer([ - rootLifecycleServiceFactory, - createServiceFactory({ - service: coreServices.rootLogger, - deps: {}, - factory: () => new MockLogger(), - }), + mockServices.rootLifecycle.factory(), + mockServices.rootLogger.factory(), ]); init.add(testPlugin); init.add( diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index 6148583bda..aa48c26877 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -119,7 +119,7 @@ function createInstanceMetadataServiceFactory( 'toString', { enumerable: false, - configurable: false, + configurable: true, value: () => `plugin{pluginId=${feature.pluginId}}`, }, ); @@ -133,7 +133,7 @@ function createInstanceMetadataServiceFactory( 'toString', { enumerable: false, - configurable: false, + configurable: true, value: () => `module{moduleId=${feature.moduleId},pluginId=${feature.pluginId}}`, },