chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { heteroPostgresTest } from "@internal/testcontainers";
|
||||
import { PrismaClient } from "@trigger.dev/database";
|
||||
import { describe, expect, vi } from "vitest";
|
||||
import { probeDistinctDatabases } from "~/v3/runOpsMigration/distinctDbSentinel.server";
|
||||
|
||||
// Spinning up two separate postgres clusters and probing each can exceed the 5s default.
|
||||
vi.setConfig({ testTimeout: 60_000 });
|
||||
|
||||
function urlWithDatabase(uri: string, database: string): string {
|
||||
const url = new URL(uri);
|
||||
url.pathname = `/${database}`;
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
describe("probeDistinctDatabases", () => {
|
||||
heteroPostgresTest(
|
||||
"reports distinct for two separate physical clusters",
|
||||
async ({ uri14, uri17 }) => {
|
||||
const result = await probeDistinctDatabases(uri14, uri17);
|
||||
expect(result).toEqual({ distinct: true });
|
||||
}
|
||||
);
|
||||
|
||||
heteroPostgresTest(
|
||||
"reports NOT distinct, citing the same physical database, when both URLs point at it",
|
||||
async ({ uri14 }) => {
|
||||
const result = await probeDistinctDatabases(uri14, uri14);
|
||||
expect(result.distinct).toBe(false);
|
||||
if (result.distinct === false) {
|
||||
expect(result.reason).toMatch(/same physical database/i);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
heteroPostgresTest(
|
||||
"reports distinct for two databases in the SAME cluster",
|
||||
async ({ postgresContainer14, uri14 }) => {
|
||||
const otherDb = `sentinel_other_${Date.now()}`;
|
||||
const admin = new PrismaClient({
|
||||
datasources: {
|
||||
db: { url: urlWithDatabase(postgresContainer14.getConnectionUri(), "postgres") },
|
||||
},
|
||||
});
|
||||
try {
|
||||
await admin.$executeRawUnsafe(`CREATE DATABASE "${otherDb}"`);
|
||||
} finally {
|
||||
await admin.$disconnect();
|
||||
}
|
||||
|
||||
const otherUrl = urlWithDatabase(uri14, otherDb);
|
||||
const result = await probeDistinctDatabases(uri14, otherUrl);
|
||||
expect(result).toEqual({ distinct: true });
|
||||
}
|
||||
);
|
||||
|
||||
heteroPostgresTest(
|
||||
"fails closed to NOT distinct when a probe cannot reach a database",
|
||||
async ({ uri14 }) => {
|
||||
const unreachable = "postgresql://nobody:nobody@127.0.0.1:1/does_not_exist";
|
||||
const result = await probeDistinctDatabases(uri14, unreachable);
|
||||
expect(result.distinct).toBe(false);
|
||||
}
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user