7) in the it/dep repo that contains a1 helm chart, ``values.yaml``, ``Chart.yml``
+Version bumping rmr-python
+==========================
+rmr-python is a critial dependency of A1. Bumping the rmr version dependency requires changes in:
+
+1) ``setup.py``
+
+2) ``Dockerfile``
+
+3) ``integration_tests/Dockerfile``
+
+Run the integration tests after attempting this.
+
Unit Testing
============
Note, before this will work, for the first time on the machine running the tests, run ``./install_deps.sh``. This is only needed once on the machine.
tox
open htmlcov/index.html
+Alternatively, you can run the unit tests in Docker (this is somewhat less nice because you don't get the pretty HTML)
+
+::
+
+ docker build --no-cache -t a1test:latest -f Dockerfile-Unit-Test
+
Integration testing
===================
This tests A1’s external API with two test receivers. This depends on helm+k8s, meaning you cannot run this if this is not installed.
cd integration_tests
docker build --no-cache -t testreceiver:latest .
-You do not need the "bombarder" image as they are not currently used in the integration tests (that is more for load testing).
-
Finally, run all the tests from the root (this requires the python packages ``tox``, ``pytest``, and ``tavern``).
::
4. Barrages the server with apache bench
5. Tears everything down
+Unless you're a core A1 developer, you should probably stop here. The below instructions
+are for running A1 locally, without docker, and is much more involved (however useful when developing a1).
+
Running locally
===============
1. Before this will work, for the first time on that machine, run ``./install_deps.sh``
-2. It also requires rmr-python >= 0.10.1 installed. (The dockerfile also
- does this)
+2. It also requires rmr-python installed. (The dockerfile does this)
3. Create a ``local.rt`` file and copy it into ``/opt/route/local.rt``.
- Note, the example one in ``local_tests`` will need to be modified for
+ Note, the example one in ``integration_tests`` will need to be modified for
your scenario and machine.
4. Copy a ric manifest into ``/opt/ricmanifest.json`` and an rmr mapping
::
- cp tests/fixtures/ricmanifest.json /opt/ricmanifest.json cp
- tests/fixtures/rmr_string_int_mapping.txt
- /opt/rmr_string_int_mapping.txt
+ cp tests/fixtures/ricmanifest.json /opt/ricmanifest.json
+ cp tests/fixtures/rmr_string_int_mapping.txt /opt/rmr_string_int_mapping.txt
5. Then:
- sudo pip install –ignore-installed .; set -x LD_LIBRARY_PATH
- /usr/local/lib/; set -x RMR_SEED_RT /opt/route/local.rt ; set -x
- RMR_RCV_RETRY_INTERVAL 500; set -x RMR_RETRY_TIMES 10;
+ ::
+
+ sudo pip install -e .
+ set -x LD_LIBRARY_PATH /usr/local/lib/; set -x RMR_SEED_RT /opt/route/local.rt ; set -x RMR_RCV_RETRY_INTERVAL 500; set -x RMR_RETRY_TIMES 10;
/usr/bin/run.py
-Testing locally
-===============
There are also two test receivers in ``integration_tests`` you can run locally.
The first is meant to be used with the ``control_admission`` policy
curl -v -X PUT -H "Content-Type: application/json" -d '{}' localhost:10000/ric/policies/test_policy
curl -v -X PUT -H "Content-Type: application/json" -d '{ "enforce":true, "window_length":10, "blocking_rate":20, "trigger_threshold":10 }' localhost:10000/ric/policies/admission_control_policy
-
-Finally, there is a test “bombarder” that will flood A1 with messages
-with good message types but bad transaction IDs, to test A1’s resilience
-against queue-overflow attacks
-
-::
-
- set -x LD_LIBRARY_PATH /usr/local/lib/; set -x RMR_SEED_RT /opt/route/local.rt ; python bombard.py
+ curl -v localhost:10000/ric/policies/admission_control_policy
+ curl -v localhost:10000/a1-p/healthcheck