Supply End User Monitoring System
###Install and Setup PostgreSQL
- For Mac users, run the following
$ brew install postgres
- Install Postgres using homebrew$ postgres -D /usr/local/var/postgres
- Start the postgres server$ createuser -s -r postgres
- Create thepostgres
user$ createdb -O postgres eums
- Create theeums
database
###Install Node
###Install chromedriver for running feature tests
-
$ brew install chromedriver
-
A note on Python Virtual Environments:
- We recommend using and managing your virtual environments with virtualenvwrapper.
- If you are using a shared Virtual Environments directory that is not the default location used by virtualenvwrapper
~/.virtualenvs/
, you will need to note this location for later use when running functional tests.
-
Clone the repository
$ git clone https://github.com/unicefuganda/eums.git $ cd eums
-
Create and source your virtual environment in one of two ways
Example 1 - Using virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh $ mkvirtualenv eums
Example 2 - Using virtualenv within project directory
$ virtualenv eums $ source eums/bin/activate
-
Install necessary packages
$ pip install -r requirements.txt $ cd eums/client $ npm install $ npm install -g bower $ bower install $ npm install -g grunt-cli
-
Set up the database
$ cd {project_root_dir} $ python manage.py migrate $ python manage.py setup_permissions
-
Install and run Elasticsearch
-
For version 1.7.3
$ brew install elasticsearch17 $ elasticsearch --config=/usr/local/opt/elasticsearch17/config/ elasticsearch.yml
-
For newest version (2.0.0)
-
Install via brew
$ brew install elasticsearch
-
Configure cors for local development environment
$ vim /usr/local/etc/elasticsearch/elasticsearch.yml # Add content http.cors.enabled: true http.cors.allow-headers: Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With http.cors.allow-origin: http://localhost:8000 http.cors.allow-methods: GET,POST,PUT,DELETE
-
Run elasticsearch and initialize data
$ elasticsearch $ cd {project_root_dir} $ source eums/bin/activate $ python manage.py shell_plus < eums/elasticsearch/run_sync.py
-
-
-
Run test (bt = back test, ut = unit test, ft = functional test)
$ ./go bt # runs the backend tests $ ./go ut # runs the client unit tests $ ./go ft # runs the client functional tests
-
To run all tests together.
$ ./go at
###Run Server
-
Start the redis server
$ brew install redis $ redis-server
-
Create the local super user for logging into the app.
$ python manage.py createsuperuser
-
Build static files
$ cd {project_root_dir} $ cd eums/client $ grunt build
-
Start the application server
$ cd {project_root_dir} $ python manage.py runserver
###Notes
If your virtual environment is not at ~/.virtualenvs/
you should append the following to your grunt
commands:
--venvHome=relative/path/to/virtualenv/
-
Note #1: See Troubleshooting section below for possible reasons for test failures.
-
Note #2: Grunt Karma:Unit tests run on port 8080. If you need these to run on a different port adjust the port value on eums/eums/client/test/karma.conf.js accordingly.
##Reference
-
Functional tests run on port 9000. If you're having issues running the functional tests, make sure there is no other process using this port
-
When installing packages, we have seen node packages throw a
CERT_UNTRUSTED
error at times. This is due to a strict SSL issue. In this case, you can add a.bowerrc
file in theeums/client
directory with the following contents:{ "directory": "bower_components", "registry": "http://bower.herokuapp.com", "strict-ssl": false }
-
At times,
npm
is unable to set the PhantomJS binary to the correct path, even when installing it globally. In this case, set it explicitly. -
Also note that the karma server and PhantomJS will both run on port
8080
. Make sure this port is free when runninggrunt
.