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

2014-09-10 Thread Yuriy Taraday
On Tue, Sep 9, 2014 at 9:58 PM, Doug Hellmann d...@doughellmann.com wrote:


 On Sep 9, 2014, at 10:51 AM, Sean Dague s...@dague.net wrote:

  On 09/09/2014 10:41 AM, Doug Hellmann wrote:
 
  On Sep 8, 2014, at 8:18 PM, James E. Blair cor...@inaugust.com wrote:
 
  Sean Dague s...@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.
 
  I don’t think I’ve ever tried to run any of our unit tests on a box
 where I hadn’t also previously run devstack to install all of those sorts
 of dependencies. Is that unusual?
 
  It is for Linux users, running local unit tests is the norm for me.

 To be clear, I run the tests on the same host where I ran devstack, not in
 a VM. I just use devstack as a way to bootstrap all of the libraries needed
 for the unit test dependencies. I guess I’m just being lazy. :-)


You can't run devstack everywhere you code (and want to run tests). I, for
example, can't run devstack on my work laptop because I use Gentoo there.
And I have MacOS X on my home laptop, so no devstack there too. The latter
should be more frequent case in the community.

That said I never had a problem with emerging (on either of systems)
necessary C libraries for tests to run. As long as they don't pull a lot of
(or any) Linux-specific dependencies, it's fine.

For me this issue is the case for setuptools' extras. The only problem with
them is that we can't specify them in requirement.txt files currently, so
we'd have to add another hack to pbr to gather extra dependencies from
files like requirements-extra_name.txt or smth like that.
Then we can provide different tox venvs for diferent extras sets.

-- 

Kind regards, Yuriy.
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-10 Thread Doug Hellmann

On Sep 10, 2014, at 4:34 PM, Yuriy Taraday yorik@gmail.com wrote:

 
 
 On Tue, Sep 9, 2014 at 9:58 PM, Doug Hellmann d...@doughellmann.com wrote:
 
 On Sep 9, 2014, at 10:51 AM, Sean Dague s...@dague.net wrote:
 
  On 09/09/2014 10:41 AM, Doug Hellmann wrote:
 
  On Sep 8, 2014, at 8:18 PM, James E. Blair cor...@inaugust.com wrote:
 
  Sean Dague s...@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.
 
  I don’t think I’ve ever tried to run any of our unit tests on a box where 
  I hadn’t also previously run devstack to install all of those sorts of 
  dependencies. Is that unusual?
 
  It is for Linux users, running local unit tests is the norm for me.
 
 To be clear, I run the tests on the same host where I ran devstack, not in a 
 VM. I just use devstack as a way to bootstrap all of the libraries needed for 
 the unit test dependencies. I guess I’m just being lazy. :-)
 
 You can't run devstack everywhere you code (and want to run tests). I, for 
 example, can't run devstack on my work laptop because I use Gentoo there. And 
 I have MacOS X on my home laptop, so no devstack there too. The latter should 
 be more frequent case in the community.

Sure, I use a Mac but develop OpenStack either on a linux cloud server or a 
local VM, depending on my internet access. I don’t really see any point in 
running the tests in an environment we don’t support.

Doug

 
 That said I never had a problem with emerging (on either of systems) 
 necessary C libraries for tests to run. As long as they don't pull a lot of 
 (or any) Linux-specific dependencies, it's fine.
 
 For me this issue is the case for setuptools' extras. The only problem with 
 them is that we can't specify them in requirement.txt files currently, so 
 we'd have to add another hack to pbr to gather extra dependencies from files 
 like requirements-extra_name.txt or smth like that.
 Then we can provide different tox venvs for diferent extras sets.
 
 -- 
 
 Kind regards, Yuriy.
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-09 Thread Doug Hellmann

On Sep 8, 2014, at 8:18 PM, James E. Blair cor...@inaugust.com wrote:

 Sean Dague s...@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.

I don’t think I’ve ever tried to run any of our unit tests on a box where I 
hadn’t also previously run devstack to install all of those sorts of 
dependencies. Is that unusual?

Doug

 
 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).
 
 -Jim
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-09 Thread Sean Dague
On 09/09/2014 10:41 AM, Doug Hellmann wrote:
 
 On Sep 8, 2014, at 8:18 PM, James E. Blair cor...@inaugust.com wrote:
 
 Sean Dague s...@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.
 
 I don’t think I’ve ever tried to run any of our unit tests on a box where I 
 hadn’t also previously run devstack to install all of those sorts of 
 dependencies. Is that unusual?

It is for Linux users, running local unit tests is the norm for me.

-Sean

-- 
Sean Dague
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-09 Thread Doug Hellmann

On Sep 9, 2014, at 10:51 AM, Sean Dague s...@dague.net wrote:

 On 09/09/2014 10:41 AM, Doug Hellmann wrote:
 
 On Sep 8, 2014, at 8:18 PM, James E. Blair cor...@inaugust.com wrote:
 
 Sean Dague s...@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.
 
 I don’t think I’ve ever tried to run any of our unit tests on a box where I 
 hadn’t also previously run devstack to install all of those sorts of 
 dependencies. Is that unusual?
 
 It is for Linux users, running local unit tests is the norm for me.

To be clear, I run the tests on the same host where I ran devstack, not in a 
VM. I just use devstack as a way to bootstrap all of the libraries needed for 
the unit test dependencies. I guess I’m just being lazy. :-)

Doug


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-08 Thread James E. Blair
Sean Dague s...@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).

-Jim

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-08 Thread Monty Taylor

On 09/05/2014 07:21 AM, Monty Taylor wrote:

On 09/05/2014 06:32 AM, Sean Dague wrote:

While reviewing this zookeeper service group fix in Nova -
https://review.openstack.org/#/c/102639/ it was exposed that the
zookeeper tests aren't running in infra.

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.

But it seems like a bad stand off between testing upstream and testing
normal path locally.

Big picture it would be nice to not require a ton of dev libraries
locally for optional components, but still test them upstream. So that
in the base case I'm not running zookeeper locally, but if it fails
upstream because I broke something in zookeeper, it's easy enough to
spin up that dev env that has it.

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.


Funny story - I've come to dislike what we're doing here, so I've been
slowly working on an idea in this area:

https://github.com/emonty/dox

The tl;dr is it's like tox, except it uses docker instead of
virtualenv - which means we can express all of our requirements, not
just pip ones.

It's not quite ready yet - although I'd be happy to move it in to
stackforge or even openstack-dev and get other people hacking on it with
me until it is. The main problem that needs solving, I think, is how to
sanely express multiple target environments (like py26,py27) without
making a stupidly baroque config file. OTOH, tox's insistence of making
a new virtualenv for each environment is heavyweight and has led to
some pretty crazy hacks across the project. Luckily, docker itself does
an EXCELLENT job at handling caching and reuse - so I think we can have
a set of containers that something in infra (waves hands) publishes to
dockerhub, like:

   infra/py27
   infra/py26

And then have things like nova build on those, like:

   infra/nova/py27

Which would have zookeeper as well

The _really_ fun part, again, if we can figure out how to express it in
config without reimplementing make accidentally, is that we could start
to have things like:

   infra/mysql
   infra/postgres
   infra/mongodb

And have dox files say things like:

   Nova unittests want a python27 environment, this means we want an
infra/mysql container, an infra/postgres container and for those to be
linked to the infra/nova/py27 container where the tests will run.

Since those are all reusable, the speed should be _Excellent_ and we
should be able to more easily get more things runnable locally without
full devstack.

Thoughts? Anybody wanna hack on it with me? I think it could wind up
being a pretty useful tool for folks outside of OpenStack too if we get
it right.


I'd like to follow up on this real quick - just to set some expectations 
appropriately...


Firstly, I'm super thrilled that folks are interested in hacking on this 
- and excited that people have piled on. It's extremely exciting.


I want to make sure people know that goal number 1 of this is to allow 
for a tox-like experience for developers on their laptops that isn't 
specific to python. We have growing numbers of folks in our numbers who 
work on things that are not python, and there are a ton of 
non-OpenStack/non-Python folks out there working on projects that could 
potentially benefit from something that does for them what tox has so 
far done for us.


Additionally, I personally am bothered by the fact that as a project we 
declare quite strongly what version of libraries we use that are 
_python_ but have no current way to do the same for non-python 
libraries. I may draw the ire ultimately from the distros from where I 
want my stance on this to get - but I would like very much for us to be 
able to stop caring about what version of libvirt is _Currently_ in 
Fedora, RHEL or Ubuntu and get to a point where we _tell_ people that to 
use OpenStack Kilo they'll need libvirt v7 or something. I think that's 
a ways off, but I personally want to get there nonetheless.


That said - although I'm hopeful it will be, I'd like to be clear that 
I'm not convinced this will be a useful tool for any of our automation. 
There are no problems we have in the gate infrastructure that dox is 
aiming at helping us solve. We already have single-use slaves that 
already can install anything we need at any time.


There are at least four outcomes I can see for the current dox effort:

a) dox winds up being a simple and powerful tool for developers both 
OpenStack and not to use in their day to day life
b) a is _so_ true that we feel it's an essential part of openstack 
developer 

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

2014-09-06 Thread Joshua Harlow
There was a review once that tried to move the evzookeeper to using kazoo, 
perhaps that can get reprioritzed??

https://review.openstack.org/#/c/28951/

Sent from my really tiny device...

 On Sep 5, 2014, at 6:36 AM, Sean Dague s...@dague.net wrote:
 
 While reviewing this zookeeper service group fix in Nova -
 https://review.openstack.org/#/c/102639/ it was exposed that the
 zookeeper tests aren't running in infra.
 
 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.
 
 But it seems like a bad stand off between testing upstream and testing
 normal path locally.
 
 Big picture it would be nice to not require a ton of dev libraries
 locally for optional components, but still test them upstream. So that
 in the base case I'm not running zookeeper locally, but if it fails
 upstream because I broke something in zookeeper, it's easy enough to
 spin up that dev env that has it.
 
 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.
 
-Sean
 
 -- 
 Sean Dague
 http://dague.net
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread Monty Taylor

On 09/05/2014 06:32 AM, Sean Dague wrote:

While reviewing this zookeeper service group fix in Nova -
https://review.openstack.org/#/c/102639/ it was exposed that the
zookeeper tests aren't running in infra.

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.

But it seems like a bad stand off between testing upstream and testing
normal path locally.

Big picture it would be nice to not require a ton of dev libraries
locally for optional components, but still test them upstream. So that
in the base case I'm not running zookeeper locally, but if it fails
upstream because I broke something in zookeeper, it's easy enough to
spin up that dev env that has it.

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.


Funny story - I've come to dislike what we're doing here, so I've been 
slowly working on an idea in this area:


https://github.com/emonty/dox

The tl;dr is it's like tox, except it uses docker instead of 
virtualenv - which means we can express all of our requirements, not 
just pip ones.


It's not quite ready yet - although I'd be happy to move it in to 
stackforge or even openstack-dev and get other people hacking on it with 
me until it is. The main problem that needs solving, I think, is how to 
sanely express multiple target environments (like py26,py27) without 
making a stupidly baroque config file. OTOH, tox's insistence of making 
a new virtualenv for each environment is heavyweight and has led to 
some pretty crazy hacks across the project. Luckily, docker itself does 
an EXCELLENT job at handling caching and reuse - so I think we can have 
a set of containers that something in infra (waves hands) publishes to 
dockerhub, like:


  infra/py27
  infra/py26

And then have things like nova build on those, like:

  infra/nova/py27

Which would have zookeeper as well

The _really_ fun part, again, if we can figure out how to express it in 
config without reimplementing make accidentally, is that we could start 
to have things like:


  infra/mysql
  infra/postgres
  infra/mongodb

And have dox files say things like:

  Nova unittests want a python27 environment, this means we want an 
infra/mysql container, an infra/postgres container and for those to be 
linked to the infra/nova/py27 container where the tests will run.


Since those are all reusable, the speed should be _Excellent_ and we 
should be able to more easily get more things runnable locally without 
full devstack.


Thoughts? Anybody wanna hack on it with me? I think it could wind up 
being a pretty useful tool for folks outside of OpenStack too if we get 
it right.


Monty

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread Flavio Percoco
On 09/05/2014 04:21 PM, Monty Taylor wrote:
 On 09/05/2014 06:32 AM, Sean Dague wrote:
 While reviewing this zookeeper service group fix in Nova -
 https://review.openstack.org/#/c/102639/ it was exposed that the
 zookeeper tests aren't running in infra.

 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.

 But it seems like a bad stand off between testing upstream and testing
 normal path locally.

 Big picture it would be nice to not require a ton of dev libraries
 locally for optional components, but still test them upstream. So that
 in the base case I'm not running zookeeper locally, but if it fails
 upstream because I broke something in zookeeper, it's easy enough to
 spin up that dev env that has it.

 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.
 
 Funny story - I've come to dislike what we're doing here, so I've been
 slowly working on an idea in this area:
 
 https://github.com/emonty/dox
 
 The tl;dr is it's like tox, except it uses docker instead of
 virtualenv - which means we can express all of our requirements, not
 just pip ones.
 
 It's not quite ready yet - although I'd be happy to move it in to
 stackforge or even openstack-dev and get other people hacking on it with
 me until it is. The main problem that needs solving, I think, is how to
 sanely express multiple target environments (like py26,py27) without
 making a stupidly baroque config file. OTOH, tox's insistence of making
 a new virtualenv for each environment is heavyweight and has led to
 some pretty crazy hacks across the project. Luckily, docker itself does
 an EXCELLENT job at handling caching and reuse - so I think we can have
 a set of containers that something in infra (waves hands) publishes to
 dockerhub, like:
 
   infra/py27
   infra/py26
 
 And then have things like nova build on those, like:
 
   infra/nova/py27
 
 Which would have zookeeper as well
 
 The _really_ fun part, again, if we can figure out how to express it in
 config without reimplementing make accidentally, is that we could start
 to have things like:
 
   infra/mysql
   infra/postgres
   infra/mongodb
 
 And have dox files say things like:
 
   Nova unittests want a python27 environment, this means we want an
 infra/mysql container, an infra/postgres container and for those to be
 linked to the infra/nova/py27 container where the tests will run.
 
 Since those are all reusable, the speed should be _Excellent_ and we
 should be able to more easily get more things runnable locally without
 full devstack.
 
 Thoughts? Anybody wanna hack on it with me? I think it could wind up
 being a pretty useful tool for folks outside of OpenStack too if we get
 it right.
 

I think it is sexy - I don't describe ideas/software as sexy that often
but this one deserves it. I'm interested in helping out.

I'll clone it and give it a try - or at least take a look at it.

Flavio

 Monty
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


-- 
@flaper87
Flavio Percoco

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread David Shrewsbury
I agree with Flavio. This looks really cool, and I had a very similar idea
recently. I'll try to find some time to give this a whirl.

-Dave


On Fri, Sep 5, 2014 at 10:37 AM, Flavio Percoco fla...@redhat.com wrote:

 On 09/05/2014 04:21 PM, Monty Taylor wrote:
  On 09/05/2014 06:32 AM, Sean Dague wrote:
  While reviewing this zookeeper service group fix in Nova -
  https://review.openstack.org/#/c/102639/ it was exposed that the
  zookeeper tests aren't running in infra.
 
  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.
 
  But it seems like a bad stand off between testing upstream and testing
  normal path locally.
 
  Big picture it would be nice to not require a ton of dev libraries
  locally for optional components, but still test them upstream. So that
  in the base case I'm not running zookeeper locally, but if it fails
  upstream because I broke something in zookeeper, it's easy enough to
  spin up that dev env that has it.
 
  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.
 
  Funny story - I've come to dislike what we're doing here, so I've been
  slowly working on an idea in this area:
 
  https://github.com/emonty/dox
 
  The tl;dr is it's like tox, except it uses docker instead of
  virtualenv - which means we can express all of our requirements, not
  just pip ones.
 
  It's not quite ready yet - although I'd be happy to move it in to
  stackforge or even openstack-dev and get other people hacking on it with
  me until it is. The main problem that needs solving, I think, is how to
  sanely express multiple target environments (like py26,py27) without
  making a stupidly baroque config file. OTOH, tox's insistence of making
  a new virtualenv for each environment is heavyweight and has led to
  some pretty crazy hacks across the project. Luckily, docker itself does
  an EXCELLENT job at handling caching and reuse - so I think we can have
  a set of containers that something in infra (waves hands) publishes to
  dockerhub, like:
 
infra/py27
infra/py26
 
  And then have things like nova build on those, like:
 
infra/nova/py27
 
  Which would have zookeeper as well
 
  The _really_ fun part, again, if we can figure out how to express it in
  config without reimplementing make accidentally, is that we could start
  to have things like:
 
infra/mysql
infra/postgres
infra/mongodb
 
  And have dox files say things like:
 
Nova unittests want a python27 environment, this means we want an
  infra/mysql container, an infra/postgres container and for those to be
  linked to the infra/nova/py27 container where the tests will run.
 
  Since those are all reusable, the speed should be _Excellent_ and we
  should be able to more easily get more things runnable locally without
  full devstack.
 
  Thoughts? Anybody wanna hack on it with me? I think it could wind up
  being a pretty useful tool for folks outside of OpenStack too if we get
  it right.
 

 I think it is sexy - I don't describe ideas/software as sexy that often
 but this one deserves it. I'm interested in helping out.

 I'll clone it and give it a try - or at least take a look at it.

 Flavio

  Monty
 
  ___
  OpenStack-dev mailing list
  OpenStack-dev@lists.openstack.org
  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


 --
 @flaper87
 Flavio Percoco

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




-- 
David Shrewsbury (Shrews)
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread Chris Dent

On Fri, 5 Sep 2014, Monty Taylor wrote:

The tl;dr is it's like tox, except it uses docker instead of virtualenv - 
which means we can express all of our requirements, not just pip ones.


Oh thank god[1].

Seriously.

jogo started a thread about what matters for kilo and I was going
to respond with (amongst other things) get containers into the testing
scene. Seems you're way ahead of me. Docker's caching could be a
_huge_ win here.

[1] https://www.youtube.com/watch?v=om5rbtudzrg

across the project. Luckily, docker itself does an EXCELLENT job at handling 
caching and reuse - so I think we can have a set of containers that something 
in infra (waves hands) publishes to dockerhub, like:


 infra/py27
 infra/py26


I'm assuming these would get rebuilt regularly (every time global
requirements and friends are updated) on some sort of automated
hook?

Thoughts? Anybody wanna hack on it with me? I think it could wind up being a 
pretty useful tool for folks outside of OpenStack too if we get it right.


Given availability (currently an unknown) I'd like to help with this.

--
Chris Dent tw:@anticdent freenode:cdent
https://tank.peermore.com/tanks/cdent

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread Sean Dague
On 09/05/2014 12:05 PM, Chris Dent wrote:
 On Fri, 5 Sep 2014, Monty Taylor wrote:
 
 The tl;dr is it's like tox, except it uses docker instead of
 virtualenv - which means we can express all of our requirements, not
 just pip ones.
 
 Oh thank god[1].
 
 Seriously.
 
 jogo started a thread about what matters for kilo and I was going
 to respond with (amongst other things) get containers into the testing
 scene. Seems you're way ahead of me. Docker's caching could be a
 _huge_ win here.
 
 [1] https://www.youtube.com/watch?v=om5rbtudzrg
 
 across the project. Luckily, docker itself does an EXCELLENT job at
 handling caching and reuse - so I think we can have a set of
 containers that something in infra (waves hands) publishes to
 dockerhub, like:

  infra/py27
  infra/py26
 
 I'm assuming these would get rebuilt regularly (every time global
 requirements and friends are updated) on some sort of automated
 hook?
 
 Thoughts? Anybody wanna hack on it with me? I think it could wind up
 being a pretty useful tool for folks outside of OpenStack too if we
 get it right.
 
 Given availability (currently an unknown) I'd like to help with this.

I think all this is very cool, I'd say if we're going to put it in
gerrit do stackforge instead of openstack/ namespace, because it will be
useful beyond us.

-Sean

-- 
Sean Dague
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


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

2014-09-05 Thread Amit Das
I too agree this can be useful beyond openstack.

It will great if one of you (experts) can explain in more details how the
python virtual environment is heavyweight than docker containers.

I am just a user of devstack without the nitty gritty details of its inner
workings.
However, I can say that sometimes my Ubuntu VM that has devstack  tempest
tests running exhaust the entire CPU (make the machine unusable) after the
tests are run.


Regards,
Amit
*CloudByte Inc.* http://www.cloudbyte.com/


On Fri, Sep 5, 2014 at 9:44 PM, Sean Dague s...@dague.net wrote:

 On 09/05/2014 12:05 PM, Chris Dent wrote:
  On Fri, 5 Sep 2014, Monty Taylor wrote:
 
  The tl;dr is it's like tox, except it uses docker instead of
  virtualenv - which means we can express all of our requirements, not
  just pip ones.
 
  Oh thank god[1].
 
  Seriously.
 
  jogo started a thread about what matters for kilo and I was going
  to respond with (amongst other things) get containers into the testing
  scene. Seems you're way ahead of me. Docker's caching could be a
  _huge_ win here.
 
  [1] https://www.youtube.com/watch?v=om5rbtudzrg
 
  across the project. Luckily, docker itself does an EXCELLENT job at
  handling caching and reuse - so I think we can have a set of
  containers that something in infra (waves hands) publishes to
  dockerhub, like:
 
   infra/py27
   infra/py26
 
  I'm assuming these would get rebuilt regularly (every time global
  requirements and friends are updated) on some sort of automated
  hook?
 
  Thoughts? Anybody wanna hack on it with me? I think it could wind up
  being a pretty useful tool for folks outside of OpenStack too if we
  get it right.
 
  Given availability (currently an unknown) I'd like to help with this.

 I think all this is very cool, I'd say if we're going to put it in
 gerrit do stackforge instead of openstack/ namespace, because it will be
 useful beyond us.

 -Sean

 --
 Sean Dague
 http://dague.net

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev