PYPI Testing Infrastructure (PyTI) :

This project have been done during the GSoC of 2010, the aim of the project was
to create an infrastructure for testing all uploaded package in pypi. in the
end of the GSoC this infrastrucuture was composed from 3 entities : 

- An EC2 machine where tests are run.
- The continuous integration system pony-build that build packages following 4
    - Download package from pypi.
    - Install package using tox.
    - Run package test uning py.test.
    - Calculate cheesecake kwality factors of the package.
- A web interface with a PuSH subscriber that get notification from pypi
  and display testing result.

How to install PyTI ?

First of all clone the repository in your local machine with the commands ::

  hg clone
- Start by installing pony-build
   $ cd pony-build/
   $ python install   

- Install than the GUI package
   $ cd GUI/
   $ python install
   $ python syncdb
  N.B: Create also the super user of the project when you are asked for.
- Run the devlopment server:
    cd GUI/; python --port <port>  -i  

Now you can access to the web interface from your browser but first go to
admin interface and add the name of the site in the table Sites Next add the
hub and the topic in the table Subscriptions eg.
   hub =
   topic =
   verify token = subscribe_pyti (must start with "subscribe")
Now go to the hub and subscribe your self given the callback url and the topic
     callback =
     topic =
     Verify type = Asynchronous
     Mode = subscribe
     verify token = subscribe_pyti (must start with "subscribe")
For finishing you have to personalize the build client in
``pony-build/client/`` if you want to use the same client
first of all you have to change arguments of EC2Context by  specifing a new EC2
machine and a new username and a new private key, and an other thing if you
want to use the command 'tox' you have to upload into your EC2 machine an
tox.ini file and to put it in the home directory of the username given to
EC2Context eg.

    envlist = py26
Project structure:

This project will contain 2 main sub project .

pony-build : This is a clone of the continuous integration system pony-build in which i added some feature like EC2Context.
GUI : This is the web interface it's based on Django and jquery, this sub
project contain an app that work as a pubsubhubbub subscriber to get package
from pypi so that they can be tested.

What Next ?

- The client script "pony-build/client/" that run builds
  commands can be ameliorate to allow build to be run in more than one EC2
  machine like that we can have a EC2 machine for windows and another for linux.
- The EC2Context in "pony-build/client/" is a first version of a
  context that enable pony-build to run build commands in an EC2 machine, its
  need more tests and work (i did have in the periode of working only one
  machine (big thanks to Jesse Noller.)) 
- To trigger the package build, PyTI use PuSH notification from pypi but it's
  not all, to extend the system maybe we can add other PuSH source to the
  system an example of the use of this feature will be that a devloper can 
  create a post commit that he notify PyTI (using PuSH for example), and by
  adding the hub and PuSH url to PyTI, PyTI can run his package tests for him.
- The idea of implementing an AOuth in pypi was discussed in one of the irc
  reunion to enable third-party application like PyTI to use the same
  authentication as pypi, this is very helpful in a way that every pypi
  user can have also his account in PyTI and he can use it to build his
  packages to run some schedule builds ...   
Big Thanks:

I want to thanks first my mentor Jesse Noller for being there all the periode
of the project and for all his remarks and advices, also i want to thanks Titus
Brown for his help and for pony-build  and i want to thanks all the packagers
student and their mentors for all their help and suggestion.