Make sure that the unique databases names generated by TestDatabases.create() don't collide

Signed-off-by: Oliver Sand <oliver.sand@sda-se.com>
This commit is contained in:
Oliver Sand
2021-08-06 11:22:50 +02:00
parent fa22f69ced
commit 5240457587
3 changed files with 11 additions and 6 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/backend-test-utils': patch
---
Make sure that the unique databases names generated by `TestDatabases.create()`
don't collide.
@@ -71,7 +71,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
const database = 'backstage_plugin_db0';
const database = input.client.config.connection.database;
const output = knexFactory({
client: 'pg',
connection: { host, port, user, password, database },
@@ -105,7 +105,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
const database = 'backstage_plugin_db0';
const database = input.client.config.connection.database;
const output = knexFactory({
client: 'pg',
connection: { host, port, user, password, database },
@@ -139,7 +139,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
const database = 'backstage_plugin_db0';
const database = input.client.config.connection.database;
const output = knexFactory({
client: 'mysql2',
connection: { host, port, user, password, database },
@@ -16,6 +16,7 @@
import { DatabaseManager } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { randomBytes } from 'crypto';
import { Knex } from 'knex';
import { isDockerDisabledForTests } from '../util/isDockerDisabledForTests';
import { startMysqlContainer } from './startMysqlContainer';
@@ -34,7 +35,6 @@ import {
export class TestDatabases {
private readonly instanceById: Map<string, Instance>;
private readonly supportedIds: TestDatabaseId[];
private lastDatabaseIndex: number;
/**
* Creates an empty `TestDatabases` instance, and sets up Jest to clean up
@@ -99,7 +99,6 @@ export class TestDatabases {
private constructor(supportedIds: TestDatabaseId[]) {
this.instanceById = new Map();
this.supportedIds = supportedIds;
this.lastDatabaseIndex = 0;
}
supports(id: TestDatabaseId): boolean {
@@ -142,7 +141,7 @@ export class TestDatabases {
// Ensure that a unique logical database is created in the instance
const connection = await instance.databaseManager
.forPlugin(String(`db${this.lastDatabaseIndex++}`))
.forPlugin(`db${randomBytes(16).toString('hex')}`)
.getClient();
instance.connections.push(connection);