@zukhruf/testing 0.3.36 → 0.3.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -36
- package/dist/databases/clickhouse.d.ts +3 -3
- package/dist/databases/clickhouse.d.ts.map +1 -1
- package/dist/databases/clickhouse.js +2 -3
- package/dist/databases/clickhouse.js.map +1 -1
- package/dist/databases/database.d.ts +2 -2
- package/dist/databases/database.d.ts.map +1 -1
- package/dist/databases/mysql-family-server.d.ts.map +1 -1
- package/dist/databases/mysql-family-server.js +5 -4
- package/dist/databases/mysql-family-server.js.map +1 -1
- package/dist/databases/postgres.d.ts.map +1 -1
- package/dist/databases/postgres.js +11 -4
- package/dist/databases/postgres.js.map +1 -1
- package/dist/databases/sqlserver.d.ts.map +1 -1
- package/dist/databases/sqlserver.js +3 -5
- package/dist/databases/sqlserver.js.map +1 -1
- package/dist/databases/succeeded.d.ts +7 -0
- package/dist/databases/succeeded.d.ts.map +1 -0
- package/dist/databases/succeeded.js +11 -0
- package/dist/databases/succeeded.js.map +1 -0
- package/dist/docker/fixtures.d.ts +84 -0
- package/dist/docker/fixtures.d.ts.map +1 -0
- package/dist/docker/fixtures.js +265 -0
- package/dist/docker/fixtures.js.map +1 -0
- package/dist/docker/host.d.ts +3 -10
- package/dist/docker/host.d.ts.map +1 -1
- package/dist/docker/host.js +21 -41
- package/dist/docker/host.js.map +1 -1
- package/dist/docker/index.d.ts +2 -3
- package/dist/docker/index.d.ts.map +1 -1
- package/dist/docker/index.js +2 -3
- package/dist/docker/index.js.map +1 -1
- package/dist/docker/service-container.d.ts +20 -0
- package/dist/docker/service-container.d.ts.map +1 -0
- package/dist/docker/service-container.js +30 -0
- package/dist/docker/service-container.js.map +1 -0
- package/dist/docker/test-run.d.ts +13 -0
- package/dist/docker/test-run.d.ts.map +1 -1
- package/dist/docker/test-run.js +25 -0
- package/dist/docker/test-run.js.map +1 -1
- package/dist/scripts/docker-cleanup-worker.d.ts +21 -0
- package/dist/scripts/docker-cleanup-worker.d.ts.map +1 -0
- package/dist/scripts/docker-cleanup-worker.js +31 -0
- package/dist/scripts/docker-cleanup-worker.js.map +1 -0
- package/dist/scripts/docker-global-setup.d.ts +1 -1
- package/dist/scripts/docker-global-setup.d.ts.map +1 -1
- package/dist/scripts/docker-global-setup.js +88 -128
- package/dist/scripts/docker-global-setup.js.map +1 -1
- package/dist/scripts/run-cleanup.d.ts +17 -0
- package/dist/scripts/run-cleanup.d.ts.map +1 -0
- package/dist/scripts/run-cleanup.js +75 -0
- package/dist/scripts/run-cleanup.js.map +1 -0
- package/package.json +2 -1
- package/dist/docker/container.d.ts +0 -30
- package/dist/docker/container.d.ts.map +0 -1
- package/dist/docker/container.js +0 -53
- package/dist/docker/container.js.map +0 -1
- package/dist/docker/docker.d.ts +0 -74
- package/dist/docker/docker.d.ts.map +0 -1
- package/dist/docker/docker.js +0 -258
- package/dist/docker/docker.js.map +0 -1
- package/dist/docker/volume.d.ts +0 -9
- package/dist/docker/volume.d.ts.map +0 -1
- package/dist/docker/volume.js +0 -13
- package/dist/docker/volume.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/docker/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,eAAe,EAAE,MAAM,YAAY,CAAC;AAK1D,wFAAwF;AACxF,MAAM,OAAO,SAAS;IACX,WAAW,CAAS;IACpB,OAAO,CAAgB;IAEhC,YAAY,WAAmB,EAAE,OAAsB;QACrD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,mDAAmD;IAC1C,IAAI,GAAG,CAAC,OAAiB,EAAmB,EAAE,CACrD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAEvD,gFAAgF;IAChF,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CACxE,CAAC,KAAc,EAAE,EAAE;YACjB,IACE,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC;gBACnC,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAExC,MAAM,KAAK,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAED,CAAC,MAAM,CAAC,YAAY,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IACpC,IAAI,GAAG,WAAW,CAAC;IACnB,IAAI,CAAS;IACtB,+EAA+E;IACtE,UAAU,CAAsB;IAEzC,YACE,WAAmB,EACnB,IAAY,EACZ,OAAsB,EACtB,UAA+B;QAE/B,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,oGAAoG;IAC3F,KAAK,CAAC,OAAO;QACpB,YAAY,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
|
package/dist/docker/docker.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Container, type DockerCommand, ServiceContainer } from './container.ts';
|
|
2
|
-
import { DockerDirectory } from './directory.ts';
|
|
3
|
-
import type { TestRun } from './test-run.ts';
|
|
4
|
-
import { DockerVolume } from './volume.ts';
|
|
5
|
-
/** Marks a server that `reuse()` shares across processes and runs. */
|
|
6
|
-
export declare const SHARED_SERVER_LABEL = "dev.zukhruf.testing.shared";
|
|
7
|
-
/** A volume or a path on the engine's host, mounted into a container. */
|
|
8
|
-
export interface Mount {
|
|
9
|
-
/** A volume's name, or an absolute path on the engine's host. */
|
|
10
|
-
source: string;
|
|
11
|
-
target: string;
|
|
12
|
-
readOnly?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface ContainerOptions {
|
|
15
|
-
image: string;
|
|
16
|
-
/** Replaces the image's command. */
|
|
17
|
-
command?: string[];
|
|
18
|
-
/** A dedicated container gets a generated name; a reused server's name comes from its configuration. */
|
|
19
|
-
name?: string;
|
|
20
|
-
hostname?: string;
|
|
21
|
-
env?: Record<string, string>;
|
|
22
|
-
labels?: Record<string, string> | undefined;
|
|
23
|
-
mounts?: Mount[];
|
|
24
|
-
tmpfs?: string[];
|
|
25
|
-
ipcHost?: boolean;
|
|
26
|
-
memory?: string;
|
|
27
|
-
cpus?: number;
|
|
28
|
-
memorySwappiness?: number;
|
|
29
|
-
}
|
|
30
|
-
export interface ServiceOptions extends ContainerOptions {
|
|
31
|
-
/** The container's port that answers on 127.0.0.1 of this machine. */
|
|
32
|
-
internalPort: number;
|
|
33
|
-
/** Runs on every acquisition. Throw until ready, using timebox for polling. */
|
|
34
|
-
healthy?: (container: ServiceContainer) => unknown;
|
|
35
|
-
}
|
|
36
|
-
export interface DockerOptions {
|
|
37
|
-
/** The run that owns what this process creates: `TestRun.fromEnvironment(process.env)`. */
|
|
38
|
-
testRun?: TestRun | undefined;
|
|
39
|
-
}
|
|
40
|
-
/** The engine the Docker CLI selects. Docker owns cross-process coordination; this instance holds no server cache. */
|
|
41
|
-
export declare class Docker {
|
|
42
|
-
#private;
|
|
43
|
-
constructor({ testRun }?: DockerOptions);
|
|
44
|
-
/** Defaults for disposable test containers, including external launchers. */
|
|
45
|
-
get defaults(): {
|
|
46
|
-
resources: {
|
|
47
|
-
memory: string;
|
|
48
|
-
cpus: number;
|
|
49
|
-
};
|
|
50
|
-
labels: Record<string, string>;
|
|
51
|
-
};
|
|
52
|
-
info(): Promise<{
|
|
53
|
-
architecture: string;
|
|
54
|
-
endpoint: string;
|
|
55
|
-
}>;
|
|
56
|
-
directory(): Promise<DockerDirectory>;
|
|
57
|
-
/** Creates a named volume. Its run's cleanup removes it if this process dies first. */
|
|
58
|
-
volume(): Promise<DockerVolume>;
|
|
59
|
-
readonly command: DockerCommand;
|
|
60
|
-
isAvailable(): Promise<boolean>;
|
|
61
|
-
/** Starts a container this process owns. It stays after it stops, until disposal removes it. */
|
|
62
|
-
start(options: ContainerOptions): Promise<Container>;
|
|
63
|
-
/** Starts a dedicated server. Failure or disposal stops it, and a stopped server is removed. */
|
|
64
|
-
serve(options: ServiceOptions): Promise<ServiceContainer>;
|
|
65
|
-
/**
|
|
66
|
-
* Reuse one server per configuration on this daemon, across processes/runs.
|
|
67
|
-
* Docker reserves the name atomically. Readiness failure leaves it running.
|
|
68
|
-
* Only explicitly dispose the returned container after all its users finish.
|
|
69
|
-
*/
|
|
70
|
-
reuse(options: ServiceOptions): Promise<ServiceContainer>;
|
|
71
|
-
/** Runs a container to completion and returns its standard output. The container is removed afterwards. */
|
|
72
|
-
run(options: ContainerOptions): Promise<string>;
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/docker/docker.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,KAAK,aAAa,EAClB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAGhE,yEAAyE;AACzE,MAAM,WAAW,KAAK;IACpB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wGAAwG;IACxG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC;CACpD;AAED,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AA2BD,sHAAsH;AACtH,qBAAa,MAAM;;gBAcL,EAAE,OAAO,EAAE,GAAE,aAAkB;IAI3C,6EAA6E;IAC7E,IAAI,QAAQ,IAAI;QACd,SAAS,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAKA;IAEK,IAAI,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAU3D,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAI3C,uFAAuF;IACjF,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAYrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CACY;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC,gGAAgG;IAC1F,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1D,gGAAgG;IAC1F,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe/D;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB/D,2GAA2G;IACrG,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CA6KtD"}
|
package/dist/docker/docker.js
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
-
import { SubprocessError } from 'nano-spawn';
|
|
3
|
-
import pMemoize from 'p-memoize';
|
|
4
|
-
import { timebox } from "../async/timebox.js";
|
|
5
|
-
import { Container, ServiceContainer, } from "./container.js";
|
|
6
|
-
import { DockerDirectory } from "./directory.js";
|
|
7
|
-
import { DockerHost } from "./host.js";
|
|
8
|
-
import { DockerVolume } from "./volume.js";
|
|
9
|
-
/** Marks a server that `reuse()` shares across processes and runs. */
|
|
10
|
-
export const SHARED_SERVER_LABEL = 'dev.zukhruf.testing.shared';
|
|
11
|
-
const CONFIG_LABEL = 'dev.zukhruf.testing.config';
|
|
12
|
-
const labelArgs = (labels) => Object.entries(labels).flatMap(([key, value]) => [
|
|
13
|
-
'--label',
|
|
14
|
-
`${key}=${value}`,
|
|
15
|
-
]);
|
|
16
|
-
const publish = (internalPort) => [
|
|
17
|
-
'-p',
|
|
18
|
-
`127.0.0.1::${internalPort}`,
|
|
19
|
-
];
|
|
20
|
-
const byKey = ([a], [b]) => {
|
|
21
|
-
if (a < b)
|
|
22
|
-
return -1;
|
|
23
|
-
if (a > b)
|
|
24
|
-
return 1;
|
|
25
|
-
return 0;
|
|
26
|
-
};
|
|
27
|
-
/** The engine the Docker CLI selects. Docker owns cross-process coordination; this instance holds no server cache. */
|
|
28
|
-
export class Docker {
|
|
29
|
-
#testRun;
|
|
30
|
-
// The first resolution pins the engine: handles keep the engine they were
|
|
31
|
-
// made on. It records this process in the run before any command runs.
|
|
32
|
-
#connection = pMemoize(() => DockerHost.resolve(this.#testRun));
|
|
33
|
-
#probe = pMemoize(async () => {
|
|
34
|
-
try {
|
|
35
|
-
await this.command(['info']);
|
|
36
|
-
return { available: true };
|
|
37
|
-
}
|
|
38
|
-
catch (cause) {
|
|
39
|
-
return { available: false, cause };
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
constructor({ testRun } = {}) {
|
|
43
|
-
this.#testRun = testRun;
|
|
44
|
-
}
|
|
45
|
-
/** Defaults for disposable test containers, including external launchers. */
|
|
46
|
-
get defaults() {
|
|
47
|
-
return {
|
|
48
|
-
resources: { memory: '1g', cpus: 1 },
|
|
49
|
-
labels: this.#testRun?.labels ?? {},
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
async info() {
|
|
53
|
-
const host = await this.#connection();
|
|
54
|
-
const { stdout } = await host.command([
|
|
55
|
-
'info',
|
|
56
|
-
'--format',
|
|
57
|
-
'{{.Architecture}}',
|
|
58
|
-
]);
|
|
59
|
-
return { architecture: stdout.trim(), endpoint: host.endpoint };
|
|
60
|
-
}
|
|
61
|
-
async directory() {
|
|
62
|
-
return DockerDirectory.create(await this.#connection(), this.#testRun);
|
|
63
|
-
}
|
|
64
|
-
/** Creates a named volume. Its run's cleanup removes it if this process dies first. */
|
|
65
|
-
async volume() {
|
|
66
|
-
const host = await this.#require();
|
|
67
|
-
const name = `zukhruf-testing-${randomUUID()}`;
|
|
68
|
-
await host.command([
|
|
69
|
-
'volume',
|
|
70
|
-
'create',
|
|
71
|
-
...labelArgs(this.defaults.labels),
|
|
72
|
-
name,
|
|
73
|
-
]);
|
|
74
|
-
return new DockerVolume(name, host.command);
|
|
75
|
-
}
|
|
76
|
-
command = async (args) => (await this.#connection()).command(args);
|
|
77
|
-
async isAvailable() {
|
|
78
|
-
return (await this.#probe()).available;
|
|
79
|
-
}
|
|
80
|
-
async #require() {
|
|
81
|
-
const probe = await this.#probe();
|
|
82
|
-
if (!probe.available)
|
|
83
|
-
throw new Error('Docker is required for container-backed tests', {
|
|
84
|
-
cause: probe.cause,
|
|
85
|
-
});
|
|
86
|
-
return this.#connection();
|
|
87
|
-
}
|
|
88
|
-
/** Starts a container this process owns. It stays after it stops, until disposal removes it. */
|
|
89
|
-
async start(options) {
|
|
90
|
-
const host = await this.#require();
|
|
91
|
-
return new Container(await this.#detach(host, [], options), host.command);
|
|
92
|
-
}
|
|
93
|
-
/** Starts a dedicated server. Failure or disposal stops it, and a stopped server is removed. */
|
|
94
|
-
async serve(options) {
|
|
95
|
-
const host = await this.#require();
|
|
96
|
-
const id = await this.#detach(host, ['--rm', ...publish(options.internalPort)], options);
|
|
97
|
-
try {
|
|
98
|
-
return await this.#ready(host, id, options);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
await host.command(['stop', id]).catch(() => { });
|
|
102
|
-
throw error;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Reuse one server per configuration on this daemon, across processes/runs.
|
|
107
|
-
* Docker reserves the name atomically. Readiness failure leaves it running.
|
|
108
|
-
* Only explicitly dispose the returned container after all its users finish.
|
|
109
|
-
*/
|
|
110
|
-
async reuse(options) {
|
|
111
|
-
const host = await this.#require();
|
|
112
|
-
const fingerprint = this.#fingerprint(options);
|
|
113
|
-
const name = options.name ?? `zukhruf-testing-${fingerprint}`;
|
|
114
|
-
const inspected = (await this.#inspect(host, name)) ??
|
|
115
|
-
(await this.#create(host, name, fingerprint, options));
|
|
116
|
-
if (inspected.Config.Labels?.[SHARED_SERVER_LABEL] !== '1' ||
|
|
117
|
-
inspected.Config.Labels[CONFIG_LABEL] !== fingerprint) {
|
|
118
|
-
throw new Error(`Container ${name} does not match the shared test configuration`);
|
|
119
|
-
}
|
|
120
|
-
if (inspected.State.Status !== 'running') {
|
|
121
|
-
await host.command(['start', inspected.Id]);
|
|
122
|
-
}
|
|
123
|
-
return this.#ready(host, inspected.Id, options);
|
|
124
|
-
}
|
|
125
|
-
/** Runs a container to completion and returns its standard output. The container is removed afterwards. */
|
|
126
|
-
async run(options) {
|
|
127
|
-
const host = await this.#require();
|
|
128
|
-
return this.#launch(host, ['run', '--rm'], options);
|
|
129
|
-
}
|
|
130
|
-
async #create(host, name, fingerprint, options) {
|
|
131
|
-
try {
|
|
132
|
-
await host.command([
|
|
133
|
-
'create',
|
|
134
|
-
'--rm',
|
|
135
|
-
...publish(options.internalPort),
|
|
136
|
-
...this.#args({
|
|
137
|
-
...options,
|
|
138
|
-
name,
|
|
139
|
-
labels: {
|
|
140
|
-
...options.labels,
|
|
141
|
-
[SHARED_SERVER_LABEL]: '1',
|
|
142
|
-
[CONFIG_LABEL]: fingerprint,
|
|
143
|
-
},
|
|
144
|
-
}),
|
|
145
|
-
options.image,
|
|
146
|
-
...(options.command ?? []),
|
|
147
|
-
]);
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
if (!(error instanceof SubprocessError) ||
|
|
151
|
-
!error.stderr.includes('is already in use by container'))
|
|
152
|
-
throw error;
|
|
153
|
-
}
|
|
154
|
-
// A competing create reserves the name before Docker registers it for
|
|
155
|
-
// inspection. Retry only that absence, not daemon or permission errors.
|
|
156
|
-
const pending = new Error(`Container ${name} is not visible yet`);
|
|
157
|
-
return timebox(async () => {
|
|
158
|
-
const container = await this.#inspect(host, name);
|
|
159
|
-
if (!container)
|
|
160
|
-
throw pending;
|
|
161
|
-
return container;
|
|
162
|
-
}, { shouldRetry: ({ error }) => error === pending });
|
|
163
|
-
}
|
|
164
|
-
async #detach(host, flags, options) {
|
|
165
|
-
const id = (await this.#launch(host, ['run', '--detach', ...flags], options)).trim();
|
|
166
|
-
if (!id)
|
|
167
|
-
throw new Error(`Docker started no container from ${options.image}`);
|
|
168
|
-
return id;
|
|
169
|
-
}
|
|
170
|
-
async #launch(host, verb, options) {
|
|
171
|
-
const name = options.name ??
|
|
172
|
-
`test-${options.image.replace(/[^a-zA-Z0-9_.-]/g, '-')}-${randomUUID()}`;
|
|
173
|
-
const labels = { ...options.labels, ...this.defaults.labels };
|
|
174
|
-
const { stdout } = await host.command([
|
|
175
|
-
...verb,
|
|
176
|
-
...this.#args({ ...options, name, labels }),
|
|
177
|
-
options.image,
|
|
178
|
-
...(options.command ?? []),
|
|
179
|
-
]);
|
|
180
|
-
return stdout;
|
|
181
|
-
}
|
|
182
|
-
#fingerprint(options) {
|
|
183
|
-
const { resources } = this.defaults;
|
|
184
|
-
return createHash('sha256')
|
|
185
|
-
.update(JSON.stringify({
|
|
186
|
-
transportVersion: 2,
|
|
187
|
-
memory: options.memory ?? resources.memory,
|
|
188
|
-
cpus: options.cpus ?? resources.cpus,
|
|
189
|
-
image: options.image,
|
|
190
|
-
command: options.command ?? [],
|
|
191
|
-
hostname: options.hostname,
|
|
192
|
-
internalPort: options.internalPort,
|
|
193
|
-
env: Object.entries(options.env ?? {}).sort(byKey),
|
|
194
|
-
labels: Object.entries(options.labels ?? {}).sort(byKey),
|
|
195
|
-
mounts: options.mounts ?? [],
|
|
196
|
-
tmpfs: options.tmpfs ?? [],
|
|
197
|
-
ipcHost: Boolean(options.ipcHost),
|
|
198
|
-
memorySwappiness: options.memorySwappiness,
|
|
199
|
-
}))
|
|
200
|
-
.digest('hex');
|
|
201
|
-
}
|
|
202
|
-
#args(options) {
|
|
203
|
-
const { resources } = this.defaults;
|
|
204
|
-
return [
|
|
205
|
-
'--name',
|
|
206
|
-
options.name,
|
|
207
|
-
...(options.hostname ? ['--hostname', options.hostname] : []),
|
|
208
|
-
...labelArgs(options.labels ?? {}),
|
|
209
|
-
...Object.entries(options.env ?? {}).flatMap(([key, value]) => [
|
|
210
|
-
'-e',
|
|
211
|
-
`${key}=${value}`,
|
|
212
|
-
]),
|
|
213
|
-
...(options.mounts ?? []).flatMap(({ source, target, readOnly }) => [
|
|
214
|
-
'--volume',
|
|
215
|
-
`${source}:${target}${readOnly ? ':ro' : ''}`,
|
|
216
|
-
]),
|
|
217
|
-
...(options.tmpfs ?? []).flatMap((spec) => ['--tmpfs', spec]),
|
|
218
|
-
...(options.ipcHost ? ['--ipc=host'] : []),
|
|
219
|
-
...(options.memorySwappiness === undefined
|
|
220
|
-
? []
|
|
221
|
-
: [`--memory-swappiness=${options.memorySwappiness}`]),
|
|
222
|
-
'--memory',
|
|
223
|
-
options.memory ?? resources.memory,
|
|
224
|
-
'--cpus',
|
|
225
|
-
String(options.cpus ?? resources.cpus),
|
|
226
|
-
];
|
|
227
|
-
}
|
|
228
|
-
async #inspect(host, name) {
|
|
229
|
-
try {
|
|
230
|
-
const { stdout } = await host.command(['container', 'inspect', name]);
|
|
231
|
-
const [container] = JSON.parse(stdout);
|
|
232
|
-
return container;
|
|
233
|
-
}
|
|
234
|
-
catch (error) {
|
|
235
|
-
if (error instanceof SubprocessError &&
|
|
236
|
-
/No such (object|container):/i.test(error.stderr))
|
|
237
|
-
return undefined;
|
|
238
|
-
throw error;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
async #ready(host, id, { internalPort, healthy }) {
|
|
242
|
-
const { stdout } = await host.command(['port', id, String(internalPort)]);
|
|
243
|
-
const port = /:(\d+)$/.exec(stdout.trim())?.[1];
|
|
244
|
-
if (!port)
|
|
245
|
-
throw new Error(`Failed to get mapped port for container ${id}: ${stdout}`);
|
|
246
|
-
const connection = await host.forward(Number.parseInt(port, 10));
|
|
247
|
-
const container = new ServiceContainer(id, connection.port, host.command, connection.close);
|
|
248
|
-
try {
|
|
249
|
-
await healthy?.(container);
|
|
250
|
-
return container;
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
await container.disconnect();
|
|
254
|
-
throw error;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
//# sourceMappingURL=docker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/docker/docker.ts"],"names":[],"mappings":"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"}
|
package/dist/docker/volume.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { DockerCommand } from './container.ts';
|
|
2
|
-
/** A named volume this process created. Disposal removes it. */
|
|
3
|
-
export declare class DockerVolume implements AsyncDisposable {
|
|
4
|
-
#private;
|
|
5
|
-
readonly name: string;
|
|
6
|
-
constructor(name: string, command: DockerCommand);
|
|
7
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=volume.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume.d.ts","sourceRoot":"","sources":["../../src/docker/volume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,gEAAgE;AAChE,qBAAa,YAAa,YAAW,eAAe;;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAK1C,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
|
package/dist/docker/volume.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** A named volume this process created. Disposal removes it. */
|
|
2
|
-
export class DockerVolume {
|
|
3
|
-
name;
|
|
4
|
-
#command;
|
|
5
|
-
constructor(name, command) {
|
|
6
|
-
this.name = name;
|
|
7
|
-
this.#command = command;
|
|
8
|
-
}
|
|
9
|
-
async [Symbol.asyncDispose]() {
|
|
10
|
-
await this.#command(['volume', 'rm', '--force', this.name]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=volume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/docker/volume.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAChE,MAAM,OAAO,YAAY;IACd,IAAI,CAAS;IACb,QAAQ,CAAgB;IAEjC,YAAY,IAAY,EAAE,OAAsB;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}
|