Re: [openstack-dev] [RFC] Tempest without branches

2014-04-04 Thread Sean Dague
On 04/04/2014 04:31 PM, Rochelle.RochelleGrober wrote:
> (easier to insert my questions at top of discussion as they are more
> general)
> 
>  
> 
>  
> 
> How would test deprecations work in a branchless Tempest?  Right now,
> there is the discussion on removing the XML tests from Tempest, yet they
> are still valid for Havana and Icehouse.  If they get “removed”, will
> they still be accessible and runnable for Havana version tests?  I can
> see running from a tagged version for Havana, but if you are **not**
> running from the tag, then the files would be “gone”.  So, I’m wondering
> how this would work for Refstack, testing backported bugfixes, etc.

If a feature is deprecated in OpenStack, eventually that feature will be
deleted. The appropriate tests will be put behind a "feature flag" and
not be run if that feature isn't turned on in the Tempest config.

Once that feature no longer exists in a supported OpenStack release,
then it would be deleted from Tempest. This does mean it takes longer to
get code out of Tempest.

As a hypothetical, if Nova v2 XML is removed in Juno, we'll ensure we
have a toggle for Nova v2 XML in the tempest config, and we'll stop
testing it on Juno and going forward.

Once Icehouse goes eol (a year from now), we'd delete those tests
entirely, as there would be no version of supported OpenStack that has
that feature.

I would imagine in the mean time we'd unwind some of the inheritance of
the XML/JSON tests to make it simpler to enhance the JSON tests without
impacting the existing XML tests. But that will be a case by case basis.


> Another related question arises from the discussion of Nova API
> versions.  Tempest tests are being enhanced to do validation, and the
> newer API versions  (2.1,  3.n, etc. when the approach is decided) will
> do validation, etc.  How will these “backward incompatible” tests be
> handled if the test that works for Havana gets modified to work for Juno
> and starts failing Havana code base?

Enhancing validation shouldn't be backwards incompatible. If it is, it's
a bug, and probably something we need to address on all active branches
at the same time.

Also, realize the co-gate means that you won't be able to land a Tempest
master test if it can't simultaneously pass master and stable/icehouse.
So it's self testing.

> With the discussion of project functional tests that could be maintained
> in one place, but run in two (maintenance location undecided, run locale
> local and Tempest/Integrated), how would this “cross project” effort be
> affected by a branchless Tempest?

Honestly, I think that's out of scope. I think there is actually some
confusion about run in devstack, and run with Tempest. And I think that
any code that's not in the Tempest tree probably shouldn't be run in
tempest.

It can run on a real devstack though. We have the swift functional tests
today like that.

> Maybe we need some use cases to ferret out the corner cases of a
> branchless Tempest implementation?  I think we need to get more into
> some of the details to understand what would be needed to be
> added/modified/ removed to make this design proposal work.
> 
>  
> 
> --Rocky
> 
>  
> 
>  
> 
>  
> 
> *From:*David Kranz [mailto:dkr...@redhat.com]
> *Sent:* Friday, April 04, 2014 6:10 AM
> *To:* OpenStack Development Mailing List (not for usage questions)
> *Subject:* Re: [openstack-dev] [RFC] Tempest without branches
> 
>  
> 
> On 04/04/2014 07:37 AM, Sean Dague wrote:
> 
> An interesting conversation has cropped up over the last few days in -qa
> 
> and -infra which I want to bring to the wider OpenStack community. When
> 
> discussing the use of Tempest as part of the Defcore validation we came
> 
> to an interesting question:
> 
>  
> 
> Why does Tempest have stable/* branches? Does it need them?
> 
>  
> 
> Historically the Tempest project has created a stable/foo tag the week
> 
> of release to lock the version of Tempest that will be tested against
> 
> stable branches. The reason we did that is until this cycle we had
> 
> really limited nobs in tempest to control which features were tested.
> 
> stable/havana means - test everything we know how to test in havana. So
> 
> when, for instance, a new API extension landed upstream in icehouse,
> 
> we'd just add the tests to Tempest. It wouldn't impact stable/havana,
> 
> because we wouldn't backport changes.
> 
>  
> 
> But is this really required?
> 
>  
> 
> For instance, we don't branch openstack clients. They are supposed to
> 
> work against multiple server versions. Tempest

Re: [openstack-dev] [RFC] Tempest without branches

2014-04-04 Thread Rochelle.RochelleGrober
(easier to insert my questions at top of discussion as they are more general)


How would test deprecations work in a branchless Tempest?  Right now, there is 
the discussion on removing the XML tests from Tempest, yet they are still valid 
for Havana and Icehouse.  If they get "removed", will they still be accessible 
and runnable for Havana version tests?  I can see running from a tagged version 
for Havana, but if you are *not* running from the tag, then the files would be 
"gone".  So, I'm wondering how this would work for Refstack, testing backported 
bugfixes, etc.

Another related question arises from the discussion of Nova API versions.  
Tempest tests are being enhanced to do validation, and the newer API versions  
(2.1,  3.n, etc. when the approach is decided) will do validation, etc.  How 
will these "backward incompatible" tests be handled if the test that works for 
Havana gets modified to work for Juno and starts failing Havana code base?

With the discussion of project functional tests that could be maintained in one 
place, but run in two (maintenance location undecided, run locale local and 
Tempest/Integrated), how would this "cross project" effort be affected by a 
branchless Tempest?

Maybe we need some use cases to ferret out the corner cases of a branchless 
Tempest implementation?  I think we need to get more into some of the details 
to understand what would be needed to be added/modified/ removed to make this 
design proposal work.

--Rocky



From: David Kranz [mailto:dkr...@redhat.com]
Sent: Friday, April 04, 2014 6:10 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [RFC] Tempest without branches

On 04/04/2014 07:37 AM, Sean Dague wrote:

An interesting conversation has cropped up over the last few days in -qa

and -infra which I want to bring to the wider OpenStack community. When

discussing the use of Tempest as part of the Defcore validation we came

to an interesting question:



Why does Tempest have stable/* branches? Does it need them?



Historically the Tempest project has created a stable/foo tag the week

of release to lock the version of Tempest that will be tested against

stable branches. The reason we did that is until this cycle we had

really limited nobs in tempest to control which features were tested.

stable/havana means - test everything we know how to test in havana. So

when, for instance, a new API extension landed upstream in icehouse,

we'd just add the tests to Tempest. It wouldn't impact stable/havana,

because we wouldn't backport changes.



But is this really required?



For instance, we don't branch openstack clients. They are supposed to

work against multiple server versions. Tempest, at some level, is

another client. So there is some sense there.



Tempest now also have flags on features, and tests are skippable if

services, or even extensions aren't enabled (all explicitly setable in

the tempest.conf). This is a much better control mechanism than the

course grained selection of stable/foo.





If we decided not to set a stable/icehouse branch in 2 weeks, the gate

would change as follows:



Project masters: no change

Project stable/icehouse: would be gated against Tempest master

Tempest master: would double the gate jobs, gate on project master and

project stable/icehouse on every commit.



(That last one needs infra changes to work right, those are all in

flight right now to assess doability.)



Some interesting effects this would have:



 * Tempest test enhancements would immediately apply on stable/icehouse *



... giving us more confidence. A large amount of tests added to master

in every release are enhanced checking for existing function.



 * Tempest test changes would need server changes in master and

stable/icehouse *



In trying tempest master against stable/havana we found a number of

behavior changes in projects that there had been a 2 step change in the

Tempest tests to support. But this actually means that stable/havana and

stable/icehouse for the same API version are different. Going forward

this would require master + stable changes on the projects + Tempest

changes. Which would provide much more friction in changing these sorts

of things by accident.



 * Much more stable testing *



If every Tempest change is gating on stable/icehouse, the week long

stable/havana can't pass tests won't happen. There will be much more

urgency to keep stable branches functioning.





If we got rid of branches in Tempest the path would be:

 * infrastructure to support this in infra - in process, probably

landing today

 * don't set stable/icehouse - decision needed by Apr 17th

 * changes to d-g/devstack to be extra explicit about what features

stable/icehouse should support in tempest.conf

 * see if we can make master work with stable/havana to remove the

stable/havana Tem

Re: [openstack-dev] [RFC] Tempest without branches

2014-04-04 Thread David Kranz

On 04/04/2014 07:37 AM, Sean Dague wrote:

An interesting conversation has cropped up over the last few days in -qa
and -infra which I want to bring to the wider OpenStack community. When
discussing the use of Tempest as part of the Defcore validation we came
to an interesting question:

Why does Tempest have stable/* branches? Does it need them?

Historically the Tempest project has created a stable/foo tag the week
of release to lock the version of Tempest that will be tested against
stable branches. The reason we did that is until this cycle we had
really limited nobs in tempest to control which features were tested.
stable/havana means - test everything we know how to test in havana. So
when, for instance, a new API extension landed upstream in icehouse,
we'd just add the tests to Tempest. It wouldn't impact stable/havana,
because we wouldn't backport changes.

But is this really required?

For instance, we don't branch openstack clients. They are supposed to
work against multiple server versions. Tempest, at some level, is
another client. So there is some sense there.

Tempest now also have flags on features, and tests are skippable if
services, or even extensions aren't enabled (all explicitly setable in
the tempest.conf). This is a much better control mechanism than the
course grained selection of stable/foo.


If we decided not to set a stable/icehouse branch in 2 weeks, the gate
would change as follows:

Project masters: no change
Project stable/icehouse: would be gated against Tempest master
Tempest master: would double the gate jobs, gate on project master and
project stable/icehouse on every commit.

(That last one needs infra changes to work right, those are all in
flight right now to assess doability.)

Some interesting effects this would have:

  * Tempest test enhancements would immediately apply on stable/icehouse *

... giving us more confidence. A large amount of tests added to master
in every release are enhanced checking for existing function.

  * Tempest test changes would need server changes in master and
stable/icehouse *

In trying tempest master against stable/havana we found a number of
behavior changes in projects that there had been a 2 step change in the
Tempest tests to support. But this actually means that stable/havana and
stable/icehouse for the same API version are different. Going forward
this would require master + stable changes on the projects + Tempest
changes. Which would provide much more friction in changing these sorts
of things by accident.

  * Much more stable testing *

If every Tempest change is gating on stable/icehouse, the week long
stable/havana can't pass tests won't happen. There will be much more
urgency to keep stable branches functioning.


If we got rid of branches in Tempest the path would be:
  * infrastructure to support this in infra - in process, probably
landing today
  * don't set stable/icehouse - decision needed by Apr 17th
  * changes to d-g/devstack to be extra explicit about what features
stable/icehouse should support in tempest.conf
  * see if we can make master work with stable/havana to remove the
stable/havana Tempest branch (if this is doable in a month, great, if
not just wait for havana to age out).


I think we would still want to declare Tempest versions from time to
time. I'd honestly suggest a quarterly timebox. The events that are
actually important to Tempest are less the release itself, but the eol
of branches, as that would mean features which removed completely from
any supported tree could be removed.


My current leaning is that this approach would be a good thing, and
provide a better experience for both the community and the defcore
process. However it's a big enough change that we're still collecting
data, and it would be interesting to hear other thoughts from the
community at large on this approach.

-Sean


With regard to havana, the problems with DefCore using stable/havana are 
the same as many of us have felt with testing real deployments of havana.
Master (now icehouse) has many more tests, is more robust to individual 
test failures, and is more configurable. But the work to backport 
improvements is difficult or impossible due to many refactorings on 
master, api changes, and the tempest backport policy that we don't want 
to spend our review time looking backwards. The reality is that almost 
nothing has been backported to stable/havana tempest, and we don't want 
to start doing that now. As defcore/refstack becomes a reality, more 
bugs and desired features in tempest will be found and it would be good 
if issues could be addressed on master.


The approach advocated here would prevent this from happening again with 
icehouse and going forward. That still leaves havana as an important 
case for many folks. I did an initial run of master tempest against 
havana using nova-network but no heat/ceilo/swift). 148 out of 2009 
tests failed. The failures seemed to be in these categories:


1. An api c

[openstack-dev] [RFC] Tempest without branches

2014-04-04 Thread Sean Dague
An interesting conversation has cropped up over the last few days in -qa
and -infra which I want to bring to the wider OpenStack community. When
discussing the use of Tempest as part of the Defcore validation we came
to an interesting question:

Why does Tempest have stable/* branches? Does it need them?

Historically the Tempest project has created a stable/foo tag the week
of release to lock the version of Tempest that will be tested against
stable branches. The reason we did that is until this cycle we had
really limited nobs in tempest to control which features were tested.
stable/havana means - test everything we know how to test in havana. So
when, for instance, a new API extension landed upstream in icehouse,
we'd just add the tests to Tempest. It wouldn't impact stable/havana,
because we wouldn't backport changes.

But is this really required?

For instance, we don't branch openstack clients. They are supposed to
work against multiple server versions. Tempest, at some level, is
another client. So there is some sense there.

Tempest now also have flags on features, and tests are skippable if
services, or even extensions aren't enabled (all explicitly setable in
the tempest.conf). This is a much better control mechanism than the
course grained selection of stable/foo.


If we decided not to set a stable/icehouse branch in 2 weeks, the gate
would change as follows:

Project masters: no change
Project stable/icehouse: would be gated against Tempest master
Tempest master: would double the gate jobs, gate on project master and
project stable/icehouse on every commit.

(That last one needs infra changes to work right, those are all in
flight right now to assess doability.)

Some interesting effects this would have:

 * Tempest test enhancements would immediately apply on stable/icehouse *

... giving us more confidence. A large amount of tests added to master
in every release are enhanced checking for existing function.

 * Tempest test changes would need server changes in master and
stable/icehouse *

In trying tempest master against stable/havana we found a number of
behavior changes in projects that there had been a 2 step change in the
Tempest tests to support. But this actually means that stable/havana and
stable/icehouse for the same API version are different. Going forward
this would require master + stable changes on the projects + Tempest
changes. Which would provide much more friction in changing these sorts
of things by accident.

 * Much more stable testing *

If every Tempest change is gating on stable/icehouse, the week long
stable/havana can't pass tests won't happen. There will be much more
urgency to keep stable branches functioning.


If we got rid of branches in Tempest the path would be:
 * infrastructure to support this in infra - in process, probably
landing today
 * don't set stable/icehouse - decision needed by Apr 17th
 * changes to d-g/devstack to be extra explicit about what features
stable/icehouse should support in tempest.conf
 * see if we can make master work with stable/havana to remove the
stable/havana Tempest branch (if this is doable in a month, great, if
not just wait for havana to age out).


I think we would still want to declare Tempest versions from time to
time. I'd honestly suggest a quarterly timebox. The events that are
actually important to Tempest are less the release itself, but the eol
of branches, as that would mean features which removed completely from
any supported tree could be removed.


My current leaning is that this approach would be a good thing, and
provide a better experience for both the community and the defcore
process. However it's a big enough change that we're still collecting
data, and it would be interesting to hear other thoughts from the
community at large on this approach.

-Sean

-- 
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net



signature.asc
Description: OpenPGP digital signature
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev