func (t *LiveTests) SetUpSuite(c *C) { t.LoggingSuite.SetUpSuite(c) // Update some Config items now that we have services running. // This is setting the public-bucket-url and auth-url because that // information is set during startup of the localLiveSuite cl := client.NewClient(t.cred, identity.AuthUserPass, nil) err := cl.Authenticate() c.Assert(err, IsNil) publicBucketURL, err := cl.MakeServiceURL("object-store", nil) c.Assert(err, IsNil) t.TestConfig.UpdateConfig(map[string]interface{}{ "public-bucket-url": publicBucketURL, "auth-url": t.cred.URL, }) t.LiveTests.SetUpSuite(c) openstack.SetFakeToolsStorage(true) // Environ.PublicStorage() is read only. // For testing, we create a specific storage instance which is authorised to write to // the public storage bucket so that we can upload files for testing. t.writeablePublicStorage = openstack.WritablePublicStorage(t.Env) // Put some fake tools in place so that tests that are simply // starting instances without any need to check if those instances // are running will find them in the public bucket. envtesting.UploadFakeTools(c, t.writeablePublicStorage) }
func (s *localServerSuite) SetUpTest(c *C) { s.LoggingSuite.SetUpTest(c) s.srv.start(c, s.cred) s.TestConfig.UpdateConfig(map[string]interface{}{ "auth-url": s.cred.URL, }) s.Tests.SetUpTest(c) s.writeablePublicStorage = openstack.WritablePublicStorage(s.Env) envtesting.UploadFakeTools(c, s.writeablePublicStorage) s.env = s.Tests.Env openstack.UseTestImageData(s.env, s.cred) }
func (t *Tests) TestStartStop(c *C) { e := t.Open(c) envtesting.UploadFakeTools(c, e.Storage()) cfg, err := e.Config().Apply(map[string]interface{}{ "agent-version": version.Current.Number.String(), }) c.Assert(err, IsNil) err = e.SetConfig(cfg) c.Assert(err, IsNil) insts, err := e.Instances(nil) c.Assert(err, IsNil) c.Assert(insts, HasLen, 0) inst0, hc := testing.StartInstance(c, e, "0") c.Assert(inst0, NotNil) id0 := inst0.Id() // Sanity check for hardware characteristics. c.Assert(hc.Arch, NotNil) c.Assert(hc.Mem, NotNil) c.Assert(hc.CpuCores, NotNil) inst1, _ := testing.StartInstance(c, e, "1") c.Assert(inst1, NotNil) id1 := inst1.Id() insts, err = e.Instances([]instance.Id{id0, id1}) c.Assert(err, IsNil) c.Assert(insts, HasLen, 2) c.Assert(insts[0].Id(), Equals, id0) c.Assert(insts[1].Id(), Equals, id1) // order of results is not specified insts, err = e.AllInstances() c.Assert(err, IsNil) c.Assert(insts, HasLen, 2) c.Assert(insts[0].Id(), Not(Equals), insts[1].Id()) err = e.StopInstances([]instance.Instance{inst0}) c.Assert(err, IsNil) insts, err = e.Instances([]instance.Id{id0, id1}) c.Assert(err, Equals, environs.ErrPartialInstances) c.Assert(insts[0], IsNil) c.Assert(insts[1].Id(), Equals, id1) insts, err = e.AllInstances() c.Assert(err, IsNil) c.Assert(insts[0].Id(), Equals, id1) }
func (t *LiveTests) SetUpSuite(c *C) { t.LoggingSuite.SetUpSuite(c) // TODO: Share code from jujutest.LiveTests for creating environment e, err := environs.NewFromAttrs(t.TestConfig.Config) c.Assert(err, IsNil) // Environ.PublicStorage() is read only. // For testing, we create a specific storage instance which is authorised to write to // the public storage bucket so that we can upload files for testing. t.writablePublicStorage = ec2.WritablePublicStorage(e) // Put some fake tools in place so that tests that are simply // starting instances without any need to check if those instances // are running will find them in the public bucket. envtesting.UploadFakeTools(c, t.writablePublicStorage) t.LiveTests.SetUpSuite(c) }
func (srv *localServer) startServer(c *C) { var err error srv.ec2srv, err = ec2test.NewServer() if err != nil { c.Fatalf("cannot start ec2 test server: %v", err) } srv.s3srv, err = s3test.NewServer(srv.config) if err != nil { c.Fatalf("cannot start s3 test server: %v", err) } aws.Regions["test"] = aws.Region{ Name: "test", EC2Endpoint: srv.ec2srv.URL(), S3Endpoint: srv.s3srv.URL(), S3LocationConstraint: true, } s3inst := s3.New(aws.Auth{}, aws.Regions["test"]) writeablePublicStorage := ec2.BucketStorage(s3inst.Bucket("public-tools")) envtesting.UploadFakeTools(c, writeablePublicStorage) srv.addSpice(c) }
func (suite *EnvironSuite) setupFakeTools(c *C) { storage := NewStorage(suite.environ) envtesting.UploadFakeTools(c, storage) }
func (t *localServerSuite) TestBootstrapInstanceUserDataAndState(c *C) { envtesting.UploadFakeTools(c, t.env.Storage()) err := environs.Bootstrap(t.env, constraints.Value{}) c.Assert(err, IsNil) // check that the state holds the id of the bootstrap machine. bootstrapState, err := environs.LoadState(t.env.Storage()) c.Assert(err, IsNil) c.Assert(bootstrapState.StateInstances, HasLen, 1) expectedHardware := instance.MustParseHardware("arch=amd64 cpu-cores=1 cpu-power=100 mem=1740M") insts, err := t.env.AllInstances() c.Assert(err, IsNil) c.Assert(insts, HasLen, 1) c.Check(insts[0].Id(), Equals, bootstrapState.StateInstances[0]) c.Check(expectedHardware, DeepEquals, bootstrapState.Characteristics[0]) info, apiInfo, err := t.env.StateInfo() c.Assert(err, IsNil) c.Assert(info, NotNil) // check that the user data is configured to start zookeeper // and the machine and provisioning agents. inst := t.srv.ec2srv.Instance(string(insts[0].Id())) c.Assert(inst, NotNil) bootstrapDNS, err := insts[0].DNSName() c.Assert(err, IsNil) c.Assert(bootstrapDNS, Not(Equals), "") userData, err := utils.Gunzip(inst.UserData) c.Assert(err, IsNil) c.Logf("first instance: UserData: %q", userData) var x map[interface{}]interface{} err = goyaml.Unmarshal(userData, &x) c.Assert(err, IsNil) CheckPackage(c, x, "git", true) CheckScripts(c, x, "jujud bootstrap-state", true) // TODO check for provisioning agent // TODO check for machine agent // check that a new instance will be started without // zookeeper, with a machine agent, and without a // provisioning agent. series := t.env.Config().DefaultSeries() info.Tag = "machine-1" apiInfo.Tag = "machine-1" inst1, hc, err := t.env.StartInstance("1", "fake_nonce", series, constraints.Value{}, info, apiInfo) c.Assert(err, IsNil) c.Check(*hc.Arch, Equals, "amd64") c.Check(*hc.Mem, Equals, uint64(1740)) c.Check(*hc.CpuCores, Equals, uint64(1)) c.Assert(*hc.CpuPower, Equals, uint64(100)) inst = t.srv.ec2srv.Instance(string(inst1.Id())) c.Assert(inst, NotNil) userData, err = utils.Gunzip(inst.UserData) c.Assert(err, IsNil) c.Logf("second instance: UserData: %q", userData) x = nil err = goyaml.Unmarshal(userData, &x) c.Assert(err, IsNil) CheckPackage(c, x, "zookeeperd", false) // TODO check for provisioning agent // TODO check for machine agent err = t.env.Destroy(append(insts, inst1)) c.Assert(err, IsNil) _, err = environs.LoadState(t.env.Storage()) c.Assert(err, NotNil) }