[openstack-dev] [qa][python3] advice needed with updating lib-forward-testing jobs

Ghanshyam Mann gmann at ghanshyammann.com
Mon Jun 18 11:38:00 UTC 2018


 ---- On Sat, 16 Jun 2018 04:01:45 +0900 Doug Hellmann <doug at doughellmann.com> wrote ---- 
 > Excerpts from corvus's message of 2018-06-15 08:46:40 -0700:
 > > Doug Hellmann <doug at doughellmann.com> writes:
 > > 
 > > > Excerpts from Ghanshyam's message of 2018-06-15 09:04:35 +0900:
 > > 
 > > >> Yes, It will not be set on LIBS_FROM_GIT as we did not set it
 > > >> explicitly. But gate running on any repo does run job on current
 > > >> change set of that repo which is nothing but "master + current patch
 > > >> changes" . For example, any job running on oslo.config patch will
 > > >> take oslo.config source code from that patch which is "master +
 > > >> current change". You can see the results in this patch -
 > > >> https://review.openstack.org/#/c/575324/ . Where I deleted a module
 > > >> and gate jobs (including tempest-full-py3) fails as they run on
 > > >> current change set of neutron-lib code not on pypi version(which
 > > >> would pass the tests).
 > > >
 > > > The tempest-full-py3 job passed for that patch, though. Which seems to
 > > > indicate that the neutron-lib repository was not used in the test job,
 > > > even though it was checked out.
 > > 
 > > The automatic generation of LIBS_FROM_GIT only includes projects which
 > > appear in required-projects.  So in this case neutron-lib does not
 > > appear in LIBS_FROM_GIT[1], so the change is not actually tested by that
 > > job.

Yes, this is now clear to me. I was in impressions of treating the lib same way as service for testing repo always from source but that's not the case. 

 > > 
 > > Doug's approach of adding {{zuul.project}} to LIBS_FROM_GIT would work,
 > > but anytime LIBS_FROM_GIT is set explicitly, it turns off the automatic
 > > generation, so more complex jobs (which may want to inherit from that
 > > job but need multiple libraries) would also have to override
 > > LIBS_FROM_GIT and add the full set of projects.
 > > 
 > > The code that automatically sets LIBS_FROM_GIT is fairly simple and
 > > could be modified to automatically add the project of the change under
 > > test.  We could do that for all jobs, or we could add a flag which
 > > toggles the behavior.  The question to answer here is: is there ever a
 > > case where a devstack job should not install the change under test from
 > > source?  I think the answer is no, and even though under Zuul v2
 > > devstack-gate didn't automatically add the project under test to
 > > LIBS_FROM_GIT, we probably had that behavior anyway due to some JJB
 > > templating which did.
 > 
 > Adding the project-under-test to LIBS_FROM_GIT unconditionally feels
 > like the behavior I would expect from the job.

++

 > 
 > > A further thing to consider is what the desired behavior is for a series
 > > of changes.  If a change to neutron-lib depends on a change to
 > > oslo.messaging, when the forward testing job runs on neutron-lib, should
 > > it also add oslo.messaging to LIBS_FROM_GIT?  That's equally easy to
 > > implement (but would certainly need a flag as it essentially would add
 > > everything in the change series to LIBS_FROM_GIT which defeats the
 > > purpose of the restriction for the jobs which need it), but I honestly
 > > am not certain what's desired.
 > 
 > I think going ahead and adding everything in the dependency chain
 > also makes sense. If I have 2 changes in libraries and a change in
 > a service and I want to test them all together I would expect to
 > be able to do that by using Depends-On and then for all 3 to be
 > installed from source in the job that runs.

Yes, I agree on testing all series(either alone repo or depends-on on lib or service) with installed from source. 

 > 
 > > 
 > > For each type of project (service, lib, lib-group (eg oslo.messaging)),
 > > what do we want to test from git vs pypi?
 > 
 > We want to test changes to service projects with libraries from
 > PyPI so that we do not end up with services that rely on unreleased
 > features of libraries.
 > 
 > We want to test changes to libraries with some services installed
 > from git so that we know changes to the library do not break (current)
 > master of the service. The set of interesting services may vary,
 > but a default set that represents the tightly coupled services that
 > run in the integrated gate now is reasonable.
 > 
 > > How many jobs are needed to accomplish that?
 > 
 > Ideally 1? Or 2? That's what I'm trying to work out.

Currently "tempest-full/-py3" job does not run the 'slow' marked scenario tests and they run in separate job "tempest-scenario-multinode-lvm-multibackend"(which i am working to make it more clean)

I think "tempest-full/-py3" will cover the most of the code/lib usage coverage.  

 > 
 > > What should happen with a change series with other
 > > projects in it?
 > 
 > I expect all of the patches in a series to be installed from source
 > somewhere in the chain. That works today if we have a library patch
 > that depends on a service patch because that patched version of the
 > service is used in the dsvm job run against the library change. If
 > we could make the reverse dependency work, too (where a patch to a
 > service depends on a library change), that would be grand.
 > 
 > I think your patch https://review.openstack.org/#/c/575801/ at least
 > lets us go in one direction (library->service) using a single job
 > definition, but I can't tell if it would work the other way around.
 > 
 > > 
 > > [1] http://logs.openstack.org/24/575324/3/check/tempest-full-py3/d183788/controller/logs/_.localrc_auto.txt
 > > 
 > > -Jim
 > > 
 > 
 > __________________________________________________________________________
 > OpenStack Development Mailing List (not for usage questions)
 > Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
 > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
 > 





More information about the OpenStack-dev mailing list