Quoting me and Greg from the slipstream of;

  https://bugzilla.cyrusimap.org/show_bug.cgi?id=3553#c3

Greg Banks wrote:
Jeroen van Meeuwen wrote:
> That said, I'm going to want to be able to have Cassandane run against an
> existing Murder deployment...

Cassandane is designed to set up it's own Cyrus instances rather than run against existing ones. This was entirely deliberate and there's a bunch of reasons for it, but I think that predictable and reproducible setups, and the
avoidance of state leakage between tests, are sufficient reasons.

Cassandane test cases are by design capable of starting multiple Cyrus instances and controlling their configuration files to connect the instances in any way necessary; this is how we test replication scenarios. It was always my
intention to add murder support.

The tricky bit is "how do we convince Cassandane to go run test X once for
single instance and then once again for a murder"?

I think we could take a different approach. Excuse my French as I'm not a terminology guru, and apologies if the entire concept is crazy / way out of scope; I'm just thinking out loud.

Because the alternative is
to have two copies of every test that needs to be run against a murder, which would be just nuts. I'm not entirely sure what the best approach is for this,
but I'm betting that something like parameterised tests is the Right
Way...except that Test::Unit doesn't seem to support those.

The tests that can be executed against a deployed environment are a type of tests usually qualified as functional tests, or at least a sub-set thereof, right?

If running those tests could be provided the configuration of a deployed instance of Cyrus IMAP(single-server?),

 - admin credentials,
- sample user credentials, possibly a set of login names for the same user (uid, mail, alias, ...)
 - Cyrus IMAP server IP / DNS name (or 'localhost')

a variety of (functional) tests could be executed for a deployed instance rather then a snapshot of the codebase.

I would just execute this against a deployed frontend. The unit tests can be performed using a local checkout of the tag used to built the deployed package.

Later on perhaps such set of functional tests could be extended to perform murder specific stuff (MUPDATE capability would display part of the murder topology?) such as transfer, rename, setquota, reconstruct against frontend, and many, many other things.

--
Kind regards,

Jeroen van Meeuwen

--
Senior Engineer, Kolab Systems AG

e: vanmeeuwen at kolabsys.com
t: +44 144 340 9500
m: +44 74 2516 3817
w: http://www.kolabsys.com

pgp: 9342 BF08

Reply via email to