github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/gce/environ_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package gce_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/cloudconfig/instancecfg" 11 "github.com/juju/juju/environs" 12 envtesting "github.com/juju/juju/environs/testing" 13 "github.com/juju/juju/network" 14 "github.com/juju/juju/provider/common" 15 "github.com/juju/juju/provider/gce" 16 "github.com/juju/juju/testing" 17 ) 18 19 type environSuite struct { 20 gce.BaseSuite 21 } 22 23 var _ = gc.Suite(&environSuite{}) 24 25 func (s *environSuite) TestName(c *gc.C) { 26 name := s.Env.Name() 27 28 c.Check(name, gc.Equals, "google") 29 } 30 31 func (s *environSuite) TestProvider(c *gc.C) { 32 provider := s.Env.Provider() 33 34 c.Check(provider, gc.Equals, gce.Provider) 35 } 36 37 func (s *environSuite) TestRegion(c *gc.C) { 38 cloudSpec, err := s.Env.Region() 39 c.Assert(err, jc.ErrorIsNil) 40 41 c.Check(cloudSpec.Region, gc.Equals, "us-east1") 42 c.Check(cloudSpec.Endpoint, gc.Equals, "https://www.googleapis.com") 43 } 44 45 func (s *environSuite) TestSetConfig(c *gc.C) { 46 err := s.Env.SetConfig(s.Config) 47 c.Assert(err, jc.ErrorIsNil) 48 49 c.Check(gce.ExposeEnvConfig(s.Env), jc.DeepEquals, s.EnvConfig) 50 c.Check(gce.ExposeEnvConnection(s.Env), gc.Equals, s.FakeConn) 51 } 52 53 func (s *environSuite) TestSetConfigFake(c *gc.C) { 54 err := s.Env.SetConfig(s.Config) 55 c.Assert(err, jc.ErrorIsNil) 56 57 c.Check(s.FakeConn.Calls, gc.HasLen, 0) 58 } 59 60 func (s *environSuite) TestConfig(c *gc.C) { 61 cfg := s.Env.Config() 62 63 c.Check(cfg, jc.DeepEquals, s.Config) 64 } 65 66 func (s *environSuite) TestBootstrap(c *gc.C) { 67 s.FakeCommon.Arch = "amd64" 68 s.FakeCommon.Series = "trusty" 69 finalizer := func(environs.BootstrapContext, *instancecfg.InstanceConfig, environs.BootstrapDialOpts) error { 70 return nil 71 } 72 s.FakeCommon.BSFinalizer = finalizer 73 74 ctx := envtesting.BootstrapContext(c) 75 params := environs.BootstrapParams{ 76 ControllerConfig: testing.FakeControllerConfig(), 77 } 78 result, err := s.Env.Bootstrap(ctx, params) 79 c.Assert(err, jc.ErrorIsNil) 80 81 c.Check(result.Arch, gc.Equals, "amd64") 82 c.Check(result.Series, gc.Equals, "trusty") 83 // We don't check bsFinalizer because functions cannot be compared. 84 c.Check(result.Finalize, gc.NotNil) 85 } 86 87 func (s *environSuite) TestBootstrapOpensAPIPort(c *gc.C) { 88 finalizer := func(environs.BootstrapContext, *instancecfg.InstanceConfig, environs.BootstrapDialOpts) error { 89 return nil 90 } 91 s.FakeCommon.BSFinalizer = finalizer 92 93 ctx := envtesting.BootstrapContext(c) 94 params := environs.BootstrapParams{ 95 ControllerConfig: testing.FakeControllerConfig(), 96 } 97 _, err := s.Env.Bootstrap(ctx, params) 98 c.Assert(err, jc.ErrorIsNil) 99 apiPort := params.ControllerConfig.APIPort() 100 101 called, calls := s.FakeConn.WasCalled("OpenPorts") 102 c.Check(called, gc.Equals, true) 103 c.Check(calls, gc.HasLen, 1) 104 c.Check(calls[0].FirewallName, gc.Equals, gce.GlobalFirewallName(s.Env)) 105 expectPorts := []network.PortRange{{ 106 FromPort: apiPort, 107 ToPort: apiPort, 108 Protocol: "tcp", 109 }} 110 c.Check(calls[0].PortRanges, jc.DeepEquals, expectPorts) 111 } 112 113 func (s *environSuite) TestBootstrapCommon(c *gc.C) { 114 ctx := envtesting.BootstrapContext(c) 115 params := environs.BootstrapParams{ 116 ControllerConfig: testing.FakeControllerConfig(), 117 } 118 _, err := s.Env.Bootstrap(ctx, params) 119 c.Assert(err, jc.ErrorIsNil) 120 121 s.FakeCommon.CheckCalls(c, []gce.FakeCall{{ 122 FuncName: "Bootstrap", 123 Args: gce.FakeCallArgs{ 124 "ctx": ctx, 125 "switch": s.Env, 126 "params": params, 127 }, 128 }}) 129 } 130 131 func (s *environSuite) TestDestroy(c *gc.C) { 132 err := s.Env.Destroy() 133 134 c.Check(err, jc.ErrorIsNil) 135 } 136 137 func (s *environSuite) TestDestroyAPI(c *gc.C) { 138 err := s.Env.Destroy() 139 c.Assert(err, jc.ErrorIsNil) 140 141 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 142 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "Ports") 143 fwname := common.EnvFullName(s.Env.Config().UUID()) 144 c.Check(s.FakeConn.Calls[0].FirewallName, gc.Equals, fwname) 145 s.FakeCommon.CheckCalls(c, []gce.FakeCall{{ 146 FuncName: "Destroy", 147 Args: gce.FakeCallArgs{ 148 "switch": s.Env, 149 }, 150 }}) 151 }