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

Ghanshyam Mann gmann at ghanshyammann.com
Mon Jun 18 14:22:13 UTC 2018


 ---- On Mon, 18 Jun 2018 22:04:38 +0900 Doug Hellmann <doug at doughellmann.com> wrote ---- 
 > Excerpts from Ghanshyam Mann's message of 2018-06-18 20:38:00 +0900:
 > >  ---- 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.  
 > 
 > It does seem like enough coverage to start out, and matches what
 > we are doing under python 2.
 > 
 > I have proposed https://review.openstack.org/#/c/575925/ to set up a
 > project template using tempest-full-py3. Andreas points out there that
 > we could put the project template in the tempest repo where the job is
 > defined. I don't know which we would prefer, so let me know what you
 > think.
 > 
 > I also set up a test patch on oslo.config
 > https://review.openstack.org/#/c/575927/ that depends on the
 > project-template patch above and Jim's devstack patch
 > https://review.openstack.org/#/c/575801/. The lots from the
 > tempest-full-py3 job are at
 > http://logs.openstack.org/27/575927/2/check/tempest-full-py3/16b8922/

Thanks. lgtm.  I feel we can keep the template in 'openstack-zuul-jobs' like we have 'integrated-gate' template[1].

[1] https://github.com/openstack-infra/openstack-zuul-jobs/blob/22cf73ae5a3090a91eb3c81cc4c427b546b0254e/zuul.d/zuul-legacy-project-templates.yaml#L57 

-gmann 

 > 
 > > 
 > >  > 
 > >  > > 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
 > >  > 
 > > 
 > 
 > __________________________________________________________________________
 > 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