Creating a test environment
The following documentation is written for use on Linux systems. If you are using a different operating system, please adjust the commands accordingly if we have prebuilt binaries for your system.
However, please note we do not compile for MacOS so you will need to compile from source.
You need a test environment for several reasons:
- Creation of new parsers or scenarios
- Testing new features or in general
- Showcase a bug or a corner-case
This can be done directly with the tarball of the release :
VER=1.6.3 # Please check https://github.com/crowdsecurity/crowdsec/releases/latest for latest version
wget https://github.com/crowdsecurity/crowdsec/releases/download/v$VER/crowdsec-release.tgz
tar xvzf crowdsec-release.tgz
cd crowdsec-v$VER
./test_env.sh
You receive a directory structure like this:
crowdsec-v
|- cmd
| |- crowdsec
| |- crowdsec-cli
|- config
| |- patterns
|- plugins
| |- notifications
|- tests
|- config
|- data
|- logs
|- plugins
The test environment is available in the folder tests
and provides a functional CrowdSec environment :
cd tests
./crowdsec -c dev.yaml
cscli
should be functional as well :
cd tests
./cscli -c dev.yaml hub list
In the test environment the configurations are in the folder config/
.
Add hub repository to test environment
You only need to add this if you want to develop parsers and scenarios
# cd tests # if you are already in tests no need to cd
git clone https://github.com/crowdsecurity/hub
cd hub
Great! since we cloned the hub repository we can now run cscli
commands within here for example:
../cscli -c ../dev.yaml hubtest run --all
That command will now run all tests within the hub repository. Please take note about the ../
infront of cscli
and dev.yaml
as these are in the folder above our current working directory.
A helpful tip to save you typing the whole command everytime is to set an shell alias example:
alias csdev="$(dirname $PWD)/cscli -c $(dirname $PWD)/dev.yaml"
Then you can run command as
csdev hubtest run --all
However, this is temporary alias set within the shell so please add to .bashrc
or your shell equivalent.