diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58a22bf7..b56065f7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,9 +40,12 @@ with `make test-go PKG=akvorado/orchestrator/clickhouse`. Using just `go test` would work, but `make test-go` also runs linting and formatting automatically. If possible, tests should not rely on external components, but when it becomes -hard to do so, it is possible to spawns services through Docker. Locally, one -can spawns them through `docker compose -f docker/docker-compose-dev.yml`. -GitHub actions are using services to spawn them. +hard to do so, it is possible to spawn services through Docker. Locally, one +can spawn them through `docker compose -f docker/docker-compose-dev.yml`: + +- `... up clickhouse` to spawn a single ClickHouse +- `... up clickhouse-\*` to spawn a ClickHouse cluster +- `... up kafka` to spawn a Kafka broker For manual end-to-end tests, you can use `make docker-dev` to build a Docker container of Akvorado, then use `docker compose up` to run Docker compose. diff --git a/common/clickhousedb/tests.go b/common/clickhousedb/tests.go index f1669492..a9975d41 100644 --- a/common/clickhousedb/tests.go +++ b/common/clickhousedb/tests.go @@ -22,11 +22,14 @@ import ( func SetupClickHouse(t *testing.T, r *reporter.Reporter, cluster bool) *Component { t.Helper() config := DefaultConfiguration() - config.Servers = []string{ - helpers.CheckExternalService(t, "ClickHouse", []string{"clickhouse:9000", "127.0.0.1:9000"}), - } - if cluster { - helpers.CheckExternalService(t, "ClickHouse cluster", []string{"clickhouse-2:9000", "127.0.0.1:9001"}) + if !cluster { + config.Servers = []string{ + helpers.CheckExternalService(t, "ClickHouse", []string{"clickhouse:9000", "127.0.0.1:9000"}), + } + } else { + config.Servers = []string{ + helpers.CheckExternalService(t, "ClickHouse cluster", []string{"clickhouse-2:9000", "127.0.0.1:9002"}), + } config.Cluster = "akvorado" } config.DialTimeout = 100 * time.Millisecond diff --git a/docker/clickhouse/cluster.xml b/docker/clickhouse/cluster.xml index a78382a1..3546c813 100644 --- a/docker/clickhouse/cluster.xml +++ b/docker/clickhouse/cluster.xml @@ -7,7 +7,7 @@ true - clickhouse + clickhouse-1 9000 diff --git a/docker/clickhouse/standalone.xml b/docker/clickhouse/standalone.xml new file mode 100644 index 00000000..391bcfd6 --- /dev/null +++ b/docker/clickhouse/standalone.xml @@ -0,0 +1,4 @@ + + + 0 + diff --git a/docker/docker-compose-dev.yml b/docker/docker-compose-dev.yml index a3cf815f..412bad95 100644 --- a/docker/docker-compose-dev.yml +++ b/docker/docker-compose-dev.yml @@ -121,41 +121,47 @@ services: extends: file: versions.yml service: clickhouse - depends_on: - - clickhouse-keeper-1 environment: - CLICKHOUSE_SKIP_USER_SETUP=1 - CLICKHOUSE_ALWAYS_RUN_INITDB_SCRIPTS=1 cap_add: - SYS_NICE volumes: - - ./clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - - ./clickhouse/cluster-1.xml:/etc/clickhouse-server/config.d/cluster-1.xml + - ./clickhouse/standalone.xml:/etc/clickhouse-server/config.d/standalone.xml - ./clickhouse/test-db.sql:/docker-entrypoint-initdb.d/test-db.sql ports: - 127.0.0.1:8123:8123/tcp - 127.0.0.1:9000:9000/tcp - clickhouse-2: + clickhouse-1: &clickhouse-cluster <<: *clickhouse + depends_on: + - clickhouse-keeper-1 + volumes: + - ./clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml + - ./clickhouse/cluster-1.xml:/etc/clickhouse-server/config.d/cluster-1.xml + ports: + - 127.0.0.1:9001:9000/tcp + clickhouse-2: + <<: *clickhouse-cluster volumes: - ./clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - ./clickhouse/cluster-2.xml:/etc/clickhouse-server/config.d/cluster-2.xml ports: - - 127.0.0.1:9001:9000/tcp + - 127.0.0.1:9002:9000/tcp clickhouse-3: - <<: *clickhouse + <<: *clickhouse-cluster volumes: - ./clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - ./clickhouse/cluster-3.xml:/etc/clickhouse-server/config.d/cluster-3.xml ports: - - 127.0.0.1:9002:9000/tcp + - 127.0.0.1:9003:9000/tcp clickhouse-4: - <<: *clickhouse + <<: *clickhouse-cluster volumes: - ./clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - ./clickhouse/cluster-4.xml:/etc/clickhouse-server/config.d/cluster-4.xml ports: - - 127.0.0.1:9003:9000/tcp + - 127.0.0.1:9004:9000/tcp clickhouse-keeper-1: extends: file: versions.yml