Skip to content

InfluxDB

Install

1
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();