# Testing Building regular unit tests would require to create a mock elasticsearch cluster, which is too much a chrore 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](https://codeberg.org/scip/mosscap) # 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: ```console 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.: ```console 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 |