Testing
Building regular unit tests would require to create a mock elasticsearch cluster, which is too much a chore for a one man show. Running a regular elasticsearch cluster on Codeberg CI is not economically reasonable.
Therefore I run tests manually. Here's how.
Dependencies
The following is required:
- linux, any distro will do
- docker in a decent version
- mosscap version
0.0.17or higher.
Docker
There's a ready to use docker compose file, which fires up an
elasticsearch cluster with 3 nodes. To start it manually just execute
make up.
When it's up and running it should look like this:
$ docker ps
NAMES STATUS PORTS
t-es03-1 Up 16 minutes (healthy) 9200/tcp, 9300/tcp
t-es02-1 Up 16 minutes (healthy) 9200/tcp, 9300/tcp
t-es01-1 Up 16 minutes (healthy) 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp
There's an esctl config file cluster.yaml, which you can use to
access that elasticsearch cluster, e.g.:
$ esctl -c cluster.yaml cluster status
DOCKER/DOMDOC STATUS
Cluster Name domdoc
ES Status green
ES Version 9.4.2
Is Leader false
Active Shards 8
Active Primary Shards 4
Unassigned Shards 0
Unassigned Primary Shards 0
Pending Tasks 0
Nodes 3
Red Indices 0
Long Running Tasks 0
Automated Tests
To execute the automated tests, just execute make test. This boots
up the elasticsearch containers, waits until they are up and running,
creates data on it and queries it.
Cleanup
To just clean up the elasticsearch cluster run make clean.
To remove everything, run make clean-docker.
Reference
Mosscap configs
| CONFIG | DESCRIPTION |
|---|---|
| msc-actions.yaml | contains all actions, used by all item configs |
| msc-docker.yaml | single item: used to wait until elasticsearch containers are healthy |
| msc-cluster.yaml | single item: create indices etc |
| msc-docs.yaml | generator items: put docs into the index |
| msc-search.yaml | single item: do some searches |
| msc-clean.yaml | single item: clean up the elasticsearch cluster |