You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Alan Conway <al...@gmail.com> on 2009/11/10 22:21:19 UTC

Python framework for cluster (and other multi-broker) tests.

I've started a python framework for writing tests that start/stop 
multiple brokers, in particular for cluster tests but could be used for 
federation tests etc.
The framework is in python/qpid/brokertest.py, example of use in 
cpp/src/tests/cluster_tests.py

Features include:
  - separate working dir for each test, named after the test.
  - brokers are named, each broker has own data dir and log files under 
test dir
  - easy to start brokers, clusters and other executables (e.g. the 
cluster_tests use the sender/receiver binaries)
  - unique cluster names, can run multiple instances  on the same subnet
  - kills all started processes during teardown, verifies that status 
matches test expectation (exit ok, exit failure or still running)
  - can register other resources for cleanup on teardown - currently 
anything with a stop() method but we can easily extend that.
  - some convenience methods for declaring queues, sending/receiving 
messages using the new python API, this set will grow

I'll be using this for cluster testing I'll be happy to  help anyone who 
wants to use it for other purposes, contributions welcome!

Cheers,
Alan.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: Python framework for cluster (and other multi-broker) tests.

Posted by Robert Godfrey <ro...@gmail.com>.
2009/11/12 Rafael Schloming <ra...@redhat.com>

> Alan Conway wrote:
>
>> I've started a python framework for writing tests that start/stop multiple
>> brokers, in particular for cluster tests but could be used for federation
>> tests etc.
>> The framework is in python/qpid/brokertest.py, example of use in
>> cpp/src/tests/cluster_tests.py
>>
>> Features include:
>>  - separate working dir for each test, named after the test.
>>  - brokers are named, each broker has own data dir and log files under
>> test dir
>>  - easy to start brokers, clusters and other executables (e.g. the
>> cluster_tests use the sender/receiver binaries)
>>  - unique cluster names, can run multiple instances  on the same subnet
>>  - kills all started processes during teardown, verifies that status
>> matches test expectation (exit ok, exit failure or still running)
>>  - can register other resources for cleanup on teardown - currently
>> anything with a stop() method but we can easily extend that.
>>  - some convenience methods for declaring queues, sending/receiving
>> messages using the new python API, this set will grow
>>
>> I'll be using this for cluster testing I'll be happy to  help anyone who
>> wants to use it for other purposes, contributions welcome!
>>
>
> This sounds like some really useful stuff, and I look forward to playing
> with it, but one issue I think we need to sort out is its location, or
> possibly just the general use of the python/qpid dir.
>
> Unfortunately the python/qpid directory is becoming a bit of a dumping
> ground for anything that happens to be written in python, when really it
> started out as the home of the python AMQP client. This makes it rather
> difficult to generate correct API-docs as random non-public utilities can
> easily slip in. As you can imagine it also makes it difficult to write a
> proper README for the directory.
>
> So I think we need to make a bit of a decision on what the python directory
> is for. If we want to keep it as a place for anything that happens to be
> written in python then I need to move the python client elsewhere, and if we
> want to decide that the python client stays here, then we need to be a bit
> more disciplined about checking in code that isn't directly part of the
> python client.
>
> Personally I think the top level division by language is showing its
> limitations, and we should probably have some additional top level locations
> for generically useful stuff like this to live, e.g. an area for
> project-wide testing stuff that isn't really related to one particular
> language silo.
>
> -


+1  As I've said before, organising things soley by the language something
is written in makes no sense to me...   If I want to look for a utility why
should I need to know what language it is written in...  If I find a need
for some sort of general utility am I likely to hunt through every language
directory to see if such a tool exists already... or just build my own
version in the language I am most familiar with?  Making clearer functional
boundaries in the structure (even if only separating out tools and utilities
from the clients/brokers) can only help us in bringing more re-use and
uniformity to the project IMHO

Cheers,
Rob

-- Rob

Re: Python framework for cluster (and other multi-broker) tests.

Posted by Rafael Schloming <ra...@redhat.com>.
Alan Conway wrote:
> I've started a python framework for writing tests that start/stop 
> multiple brokers, in particular for cluster tests but could be used for 
> federation tests etc.
> The framework is in python/qpid/brokertest.py, example of use in 
> cpp/src/tests/cluster_tests.py
> 
> Features include:
>  - separate working dir for each test, named after the test.
>  - brokers are named, each broker has own data dir and log files under 
> test dir
>  - easy to start brokers, clusters and other executables (e.g. the 
> cluster_tests use the sender/receiver binaries)
>  - unique cluster names, can run multiple instances  on the same subnet
>  - kills all started processes during teardown, verifies that status 
> matches test expectation (exit ok, exit failure or still running)
>  - can register other resources for cleanup on teardown - currently 
> anything with a stop() method but we can easily extend that.
>  - some convenience methods for declaring queues, sending/receiving 
> messages using the new python API, this set will grow
> 
> I'll be using this for cluster testing I'll be happy to  help anyone who 
> wants to use it for other purposes, contributions welcome!

This sounds like some really useful stuff, and I look forward to playing 
with it, but one issue I think we need to sort out is its location, or 
possibly just the general use of the python/qpid dir.

Unfortunately the python/qpid directory is becoming a bit of a dumping 
ground for anything that happens to be written in python, when really it 
started out as the home of the python AMQP client. This makes it rather 
difficult to generate correct API-docs as random non-public utilities 
can easily slip in. As you can imagine it also makes it difficult to 
write a proper README for the directory.

So I think we need to make a bit of a decision on what the python 
directory is for. If we want to keep it as a place for anything that 
happens to be written in python then I need to move the python client 
elsewhere, and if we want to decide that the python client stays here, 
then we need to be a bit more disciplined about checking in code that 
isn't directly part of the python client.

Personally I think the top level division by language is showing its 
limitations, and we should probably have some additional top level 
locations for generically useful stuff like this to live, e.g. an area 
for project-wide testing stuff that isn't really related to one 
particular language silo.

--Rafael

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org