sintonia/python_apps/airtime_analyzer
Lucas Bickel 9b3d0c90da mostly run analyzer tests on travis
* [x] regonfigured the build matrix with more php jobs and a separate python job (we can add more python jobs later)
* [x] run tests on travis' trusty beta container (it's closer to what we need anyway)
* [x] install packages needed for analyzer tests in build env
* [x] added docs on how to run nosetests locally
* [x] don't run initctl in analyzer setup so setup can also be used on travis (and add it to the install script directly)
* [x] ignore replaygain checks on travis (it has proven quite impossible to get the needed python-gi module to work in the provided virtualenv)

I tried a lot of solutions to get the replaygain checks to run. I needed to decide that this has gone far enough, maybe someone who is more of a pythonista than me can take a crack at it and get it solved. Even without running those tests on CI/CD there are still plenty others.

This PR only has parts of what are needed for getting python tests running on travis as per #15. I only took a quick shot at anything not analyzer and figured I would not be able to "fix" them without digging a bit deeper (ie. also getting rid of std_err_override).
2017-03-03 20:38:27 +01:00
..
airtime_analyzer Merge branch 'saas-dev' into saas-dev-publishing 2015-11-18 12:38:18 -05:00
bin SAAS-560: Deploy separate cloud storage config files for each development environment 2015-02-05 10:14:35 -05:00
install/upstart Reworked upstart config for airtime_analyzer 2014-10-10 11:28:44 -04:00
tests mostly run analyzer tests on travis 2017-03-03 20:38:27 +01:00
tools Fixed a bug in FTP upload hook, other minor improvements 2015-03-24 14:56:03 -04:00
MANIFEST.in CC-5709 / CC-5705 : Airtime Analyzer 2014-03-05 12:15:25 -05:00
README.rst CC-5709: Airtime Analyzer 2014-04-16 11:10:06 -04:00
setup.py mostly run analyzer tests on travis 2017-03-03 20:38:27 +01:00

airtime_analyzer
==========

airtime_analyzer is a daemon that processes Airtime file uploads as background jobs.
It performs metadata extraction using Mutagen and moves uploads into Airtime's 
music library directory (stor/imported).

airtime_analyzer uses process isolation to make it resilient to crashes and runs in 
a multi-tenant environment with no modifications.

Installation
==========

    $ sudo python setup.py install

You will need to allow the "airtime" RabbitMQ user to access all exchanges and queues within the /airtime vhost:

    sudo rabbitmqctl set_permissions -p /airtime airtime .\* .\* .\* 


Usage
==========

This program must run as a user with permissions to write to your Airtime music library
directory. For standard Airtime installations, run it as the www-data user:

    $ sudo -u www-data airtime_analyzer --daemon
   
Or during development, add the --debug flag for more verbose output:

    $ sudo -u www-data airtime_analyzer --debug

To print usage instructions, run:

    $ airtime_analyzer --help

This application can be run as a daemon by running:

    $ airtime_analyzer -d

Other runtime flags can be listed by running:

    $ airtime_analyzer --help


Developers
==========

For development, you want to install airtime_analyzer system-wide but with everything symlinked back to the source 
directory for convenience. This is super easy to do, just run:
    
    $ sudo python setup.py develop

To send an test message to airtime_analyzer, you can use the message_sender.php script in the tools directory.
For example, run:

    $ php tools/message_sender.php '{ "tmp_file_path" : "foo.mp3", "final_directory" : ".", "callback_url" : "http://airtime.localhost/rest/media/1", "api_key" : "YOUR_API_KEY" }'

    $ php tools/message_sender.php '{"tmp_file_path":"foo.mp3", "import_directory":"/srv/airtime/stor/imported/1","original_filename":"foo.mp3","callback_url": "http://airtime.localhost/rest/media/1", "api_key":"YOUR_API_KEY"}'

Logging
=========

By default, logs are saved to:

    /var/log/airtime/airtime_analyzer.log

This application takes care of rotating logs for you.


Unit Tests
==========

To run the unit tests, execute:

    $ nosetests

If you care about seeing console output (stdout), like when you're debugging or developing
a test, run:

    $ nosetests -s

To run the unit tests and generate a code coverage report, run:

    $ nosetests --with-coverage --cover-package=airtime_analyzer


Running in a Multi-Tenant Environment
===========

    
History and Design Motivation
===========