Created by Ian Booth on 2013-01-30 and last modified on 2013-01-30
Get this branch:
bzr branch lp:~wallyworld/goose/RunServer-userData-fix
Only Ian Booth can upload to this branch. If you are Ian Booth please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Ian Booth
Go OpenStack Exchange

Recent revisions

58. By Ian Booth on 2013-01-30

Change RunServerOpts.UserData from []byte to string to make server creation work for openstack provider

57. By Dimiter Naydenov on 2013-01-29

trivial: better nova comments

Follow-up on https://codereview.appspot.com/7228058/, adding better
comments on the Nova ServerDetail struct's fields.


56. By Dimiter Naydenov on 2013-01-29

nova: Addresses in ServerDetail

Implemented handling of public/private addresses map inside ServerDetail.
Added tests in the double to check RunServer sets the appropriate addresses.
We need this in juju-core to get the IP address of an instance.

R=wallyworld, rog, gz

55. By Ian Booth on 2013-01-29

Rewrite rate limit retry tests

This branch uses the new service double control hooks introduced in the previous branch to rewrite the tests which check that rate limit exceeded retries are handled properly.
The kludge used previously to induce a retry error has been removed, and now an additional test can also be easily added to check the behaviour if too many rate limit retry responses are received.

So that the tests run fast, I've allowed for the Retry-After header value to be a float (even though a real instance only assigns an int). This means the tests can specify a really
short retry time (I used 1ms).

I've also re-added a rate limit retry test for use with the live instance, but improved it so that it exists as soon as the first rate limit exceeded response is received.


54. By Ian Booth on 2013-01-29

Error testing infrastructure for service doubles

This branch provides infrastructure to allow tests to specify that the service
doubles should return an error at various points.
The basic premise is that the test provides a hook which is run at the specfied point in time eg when a specific function runs.
The hook is passed the service double and any function arguments. It can inspect the state of the service and the function args and
can decide to return an error if it wants to.

The diff conatins a practical example of this being used - 3 security groups are
created and an error is raised when the second one is deleted.

This work doesn't have to be used to raise an error - the hook can also be used to modify the sate of the service double and simply exit without error.


53. By John A Meinel on 2013-01-28

Include the fixes for no-repository present.

52. By John A Meinel on 2013-01-27

Add live and local tests for identity code.

51. By Ian Booth on 2013-01-24

Goose test infrastructure improvements

This branch improves the usabilty of the goose test infrastructure.

A full Openstack service test double is provided. A bunch of manual coding which was required in each test suite to set up various Openstack module test doubles is replaced by a few lines of code.

New code:

        cred := &identity.Credentials{...}
 openstack := openstack.New(cred)

Old code:

 // Create the identity service.
 s.identityDouble = identityservice.NewUserPass()
 token := s.identityDouble.AddUser(s.cred.User, s.cred.Secrets)
 s.Mux.Handle(baseIdentityURL, s.identityDouble)

 // Register Swift endpoints with identity service.
 ep := identityservice.Endpoint{
  AdminURL: s.Server.URL + baseSwiftURL,
  InternalURL: s.Server.URL + baseSwiftURL,
  PublicURL: s.Server.URL + baseSwiftURL,
  Region: s.cred.Region,
 service := identityservice.Service{"swift", "object-store", []identityservice.Endpoint{ep}}
 s.swiftDouble = swiftservice.New("localhost", baseSwiftURL+"/", token)
 s.Mux.Handle(baseSwiftURL+"/", s.swiftDouble)

 // Register Nova endpoints with identity service.
 ep = identityservice.Endpoint{
  AdminURL: s.Server.URL + baseNovaURL,
  InternalURL: s.Server.URL + baseNovaURL,
  PublicURL: s.Server.URL + baseNovaURL,
  Region: s.cred.Region,
 service = identityservice.Service{"nova", "compute", []identityservice.Endpoint{ep}}
 s.novaDouble = novaservice.New("localhost", "V1", token, "1")

Other changes include:

- fix the identity service double to remove the hard coded userId and tenantId.
- do not hard code a fixed token against a service double - each user is assigned their own token just like a real instance, allowing multi-user tests to be written.
- improvements to the Swift service double to make it use URLs which are compliant with how a real Swift instance would do it.
- factor out a common base class for the legacy and userpass double implementations.
- use a SetupHTTP() for all test doubles instead of requiring the coder to know the magic URL paths to use.


50. By Martin Packman on 2013-01-23

Add simple tool for deleting security groups

Basic test of using the current api for doing some actual task. As the
live tests create lots of security groups without ever deleting them
it's also sort of useful to have around.

R=wallyworld, jameinel, rog, dimitern

49. By John A Meinel on 2013-01-23

test.py: add a python script for running the test suite.

Also has flags for setting up the tarmac test suite.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.