.. highlight:: bash Introduction ============ About ----- The PAS package provides a command line utility and a measuring framework for network analysis for the Parallel Object Programming protocol. The tool allows to start POP-C++ nodes, run measure cases, capture the traffic and produce a complete report of the exchanged TCP packets between the peers. By default, the test infrastructure is set up using vagrant and some virtual machines automatically configured using chef, but it is possible to use any remote machine with ssh access and some configuration work (involving mainly installing the needed dependencies and creating some shared folders). Although this tool was developed especially for the C++ implementation of the POP model, it was conceived to make as less assumptions as possible about the underlying implementation and could easily be adapted to measure POP objects offered by other implementations such, for example, as POP-Java Further information about the POP-C++ project and the POP model can be found on the `project's homepage `_. Requirements ------------ The requirements necessary to install and run the ``pas`` utility are the following: * Python >= 2.6 – http://python.org/; * ``vagrant`` and VirtualBox to run the virtual machines – http://vagrantup.com/; * A webkit based browser (Safari, Google Chrome,...) to display the reports. The following libraries and utilities are optional but add some additional features: * ``xmllint`` used to reformat the XML documents produced by the measures; * ``tidy`` used to cleanup the HTML output of the reports (note that the absence of this utility will add more entries to the list of unsupported browsers). The Python packages that will automatically be installed by setuptools are the following ones: * ``fabric`` to dispatch commands to remote machines through ssh – http://fabfile.org/; * ``pygments`` to highlight the source code and the decoded transactions – http://pygments.org/; * ``lxml`` to transform the different measure xml files – http://codespeak.net/lxml/. .. _installation: Installation ------------ Until a stable release is packaged and uploaded to the cheese shop, the latest development snapshot can be installed directly from the github hosted sources using ``easy_install`` or ``pip``:: $ pip install https://github.com/GaretJax/pop-analysis-suite/tarball/master .. note:: Often, depending on the target system, the installation of a python package requires ``root`` privileges. If the previous command fails, retry to run it with ``sudo``. To check if the package was correctly installed, run the the ``pas`` command on the command line:: $ pas You should obtain an incorrect usage error similar to the following:: usage: pas [-h] [--version] [-v] [-q] [--settings SETTINGS_MODULE] {authorize,execute,jobmgr,compile,init,measure} ... pas: error: too few arguments Install from source ~~~~~~~~~~~~~~~~~~~ It is possible to install the PAS package directly from source. The following commands should get you started:: $ wget --no-check-certificate https://github.com/GaretJax/pop-analysis-suite/tarball/master $ tar -xzf GaretJax-pop-analysis-suite-*.tar.gz $ cd GaretJax-pop-analysis-suite-* $ python setup.py install Setuptools ~~~~~~~~~~ To install the PAS package, the setuptools package is required (for both source or remote installation modes). Albeit coming preinstalled on all major unix based operating systems you may need to install it. You can obtain further information about ``setuptools`` either on its `pypi project page `_ or on its `official homepage `_. Development ----------- The whole development of the PAS project happens on github, you can find the source repository at the following address: https://github.com/GaretJax/pop-analysis-suite/ Further development/contribution directives will be added as soon as some interest is manifested by any hacker willing to participate in the development process. Structure of this manual ------------------------ This manual is conceived to offer an incremental approach to all feature which the ``pas`` has to offer. It is structured in three main parts: 1. The first part describes and documents the common usage of the tool, the assumptions it mades about different aspects such as VM setups, object communications, file locations and so on. Once read and understood this first part, a user should be able to complete a full measure cycle with a custom developed measure case and generate a report to further analyze. 2. The second part dives in the internals of the ``pas`` libraries and documents topics such as command customization, custom type parsing or complex measurement setups, useful if a user want to completely adapt the offered functionalities to his needs. 3. The third part contains reference documentation useful for both a basic or an advanced usage. There are references for all built-in commands, for the different settings directives or for more advanced topics such as the internal APIs. This three parts are completed with this introduction, a glossary of common terms and an alphabetical content index. Building from source ~~~~~~~~~~~~~~~~~~~~ The present document is written using `Sphinx `_ and it can either be `read online `_ thanks to `readthedocs.org `_ or built locally using the ``sphinx`` tool into various different formats. To create a local build, make sure to have the ``sphinx`` package installed and run the following commands:: $ git clone https://github.com/GaretJax/pop-analysis-suite/ $ cd pop-analysis-suite/docs $ make html # or any other format; run make without arguments to find out # the supported ones The documentation builds will then be placed in the ``_build/`` subdirectory.