Hi Laurent, (sorry for the previous misnomer!) I had a bit of a hard time reading your mail because you didn't use the typical reply formatting. Actually i only know discovered the content, at first i completely skipped the content because i thought it was just a forwarded mail ... others may have done the same. If it's not too much effort maybe repost as a real reply?
best, holger On Tue, Mar 27, 2012 at 09:23 -0700, Brack, Laurent P. wrote: > Hi Holger, > > No problem for the delayed response. I know you were in the bay area a > while back and may have felt everyone is always in a rush but this is > not our case :) > > -----Original Message----- > From: holger krekel [mailto:hol...@merlinux.eu] > Sent: Saturday, March 24, 2012 6:42 AM > To: Brack, Laurent P. > Cc: py-dev@codespeak.net > Subject: Re: [py-dev] OpenStack > > Hi Brack, > [Laurent] >> This is my last name :) > > sorry for taking a while. Am still on travel, currently in the Sonoran > deserts. My answers up until first half May are thus likely to lag. > (They do have suprisingly good internet connection ... better than in > the three-times more expensive hotel in the San Francisco valley last > week). > > On Tue, Mar 20, 2012 at 10:27 -0700, Brack, Laurent P. wrote: > > Forking from the [py-dev] pytest-timeout 0.2 e-mail thread. > > > > > I am interested in OpenStack but you can you detail a bit more of > > > what you want to achieve? > > > > I have attached a rough diagram of what we are building internally > (hopefully it will not be filtered out). > > thanks for sharing. > > > About a year ago, we attended a presentation on OpenStack (when it was > still driven by Anso Labs before they got acquired by Rackspace). > > We were (and are) currently using a private cloud (VMWare) but > > contemplated the idea of scaling up to public clouds. Problem we had > > was that we had to develop custom code for each cloud vendor whether > Amazon EC2, Penguin, VMWare, etc. so OpenStack was really a viable path > to not lock ourselves in with a given vendor. > > sounds sensible. > > > While a bulk of our tests require embedded devices (in which case > > virtualization makes little sense) a good chunk can be run on standard > workstations (all OS flavors) and in this case it only makes sense to > move to a virtual environment. > > > > PyTest combined with xdist was the dream come true as we could focus > > on developing tests meant to run on a single machine and later > seamlessly parallelize their execution. There is nothing new here. > > > > We were thinking of writing a plugin to xdist (cxdist - c for cloud) > > that would interface with OpenStack, using the pytest_xdist_setupnodes > and pytest_configure_node hooks. > > ok. > > > In those hooks, the plugin would provision the machine (via OpenStack) > > > and then make xdist believe that it is dealing with physical slaves. > > > Finally at the end of the run, we would teardown the slaves, leaving > resources for other tests to run. > > > > We have not started yet on this as scalability is not an issue but > > this is our plan. As the diagram shows, the read boxes are plugins we > intend to release to the open source community. > > Is your general idea to use the open stack integration to get > parallelizable test runs with totally controllable environments? > > [Laurent] >> It is. We have a fairly large VMWare infrastructure but I > feel we are locked in. Also there is a point where scaling up this > private cloud will simply make no sense from an economic standpoint. > Finally, infrastructure like VMWare are of little use for the open > source community. > > > Our teams write a lot of "data driven tests" (testing various AV > > codecs with different configuration parameters using very similar > verification procedure) and as a result we make heavy use of funcargs. > > Curious, are you using 2.2.3 for this? There are some plans to further > improve parametrization where i would be interested in your feedback. > > [Laurent] >> Yes. As a matter of fact we had to make changes to our > plugin to work properly with the new metafunc.parametrize method. Maybe > here is the time to open a small parenthesis. We have simplified the > generation process > For our common users, although this doesn't prevent them from using > custom hook implementations or factories. One thing that the plugin does > is attach "meta data" to items (which is carried over from hook to > hook). This meta data contains information about test cases on the > testlink Server. One of the challenge with metafunc was to find a way to > attach this information in a way it would not be lost during the test > generation done by pytest. In 2.1.3, with "addcall" we had done this by > hacking the "param" formal parameter intended use (while preserving the > functionality). In 2.2.3 (the addcall hack was broken - meta data got > lost), we found another way. Again a hack and therefore no guaranty it > will work with future versions. It would be nice to have a supported way > to "attach" data as part of the parametrize process which is then > carried over to the "item" being generated. The idea is to carry over > information that may be generated by a hook to another hook (whenever it > makes sense). > > > The pytest_testlink plugin is very similar to the pytest Case > Conductor plugin from the Mozilla folks > (http://blargon7.com/2012/01/case-conductor-pytest-plugin-proposal/) but > interacts with TestLink (teamst.org in which we are currently involved > in - improving performance of web services etc.) as opposed to Case > Conductor. > > Is pytest-testlink a plugin that you plan to work on? > [Laurent] >> Actually we have it working. We have been using it for > about 6 months now and I just made a new internal release (to fix the > issue with 2.1.3+) which also supports "platforms" (a feature of > TestLink) and filtering based on TestLink constructs (outcome, test case > ID, keywords). The plugin relies on another package (called pytl) which > provides an OO model of the testlink server built on top of their > existing web services. Those web services are quite buggy and incomplete > but we have built-in workarounds. In parallel we are working with the > TestLink team to provide a more complete set of web services. We are > also working on restructuring the code base allowing better integration > via plugins (requirement managements, reporting - we have a solution > using BIRT) as well performance improvements, test case libraries (for > re-use between projects), project groups, etc. While the pytest testlink > plugin is extensively documented and so far proven to be pretty robust, > I want to clean it up even more before releasing it (making it available > as an open source package was the intent from the start). > > > However in addition to linking a test case ID to a given python test, > > we have implemented a simple mechanism to generate test cases from > > what we called Test Description Records. Those are currently stored in > > > excel spreadsheets but will be store in TestLink as test case > properties. The object injection is done automatically by the plugin > using a custom marker indicating which function argument shall be used > for TDR injection as well as correlating TDR with parametrized test > functions. > > right. Driving things from a spreadsheet, maybe even in Google docs, > sounds good to me, btw :) > [Laurent] >> We considered this but decided otherwise just because of > the limited functionality offered compared to M$ Office or LibreOffice > (we are actually using xlrd/xlwr). As a matter of fact I wanted to find > a way to abstract the "data source" for the TDR. Google doc would be a > perfect exercise. > > > The point is that by using the funcarg feature offered by pytest, we > > can generate tremendous amount of test cases with little effort and > this will require scalability and use of virtualization over time. > > > > Sorry for the long description, but I wanted to give a complete > overview to help comprehend where we are going. > > Our plan is to eventually release all this to the open source > community (when we think the plugins are mature and robust enough). > > > > If other people have a need/interest for those plugins (some of them > > are not illustrated), I would be more than happy to accelerate this > > process (getting approval from our Open Source Board). Since > pytest_cxdist doesn't exist, this could be open source from the get go. > > I wonder if the provisioning of VMs wouldn't better fit at the level of > "tox", see http://tox.testrun.org or even yet a level higher. tox > creates virtual environments on the Python level. FYI there are plans > to introduce a plugin system to tox and to make pytest-xdist make use of > tox configuration directly. > [Laurent] >> I need to educate myself more on Tox. We are using tox for > our CI system (Jenkins) but environment setup is actually done via > buildout (tox invoking buildout - maybe we would have worked with tox > from the start if we had known about it). > But the tox idea is pretty good as it this is really where the testbed > should be setup rather than runtime (pytest) when things can go wrong. > > Btw, from May on i (and others) should be available through my company > merlinux for some consulting in case you need some more substantial > support than occassional comments from far away deserts :) > [Laurent] >> Actually this sounds like interesting. Let me think about > it. We are a rather small team so we can use all the help we can get. > Enjoy and drink a lot of water :) > > Cheers/Laurent > best, > holger > _______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev