github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/gce/google/disk_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package google_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 "google.golang.org/api/compute/v1" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/provider/gce/google" 12 ) 13 14 type diskSuite struct { 15 google.BaseSuite 16 } 17 18 var _ = gc.Suite(&diskSuite{}) 19 20 func (s *diskSuite) TestDiskSpecTooSmall(c *gc.C) { 21 tooSmall := s.DiskSpec.TooSmall() 22 23 c.Check(tooSmall, jc.IsFalse) 24 } 25 26 func (s *diskSuite) TestDiskSpecTooSmallTrue(c *gc.C) { 27 s.DiskSpec.SizeHintGB = 0 28 tooSmall := s.DiskSpec.TooSmall() 29 30 c.Check(tooSmall, jc.IsTrue) 31 } 32 33 func (s *diskSuite) TestDiskSpecSizeGB(c *gc.C) { 34 size := s.DiskSpec.SizeGB() 35 36 c.Check(size, gc.Equals, uint64(15)) 37 } 38 39 func (s *diskSuite) TestDiskSpecSizeGBMin(c *gc.C) { 40 s.DiskSpec.SizeHintGB = 0 41 size := s.DiskSpec.SizeGB() 42 43 c.Check(size, gc.Equals, uint64(10)) 44 } 45 46 type attachedInfo struct { 47 attached *compute.AttachedDisk 48 diskType string 49 diskMode string 50 } 51 52 func (s *diskSuite) checkAttached(c *gc.C, aInfo attachedInfo) { 53 c.Check(aInfo.attached.Type, gc.Equals, aInfo.diskType) 54 c.Check(aInfo.attached.Boot, gc.Equals, s.DiskSpec.Boot) 55 c.Check(aInfo.attached.Mode, gc.Equals, aInfo.diskMode) 56 c.Check(aInfo.attached.AutoDelete, gc.Equals, s.DiskSpec.AutoDelete) 57 c.Check(aInfo.attached.Interface, gc.Equals, "") 58 c.Check(aInfo.attached.DeviceName, gc.Equals, "") 59 } 60 61 func (s *diskSuite) TestDiskSpecNewAttached(c *gc.C) { 62 attached := google.NewAttached(s.DiskSpec) 63 64 s.checkAttached(c, attachedInfo{ 65 attached: attached, 66 diskType: "PERSISTENT", 67 diskMode: "READ_WRITE", 68 }) 69 } 70 71 func (s *diskSuite) TestDiskSpecNewAttachedBootFalse(c *gc.C) { 72 s.DiskSpec.Boot = false 73 attached := google.NewAttached(s.DiskSpec) 74 75 s.checkAttached(c, attachedInfo{ 76 attached: attached, 77 diskType: "PERSISTENT", 78 diskMode: "READ_WRITE", 79 }) 80 } 81 82 func (s *diskSuite) TestDiskSpecNewAttachedAutoDeleteFalse(c *gc.C) { 83 s.DiskSpec.AutoDelete = false 84 attached := google.NewAttached(s.DiskSpec) 85 86 s.checkAttached(c, attachedInfo{ 87 attached: attached, 88 diskType: "PERSISTENT", 89 diskMode: "READ_WRITE", 90 }) 91 } 92 93 func (s *diskSuite) TestDiskSpecNewAttachedScratch(c *gc.C) { 94 s.DiskSpec.Scratch = true 95 attached := google.NewAttached(s.DiskSpec) 96 97 s.checkAttached(c, attachedInfo{ 98 attached: attached, 99 diskType: "SCRATCH", 100 diskMode: "READ_WRITE", 101 }) 102 } 103 104 func (s *diskSuite) TestDiskSpecNewAttachedReadOnly(c *gc.C) { 105 s.DiskSpec.Readonly = true 106 attached := google.NewAttached(s.DiskSpec) 107 108 s.checkAttached(c, attachedInfo{ 109 attached: attached, 110 diskType: "PERSISTENT", 111 diskMode: "READ_ONLY", 112 }) 113 } 114 115 func (s *diskSuite) TestRootDiskInstance(c *gc.C) { 116 attached := s.Instance.RootDisk() 117 118 c.Assert(attached, gc.NotNil) 119 s.checkAttached(c, attachedInfo{ 120 attached: attached, 121 diskType: "PERSISTENT", 122 diskMode: "READ_WRITE", 123 }) 124 } 125 126 func (s *diskSuite) TestRootDiskInstanceNilSpec(c *gc.C) { 127 inst := google.Instance{} 128 attached := inst.RootDisk() 129 130 c.Assert(attached, gc.IsNil) 131 } 132 133 func (s *diskSuite) TestRootDiskSpec(c *gc.C) { 134 attached := s.InstanceSpec.RootDisk() 135 136 c.Assert(attached, gc.NotNil) 137 s.checkAttached(c, attachedInfo{ 138 attached: attached, 139 diskType: "PERSISTENT", 140 diskMode: "READ_WRITE", 141 }) 142 }