chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import { ClickHouse } from "@internal/clickhouse";
|
||||
import type { RedisOptions } from "@internal/redis";
|
||||
import type { PrismaClient } from "~/db.server";
|
||||
import { RunsReplicationService } from "~/services/runsReplicationService.server";
|
||||
import { TestReplicationClickhouseFactory } from "./testReplicationClickhouseFactory";
|
||||
import { afterEach } from "vitest";
|
||||
|
||||
export async function setupClickhouseReplication({
|
||||
prisma,
|
||||
databaseUrl,
|
||||
clickhouseUrl,
|
||||
redisOptions,
|
||||
}: {
|
||||
prisma: PrismaClient;
|
||||
databaseUrl: string;
|
||||
clickhouseUrl: string;
|
||||
redisOptions: RedisOptions;
|
||||
}) {
|
||||
await prisma.$executeRawUnsafe(`ALTER TABLE public."TaskRun" REPLICA IDENTITY FULL;`);
|
||||
|
||||
const clickhouse = new ClickHouse({
|
||||
url: clickhouseUrl,
|
||||
name: "runs-replication",
|
||||
compression: {
|
||||
request: true,
|
||||
},
|
||||
});
|
||||
|
||||
const runsReplicationService = new RunsReplicationService({
|
||||
clickhouseFactory: new TestReplicationClickhouseFactory(clickhouse),
|
||||
pgConnectionUrl: databaseUrl,
|
||||
serviceName: "runs-replication",
|
||||
slotName: "task_runs_to_clickhouse_v1",
|
||||
publicationName: "task_runs_to_clickhouse_v1_publication",
|
||||
redisOptions,
|
||||
maxFlushConcurrency: 1,
|
||||
flushIntervalMs: 100,
|
||||
flushBatchSize: 1,
|
||||
leaderLockTimeoutMs: 5000,
|
||||
leaderLockExtendIntervalMs: 1000,
|
||||
ackIntervalSeconds: 5,
|
||||
});
|
||||
|
||||
await runsReplicationService.start();
|
||||
|
||||
// Runs after each test in the current context
|
||||
afterEach(async () => {
|
||||
// Clean up resources here
|
||||
await runsReplicationService.stop();
|
||||
});
|
||||
|
||||
return {
|
||||
clickhouse,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user