Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Brant Knudson
Responses inline.

On Mon, Dec 9, 2013 at 10:07 AM, Sean Dague s...@dague.net wrote:

 On 12/09/2013 10:12 AM, Brant Knudson wrote:
  Monty -
 
  Thanks for doing the work already to get the infrastructure set up.
  Looks like I've got the easy part here. I posted an initial patch that
  has one test from keystone in https://review.openstack.org/#/c/60724/ .
  I hope to be able to move all the tests over unchanged. The tricky part
  is getting all the fixtures set up the same way that keystone does.

 I think a direct port of the keystone fixtures is the wrong approach.
 These really need to act more like the scenario tests that exist over
 there. And if the intent is just a dump of the keystone tests we need to
 step back... because that's not going to get accepted.


The reason I'd like to keep keystone's client tests as they are is that
they provide us with coverage of keystone and keystoneclient functionality.
This doesn't mean they have to stay that way forever, since once they're
moved out of Keystone we can start refactoring them.

An alternative approach is to clean up Keystone's client tests as much as
possible first to make them essentially the scenario tests that tempest
would accept. This would leave the tests in keystone longer than we'd like
since we'd like them out of there ASAP.

I actually think that we should solve #4 first - how you test the thing
 you actually want to test in the gate. Which is about getting
 devstack-gate to setup the world that you want to test. I really think
 the location of the tests all flow from there. Because right now it
 seems like the cart is before the horse.


OK. Let's solve #4. If the tests as they are aren't going to be accepted in
Tempest then we can put them elsewhere (leave them in keystone (just run
differently), move to keystoneclient or a new project). To me this testing
has some similarities to Grenade since that involves testing with multiple
versions too, so I'll look into how Grenade works.

Is testing multiple versions of keystoneclient actually worth it? If the
other projects don't feel the need for this then why does Keystone? It's
actually caught problems so it's proved useful to Keystone, and we're
making changes to the client so this type of testing seems important, but
maybe it's not useful enough to continue to do the multiple version
testing. If we're going to support backwards compatibility we should test
it.

If we put something together to test multiple versions of keystoneclient
would other projects want to use it for their clients?

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Jeremy Stanley
On 2013-12-09 11:07:50 -0600 (-0600), Brant Knudson wrote:
[...]
 Is testing multiple versions of keystoneclient actually worth it?
 If the other projects don't feel the need for this then why does
 Keystone? It's actually caught problems so it's proved useful to
 Keystone, and we're making changes to the client so this type of
 testing seems important, but maybe it's not useful enough to
 continue to do the multiple version testing. If we're going to
 support backwards compatibility we should test it.
[...]

Well, at a minimum we should be testing both that the tip of master
for the client works with servers, and also that the tip of
server branches (master, stable/x, stable/y)  work with the latest
released version of the client. There are already plans in motion to
solve this in integration testing for all clients, because not doing
so allows us to break ourselves in unfortunate ways.
-- 
Jeremy Stanley

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Brant Knudson
On Mon, Dec 9, 2013 at 11:18 AM, Jeremy Stanley fu...@yuggoth.org wrote:

 On 2013-12-09 11:07:50 -0600 (-0600), Brant Knudson wrote:
 [...]
  Is testing multiple versions of keystoneclient actually worth it?
  If the other projects don't feel the need for this then why does
  Keystone? It's actually caught problems so it's proved useful to
  Keystone, and we're making changes to the client so this type of
  testing seems important, but maybe it's not useful enough to
  continue to do the multiple version testing. If we're going to
  support backwards compatibility we should test it.
 [...]

 Well, at a minimum we should be testing both that the tip of master
 for the client works with servers, and also that the tip of
 server branches (master, stable/x, stable/y)  work with the latest
 released version of the client. There are already plans in motion to
 solve this in integration testing for all clients, because not doing
 so allows us to break ourselves in unfortunate ways.


This isn't the testing that Keystone's client tests do. Keystone's client
tests verify that the client doesn't change in an incompatible way. For
example, we've got a test that verifies that you can do
client.tenants.list() ; so if someone decides to change tenants to
projects then this test will fail.

I don't know of any specific testing that verifies that the client works
against older (stable/*) servers. Maybe it happens when you submit a change
to stable/ later.

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Jeremy Stanley
On 2013-12-09 11:50:31 -0600 (-0600), Brant Knudson wrote:
[...]
 I don't know of any specific testing that verifies that the
 client works against older (stable/*) servers. Maybe it happens
 when you submit a change to stable/ later.

When a change is submitted or approved for a stable/foo server
branch, Tempest tests run with the other stable servers from that
release along with the master branch tip of all client libraries.
This helps prevent a stable branch update in a server from doing
something which won't work with the latest client versions (as long
as it's being exercised in Tempest). Work is underway to do the same
for changes to the clients so they don't break stable branches of
servers (as happened recently with the iso8601/grizzly debacle). The
other missing piece of the puzzle is testing the servers against the
latest release of the client, so we don't land changes to servers
which require unreleased client features.
-- 
Jeremy Stanley

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Adam Young

On 12/09/2013 11:07 AM, Sean Dague wrote:

On 12/09/2013 10:12 AM, Brant Knudson wrote:

Monty -

Thanks for doing the work already to get the infrastructure set up.
Looks like I've got the easy part here. I posted an initial patch that
has one test from keystone in https://review.openstack.org/#/c/60724/ .
I hope to be able to move all the tests over unchanged. The tricky part
is getting all the fixtures set up the same way that keystone does.

I think a direct port of the keystone fixtures is the wrong approach.
These really need to act more like the scenario tests that exist over
there. And if the intent is just a dump of the keystone tests we need to
step back... because that's not going to get accepted.

I actually think that we should solve #4 first - how you test the thing
you actually want to test in the gate. Which is about getting
devstack-gate to setup the world that you want to test. I really think
the location of the tests all flow from there. Because right now it
seems like the cart is before the horse.



I think we can rework the Keystone tests to meet the Tempest standard 
without making it inot a Major rewrite.



The biggest Sin of the current tests is that it creates self.user_foo 
with an id of 'foo'.  But the test should never be looking for the 
string 'foo'. Instead, They should be doing the equivalent to:


assertEquals(self.user_foo.id, some_user.id)

If we make the fixture Setup create user_foo, but with an ID generated 
for each test using uuid4, we should be able to have the proper test 
semantics.






-Sean




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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Dolph Mathews
On Sun, Dec 8, 2013 at 5:20 PM, Monty Taylor mord...@inaugust.com wrote:

 Hi!

 Thanks - I've been wanting to kill this for a long time. Thanks for
 starting the discussion...

 On 12/08/2013 07:26 PM, Brant Knudson wrote:
 
  We'd like to get the keystoneclient tests out of keystone. They're
  serving a useful purpose of catching problems with non-backwards
  compatible changes in keystoneclient so we still want them run. Problem
  is they're running at the wrong time -- only on changes to keystone and
  not changes to keystoneclient.
 
  The tests need to be run:
 
  When keystoneclient changes
   - run the tests against the change
 
  When the tests change
   - run the change against the current keystoneclient and also old clients
 
  When keystone changes
   - run the tests against the change with current client

 You're talking about this:

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

 Which is almost ready to go.

  So here's what I think we need to do to get keystone client tests out of
  keystone:
 
   1) Figure out where to put the tests - is it tempest or something else?

 Tempest. They should be moved to tempest.

   2) Write up a test and put it there
   3) Have a job that when there's a change in the tests it runs against
  current client lib

 Don't need most of that - the generalized test clients against stable
 versions matrix is about to land - as long as tempest has your tests in
 the scenarios, you'll be fine.

   4) Expand the job to also run against old clients
  - or is there 1 job per version?
  - what versions? (keystone does master, essex-3, and 0.1.1)
  - e.g. tox -e master,essex-3,0.1.1

 essex and 0.1.1 are both older than dirt. We just removed folsom from
 the gate. I'd got ahead and remove these.

  - suggest start with these versions and then consider what to use in
  future

 OpenStack has a clear support policy - the gate infrastructure will be
 covering that. Done!

   5) Now we can start adding tests

 Tempest scenarios.

   6) Have a job that when there's a change in keystoneclient it runs
  these tests against the change
   7) When there's a change in keystone, run these tests against the change

 Yup. Already accounted for.

   8) Copy the keystoneclient tests from keystone to the new location --
  will require some changes
   9) Remove the tests from keystone \o/
  10) Move tests back to keystone where makes sense -- use webtest like v3
  tests
 
  I created an etherpad with this same info so it's easier to discuss:
  https://etherpad.openstack.org/p/KeystoneTestsToTempest
 
  - Brant
 
 
 
  ___
  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


THANK YOU TO EVERYONE HELPING TO MAKE THIS HAPPEN!

To cross-link, there was also a summit discussion on the topic:

  https://etherpad.openstack.org/p/icehouse-summit-qa-keystone

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Brant Knudson
Monty -

Thanks for doing the work already to get the infrastructure set up. Looks
like I've got the easy part here. I posted an initial patch that has one
test from keystone in https://review.openstack.org/#/c/60724/ . I hope to
be able to move all the tests over unchanged. The tricky part is getting
all the fixtures set up the same way that keystone does.

I'm not sure what directory the tests go in Tempest. Maybe it's a new one
like shardy's attempts: https://review.openstack.org/#/c/54810/ . I'll
leave that to the tempest team.

- Brant

On Sun, Dec 8, 2013 at 5:20 PM, Monty Taylor mord...@inaugust.com wrote:

 Hi!

 Thanks - I've been wanting to kill this for a long time. Thanks for
 starting the discussion...

 On 12/08/2013 07:26 PM, Brant Knudson wrote:
 
  We'd like to get the keystoneclient tests out of keystone. They're
  serving a useful purpose of catching problems with non-backwards
  compatible changes in keystoneclient so we still want them run. Problem
  is they're running at the wrong time -- only on changes to keystone and
  not changes to keystoneclient.
 
  The tests need to be run:
 
  When keystoneclient changes
   - run the tests against the change
 
  When the tests change
   - run the change against the current keystoneclient and also old clients
 
  When keystone changes
   - run the tests against the change with current client

 You're talking about this:

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

 Which is almost ready to go.


 So here's what I think we need to do to get keystone client tests out of
  keystone:
 
   1) Figure out where to put the tests - is it tempest or something else?

 Tempest. They should be moved to tempest.

   2) Write up a test and put it there
   3) Have a job that when there's a change in the tests it runs against
  current client lib

 Don't need most of that - the generalized test clients against stable
 versions matrix is about to land - as long as tempest has your tests in
 the scenarios, you'll be fine.

   4) Expand the job to also run against old clients
  - or is there 1 job per version?
  - what versions? (keystone does master, essex-3, and 0.1.1)
  - e.g. tox -e master,essex-3,0.1.1

 essex and 0.1.1 are both older than dirt. We just removed folsom from
 the gate. I'd got ahead and remove these.

  - suggest start with these versions and then consider what to use in
  future

 OpenStack has a clear support policy - the gate infrastructure will be
 covering that. Done!


What is the support policy for the client libs? Nobody's tried to remove
anything since I started reviewing.

  5) Now we can start adding tests

 Tempest scenarios.

   6) Have a job that when there's a change in keystoneclient it runs
  these tests against the change
   7) When there's a change in keystone, run these tests against the change

 Yup. Already accounted for.

   8) Copy the keystoneclient tests from keystone to the new location --
  will require some changes
   9) Remove the tests from keystone \o/
  10) Move tests back to keystone where makes sense -- use webtest like v3
  tests
 
  I created an etherpad with this same info so it's easier to discuss:
  https://etherpad.openstack.org/p/KeystoneTestsToTempest
 
  - Brant
 
 
 
  ___
  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

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-09 Thread Sean Dague
On 12/09/2013 10:12 AM, Brant Knudson wrote:
 Monty -
 
 Thanks for doing the work already to get the infrastructure set up.
 Looks like I've got the easy part here. I posted an initial patch that
 has one test from keystone in https://review.openstack.org/#/c/60724/ .
 I hope to be able to move all the tests over unchanged. The tricky part
 is getting all the fixtures set up the same way that keystone does.

I think a direct port of the keystone fixtures is the wrong approach.
These really need to act more like the scenario tests that exist over
there. And if the intent is just a dump of the keystone tests we need to
step back... because that's not going to get accepted.

I actually think that we should solve #4 first - how you test the thing
you actually want to test in the gate. Which is about getting
devstack-gate to setup the world that you want to test. I really think
the location of the tests all flow from there. Because right now it
seems like the cart is before the horse.

-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] [qa][keystone] Keystoneclient tests to tempest

2013-12-08 Thread Brant Knudson
We'd like to get the keystoneclient tests out of keystone. They're serving
a useful purpose of catching problems with non-backwards compatible changes
in keystoneclient so we still want them run. Problem is they're running at
the wrong time -- only on changes to keystone and not changes to
keystoneclient.

The tests need to be run:

When keystoneclient changes
 - run the tests against the change

When the tests change
 - run the change against the current keystoneclient and also old clients

When keystone changes
 - run the tests against the change with current client

So here's what I think we need to do to get keystone client tests out of
keystone:

 1) Figure out where to put the tests - is it tempest or something else?
 2) Write up a test and put it there
 3) Have a job that when there's a change in the tests it runs against
current client lib
 4) Expand the job to also run against old clients
- or is there 1 job per version?
- what versions? (keystone does master, essex-3, and 0.1.1)
- e.g. tox -e master,essex-3,0.1.1
- suggest start with these versions and then consider what to use in
future
 5) Now we can start adding tests
 6) Have a job that when there's a change in keystoneclient it runs these
tests against the change
 7) When there's a change in keystone, run these tests against the change
 8) Copy the keystoneclient tests from keystone to the new location -- will
require some changes
 9) Remove the tests from keystone \o/
10) Move tests back to keystone where makes sense -- use webtest like v3
tests

I created an etherpad with this same info so it's easier to discuss:
https://etherpad.openstack.org/p/KeystoneTestsToTempest

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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-08 Thread Matt Riedemann



On Sunday, December 08, 2013 11:26:07 AM, Brant Knudson wrote:


We'd like to get the keystoneclient tests out of keystone. They're
serving a useful purpose of catching problems with non-backwards
compatible changes in keystoneclient so we still want them run.
Problem is they're running at the wrong time -- only on changes to
keystone and not changes to keystoneclient.

The tests need to be run:

When keystoneclient changes
 - run the tests against the change

When the tests change
 - run the change against the current keystoneclient and also old clients

When keystone changes
 - run the tests against the change with current client

So here's what I think we need to do to get keystone client tests out
of keystone:

 1) Figure out where to put the tests - is it tempest or something else?
 2) Write up a test and put it there
 3) Have a job that when there's a change in the tests it runs against
current client lib
 4) Expand the job to also run against old clients
- or is there 1 job per version?
- what versions? (keystone does master, essex-3, and 0.1.1)
- e.g. tox -e master,essex-3,0.1.1
- suggest start with these versions and then consider what to use
in future
 5) Now we can start adding tests
 6) Have a job that when there's a change in keystoneclient it runs
these tests against the change
 7) When there's a change in keystone, run these tests against the change
 8) Copy the keystoneclient tests from keystone to the new location --
will require some changes
 9) Remove the tests from keystone \o/
10) Move tests back to keystone where makes sense -- use webtest like
v3 tests

I created an etherpad with this same info so it's easier to discuss:
https://etherpad.openstack.org/p/KeystoneTestsToTempest

- Brant



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


I'll ask the super obvious question, why not move the keystoneclient 
tests to keystoneclient?


--

Thanks,

Matt Riedemann


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


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-08 Thread David Stanek
On Sun, Dec 8, 2013 at 3:37 PM, Matt Riedemann
mrie...@linux.vnet.ibm.comwrote:



 On Sunday, December 08, 2013 11:26:07 AM, Brant Knudson wrote:


 We'd like to get the keystoneclient tests out of keystone. They're
 serving a useful purpose of catching problems with non-backwards
 compatible changes in keystoneclient so we still want them run.
 Problem is they're running at the wrong time -- only on changes to
 keystone and not changes to keystoneclient.

 The tests need to be run:

 When keystoneclient changes
  - run the tests against the change

 When the tests change
  - run the change against the current keystoneclient and also old clients

 When keystone changes
  - run the tests against the change with current client

 So here's what I think we need to do to get keystone client tests out
 of keystone:

  1) Figure out where to put the tests - is it tempest or something else?
  2) Write up a test and put it there
  3) Have a job that when there's a change in the tests it runs against
 current client lib
  4) Expand the job to also run against old clients
 - or is there 1 job per version?
 - what versions? (keystone does master, essex-3, and 0.1.1)
 - e.g. tox -e master,essex-3,0.1.1
 - suggest start with these versions and then consider what to use
 in future
  5) Now we can start adding tests
  6) Have a job that when there's a change in keystoneclient it runs
 these tests against the change
  7) When there's a change in keystone, run these tests against the change
  8) Copy the keystoneclient tests from keystone to the new location --
 will require some changes
  9) Remove the tests from keystone \o/
 10) Move tests back to keystone where makes sense -- use webtest like
 v3 tests

 I created an etherpad with this same info so it's easier to discuss:
 https://etherpad.openstack.org/p/KeystoneTestsToTempest

 - Brant


 I'll ask the super obvious question, why not move the keystoneclient tests
 to keystoneclient?


I believe Brant is talking about the tests that use different versions of
the keystone client against the keystone server.


-- 
David
blog: http://www.traceback.org
twitter: http://twitter.com/dstanek
www: http://dstanek.com
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [qa][keystone] Keystoneclient tests to tempest

2013-12-08 Thread Monty Taylor
Hi!

Thanks - I've been wanting to kill this for a long time. Thanks for
starting the discussion...

On 12/08/2013 07:26 PM, Brant Knudson wrote:
 
 We'd like to get the keystoneclient tests out of keystone. They're
 serving a useful purpose of catching problems with non-backwards
 compatible changes in keystoneclient so we still want them run. Problem
 is they're running at the wrong time -- only on changes to keystone and
 not changes to keystoneclient.
 
 The tests need to be run:
 
 When keystoneclient changes
  - run the tests against the change
 
 When the tests change
  - run the change against the current keystoneclient and also old clients
 
 When keystone changes
  - run the tests against the change with current client

You're talking about this:

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

Which is almost ready to go.

 So here's what I think we need to do to get keystone client tests out of
 keystone:
 
  1) Figure out where to put the tests - is it tempest or something else?

Tempest. They should be moved to tempest.

  2) Write up a test and put it there
  3) Have a job that when there's a change in the tests it runs against
 current client lib

Don't need most of that - the generalized test clients against stable
versions matrix is about to land - as long as tempest has your tests in
the scenarios, you'll be fine.

  4) Expand the job to also run against old clients
 - or is there 1 job per version?
 - what versions? (keystone does master, essex-3, and 0.1.1)
 - e.g. tox -e master,essex-3,0.1.1

essex and 0.1.1 are both older than dirt. We just removed folsom from
the gate. I'd got ahead and remove these.

 - suggest start with these versions and then consider what to use in
 future

OpenStack has a clear support policy - the gate infrastructure will be
covering that. Done!

  5) Now we can start adding tests

Tempest scenarios.

  6) Have a job that when there's a change in keystoneclient it runs
 these tests against the change
  7) When there's a change in keystone, run these tests against the change

Yup. Already accounted for.

  8) Copy the keystoneclient tests from keystone to the new location --
 will require some changes
  9) Remove the tests from keystone \o/
 10) Move tests back to keystone where makes sense -- use webtest like v3
 tests
 
 I created an etherpad with this same info so it's easier to discuss:
 https://etherpad.openstack.org/p/KeystoneTestsToTempest
 
 - Brant
 
 
 
 ___
 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