github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/oracle/instance_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package oracle_test 5 6 import ( 7 "errors" 8 "sync" 9 10 "github.com/juju/go-oracle-cloud/response" 11 gitjujutesting "github.com/juju/testing" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/core/instance" 15 corenetwork "github.com/juju/juju/core/network" 16 "github.com/juju/juju/environs" 17 "github.com/juju/juju/environs/config" 18 "github.com/juju/juju/environs/context" 19 jujunetwork "github.com/juju/juju/network" 20 "github.com/juju/juju/provider/oracle" 21 oracletesting "github.com/juju/juju/provider/oracle/testing" 22 "github.com/juju/juju/testing" 23 ) 24 25 type instanceSuite struct { 26 gitjujutesting.IsolationSuite 27 env *oracle.OracleEnviron 28 mutex *sync.Mutex 29 30 callCtx context.ProviderCallContext 31 } 32 33 func (i *instanceSuite) SetUpTest(c *gc.C) { 34 var err error 35 i.env, err = oracle.NewOracleEnviron( 36 &oracle.EnvironProvider{}, 37 environs.OpenParams{ 38 Config: testing.ModelConfig(c), 39 }, 40 oracletesting.DefaultEnvironAPI, 41 &advancingClock, 42 ) 43 c.Assert(err, gc.IsNil) 44 c.Assert(i.env, gc.NotNil) 45 i.mutex = &sync.Mutex{} 46 i.callCtx = context.NewCloudCallContext() 47 } 48 49 func (i *instanceSuite) setEnvironAPI(client oracle.EnvironAPI) { 50 i.mutex.Lock() 51 defer i.mutex.Unlock() 52 oracle.SetEnvironAPI(i.env, client) 53 } 54 55 var _ = gc.Suite(&instanceSuite{}) 56 57 func (i instanceSuite) TestNewOracleInstanceEmpty(c *gc.C) { 58 instance, err := oracle.NewOracleInstance(response.Instance{}, i.env) 59 c.Assert(err, gc.NotNil) 60 c.Assert(instance, gc.IsNil) 61 } 62 63 func (i instanceSuite) TestNewOracleInstance(c *gc.C) { 64 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 65 c.Assert(err, gc.IsNil) 66 c.Assert(instance, gc.NotNil) 67 } 68 69 func (i instanceSuite) TestId(c *gc.C) { 70 inst, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 71 c.Assert(err, gc.IsNil) 72 c.Assert(inst, gc.NotNil) 73 id := inst.Id() 74 c.Assert(id, gc.Equals, instance.Id("0")) 75 } 76 77 func (i instanceSuite) TestStatus(c *gc.C) { 78 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 79 c.Assert(err, gc.IsNil) 80 c.Assert(instance, gc.NotNil) 81 82 status := instance.Status(i.callCtx) 83 ok := (len(status.Status) > 0) 84 c.Assert(ok, gc.Equals, true) 85 ok = (len(status.Message) > 0) 86 c.Assert(ok, gc.Equals, false) 87 } 88 89 func (i instanceSuite) TestStorageAttachments(c *gc.C) { 90 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 91 c.Assert(err, gc.IsNil) 92 c.Assert(instance, gc.NotNil) 93 94 attachs := instance.StorageAttachments() 95 c.Assert(attachs, gc.NotNil) 96 } 97 98 func (i instanceSuite) TestAddresses(c *gc.C) { 99 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 100 c.Assert(err, gc.IsNil) 101 c.Assert(instance, gc.NotNil) 102 103 addrs, err := instance.Addresses(i.callCtx) 104 c.Assert(err, gc.IsNil) 105 c.Assert(addrs, gc.NotNil) 106 } 107 108 func (i instanceSuite) TestAddressesWithErrors(c *gc.C) { 109 fakeEnv := &oracletesting.FakeEnvironAPI{ 110 FakeIpAssociation: oracletesting.FakeIpAssociation{ 111 AllErr: errors.New("FakeEnvironAPI"), 112 }, 113 } 114 i.setEnvironAPI(fakeEnv) 115 116 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 117 c.Assert(err, gc.IsNil) 118 c.Assert(instance, gc.NotNil) 119 120 _, err = instance.Addresses(i.callCtx) 121 c.Assert(err, gc.ErrorMatches, "FakeEnvironAPI") 122 } 123 124 func (i instanceSuite) TestOpenPorts(c *gc.C) { 125 fakeConfig := map[string]interface{}{ 126 "firewall-mode": config.FwInstance, 127 } 128 config, err := i.env.Config().Apply(fakeConfig) 129 c.Assert(err, gc.IsNil) 130 131 err = i.env.SetConfig(config) 132 c.Assert(err, gc.IsNil) 133 134 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 135 c.Assert(err, gc.IsNil) 136 c.Assert(instance, gc.NotNil) 137 138 err = instance.OpenPorts(i.callCtx, "0", []jujunetwork.IngressRule{ 139 { 140 PortRange: corenetwork.PortRange{ 141 FromPort: 0, 142 ToPort: 0, 143 }, 144 SourceCIDRs: nil, 145 }, 146 }) 147 c.Assert(err, gc.IsNil) 148 } 149 150 func (i instanceSuite) TestClosePorts(c *gc.C) { 151 fakeConfig := map[string]interface{}{ 152 "firewall-mode": config.FwInstance, 153 } 154 config, err := i.env.Config().Apply(fakeConfig) 155 c.Assert(err, gc.IsNil) 156 157 err = i.env.SetConfig(config) 158 c.Assert(err, gc.IsNil) 159 160 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 161 c.Assert(err, gc.IsNil) 162 c.Assert(instance, gc.NotNil) 163 164 err = instance.ClosePorts(i.callCtx, "0", []jujunetwork.IngressRule{ 165 { 166 PortRange: corenetwork.PortRange{ 167 FromPort: 0, 168 ToPort: 0, 169 }, 170 SourceCIDRs: nil, 171 }, 172 }) 173 c.Assert(err, gc.IsNil) 174 } 175 176 func (i instanceSuite) TestIngressRules(c *gc.C) { 177 fakeConfig := map[string]interface{}{ 178 "firewall-mode": config.FwInstance, 179 } 180 181 config, err := i.env.Config().Apply(fakeConfig) 182 c.Assert(err, gc.IsNil) 183 184 err = i.env.SetConfig(config) 185 c.Assert(err, gc.IsNil) 186 187 instance, err := oracle.NewOracleInstance(oracletesting.DefaultFakeInstancer.Instance, i.env) 188 c.Assert(err, gc.IsNil) 189 c.Assert(instance, gc.NotNil) 190 191 rules, err := instance.IngressRules(i.callCtx, "0") 192 c.Assert(err, gc.IsNil) 193 c.Assert(rules, gc.NotNil) 194 }