configurationengine/doc/development.rst
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     1
.. _cone-development:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     3
Development with ConE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     4
=====================
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
This page should describe all relevant information on any developer who has or will create any functionality on
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
top of the ConE functionality.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     8
ConE in SF
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     9
----------
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
ConE is a open source project (Currently under Eclipse Public License v1.0), which can take contributions from anyone interested in ConE. In future the ConE 
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    12
will propably be split to two separate parts; ConE *core* and ConE *plugins*. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    13
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    14
The core of ConE is mainly the public interface and the storage agnostic functionality of ConE. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    15
This core part is intended to be more generic and functional on any platform. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    16
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    17
The plugin part is meant for extensions of ConE that could be for example platform specific implementation plugins 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    18
that generate output files based on the configurations.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    19
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    20
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    21
Development environment
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    22
-----------------------
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    23
The development environment requires a set of python packages, which you mostly install with easy_install after 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    24
installation of setuptools. So you must install the necessary libraries in order to be able to do cone development. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    25
The best way to test whether your development environment has everything that is required is to run all the unittest
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    26
of cone (See :ref:`cone-development-test-running`). When everything works, your environment is properly 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    27
setup :)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    28
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    29
**Required Python packages**
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    30
  - jinja2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    31
  - simplejson 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    32
  - lxml (at least version 2.2.2) run easy_install lxml==2.2.2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    33
  - nose (for running testing)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    34
  - epydoc (for documentation generation)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    35
  - sphinx (for documentation generation) 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    36
 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    37
 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    38
To install the above packages, run easy_install
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    41
easy_install call::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    42
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    43
    easy_install <package-name>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    44
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    45
easy_install jinja2 package::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    46
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    47
    easy_install jinja2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    48
  
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    49
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    50
.. _cone-development-test-running:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    51
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    52
Running tests
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    53
-------------
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    54
The different packages inside cone have a tests subpackage which contains all the tests for that particular package. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    55
Each package also contains a runtests.py file that runs all tests inside that package with `nose <http://somethingaboutorange.com/mrl/projects/nose/0.11.3/>`_. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    56
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    57
The higher levels packages also contain a runtests.py which also collect all subpackage tests, so you can basically 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    58
run every test of cone source by running the runtests.py at the root of source directory.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    59
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    60
**Setting PYTHONPATH**
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    62
The cone modules need to be set to the PYTHONPATH to enable test running. If you are using eclipse with PyDev as 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    63
developement environment, the PYTHONPATH should be automatically correct as the eclipse .project file is included 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    64
in version control.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    65
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    66
For command line testing you can run the testing_paths.cmd/testing_paths.sh to set the PYTHONPATH correctly. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    67
After that you should be able to run individual test are all test with a normal python call .
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    68
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    69
running all cone tests::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    70
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    71
    cd source
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    72
    python runtests.py
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    73
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    74
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    75
running individual unittest example::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    76
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    77
    cd source/cone/public/tests
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    78
    python unittest_configuration.py
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    79
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    80
running all module tests::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    81
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    82
    cd source/cone/public/tests
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    83
    python runtests.py
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    86
running tests with nose::
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    87
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    88
    Tests can also be run with nose, effectively this is the same as running the runtests.py 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    89
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    90
    cd source/cone/
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    91
    nosetests --include=unittest
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    92
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
Using ConE API
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    94
--------------
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
.. toctree::
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
    :maxdepth: 2
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
    api/api