InfluxDB
Install
| npm install @testcontainers/influxdb --save-dev
|
Examples
The InfluxDB 2.x examples use the following libraries:
InfluxDBContainer supports both InfluxDB 2.x and the legacy 1.x line. The major version is derived from the image tag, so substitute IMAGE with a 2.x tag (the default flavour) or a 1.x tag from the container registry.
Write and query points (InfluxDB 2.x)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | await using container = await new InfluxDBContainer(INFLUXDB2_IMAGE).withAdminToken("my-secret-token").start();
const influxDB = new InfluxDB({ url: container.getUrl(), token: container.getAdminToken() });
const writeApi = influxDB.getWriteApi(container.getOrganization(), container.getBucket());
writeApi.writePoint(new Point("temperature").tag("location", "room1").floatField("value", 23.5));
await writeApi.close();
const queryApi = influxDB.getQueryApi(container.getOrganization());
const rows = await queryApi.collectRows<{ _value: number }>(
`from(bucket: "${container.getBucket()}") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "temperature")`
);
expect(rows.length).toBeGreaterThan(0);
expect(rows[0]._value).toBe(23.5);
|
Write and query points (InfluxDB 1.x)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | await using container = await new InfluxDBContainer(INFLUXDB1_IMAGE)
.withDatabase("testdb")
.withAuthEnabled(false)
.start();
expect(container.isInfluxDB2()).toBe(false);
expect(container.getDatabase()).toBe("testdb");
const writeResponse = await fetch(`${container.getUrl()}/write?db=${container.getDatabase()}`, {
method: "POST",
body: "cpu_load,host=server01 value=0.64",
});
expect(writeResponse.status).toBe(204);
const query = encodeURIComponent("SELECT * FROM cpu_load");
const queryResponse = await fetch(`${container.getUrl()}/query?db=${container.getDatabase()}&q=${query}`);
expect(queryResponse.status).toBe(200);
const body = (await queryResponse.json()) as { results: unknown[] };
expect(body.results).toBeDefined();
|