End User Monitoring System
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
eums
scripts
.coveragerc
.coveralls.yml
.dockerignore
.gitignore
Dockerfile
README.md
go
manage.py
requirements.txt

README.md

#EUMS Coverage Status

Supply End User Monitoring System

Local Environment Setup

###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 the postgres user
    • $ createdb -O postgres eums - Create the eums 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.

Set up the project and install necessary packages

  • 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
        

Verify setup

  • 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

Troubleshooting

  • 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 the eums/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 running grunt.