[openstack-dev] how to provide tests environments for python things that require C extensions

Sean Dague sean at dague.net
Tue Sep 9 10:37:44 UTC 2014


On 09/08/2014 08:18 PM, James E. Blair wrote:
> Sean Dague <sean at dague.net> writes:
> 
>> The crux of the issue is that zookeeper python modules are C extensions.
>> So you have to either install from packages (which we don't do in unit
>> tests) or install from pip, which means forcing zookeeper dev packages
>> locally. Realistically this is the same issue we end up with for mysql
>> and pg, but given their wider usage we just forced that pain on developers.
> ...
>> Which feels like we need some decoupling on our requirements vs. tox
>> targets to get there. CC to Monty and Clark as our super awesome tox
>> hackers to help figure out if there is a path forward here that makes sense.
> 
> From a technical standpoint, all we need to do to make this work is to
> add the zookeeper python client bindings to (test-)requirements.txt.
> But as you point out, that makes it more difficult for developers who
> want to run unit tests locally without having the requisite libraries
> and header files installed.
> 
> We could add another requirements file with heavyweight optional
> dependencies, and use that in gate testing, but also have a lightweight
> tox environment that does not include them for ease of use in local
> testing.
> 
> What would be really great is if we could use setuptools extras_require
> for this:
> 
> https://pythonhosted.org/setuptools/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
> 
> However, I'm not sure what the situation is with support for that in pip
> (and we might need pbr support too).

Right, some optional test path like that would be nice.

Honestly, one thing I was thinking about was effectively a bunch of tox
targets for local running, but that we run them all as a single target
upstream.

So testenv:zookeeper, testenv:mysql, testenv:pg

And then some way to have py27all be py27 + all these. py27all is what
upstream runs, devs can easily run without the extra requirements (which
will be sufficient 95% of the time), and when they hit a different
failure can run the wider tests.

	-Sean

-- 
Sean Dague
http://dague.net



More information about the OpenStack-dev mailing list