github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/provider/gce/google/conn_disks_test.go (about) 1 // Copyright 2015 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 const fakeVolName = "home-zone--c930380d-8337-4bf5-b07a-9dbb5ae771e4" 15 16 func fakeDiskAndSpec() (google.DiskSpec, *compute.Disk, error) { 17 spec := google.DiskSpec{ 18 Series: "trusty", 19 SizeHintGB: 1, 20 Name: fakeVolName, 21 PersistentDiskType: google.DiskPersistentSSD, 22 } 23 fakeDisk, err := google.NewDetached(spec) 24 return spec, fakeDisk, err 25 } 26 27 func (s *connSuite) TestConnectionCreateDisks(c *gc.C) { 28 spec, _, err := fakeDiskAndSpec() 29 c.Check(err, jc.ErrorIsNil) 30 31 disks, err := s.Conn.CreateDisks("home-zone", []google.DiskSpec{spec}) 32 c.Check(err, jc.ErrorIsNil) 33 c.Assert(disks, gc.HasLen, 1) 34 c.Assert(disks[0].Name, gc.Equals, fakeVolName) 35 36 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 37 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "CreateDisk") 38 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 39 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 40 c.Check(s.FakeConn.Calls[0].ComputeDisk.Name, gc.Equals, fakeVolName) 41 } 42 43 func (s *connSuite) TestConnectionDisks(c *gc.C) { 44 _, fakeDisk, err := fakeDiskAndSpec() 45 c.Check(err, jc.ErrorIsNil) 46 s.FakeConn.Disks = []*compute.Disk{fakeDisk} 47 48 disks, err := s.Conn.Disks("home-zone") 49 c.Check(err, jc.ErrorIsNil) 50 c.Assert(disks, gc.HasLen, 1) 51 fakeGoogleDisk := google.NewDisk(fakeDisk) 52 c.Assert(disks[0], gc.DeepEquals, fakeGoogleDisk) 53 54 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 55 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "ListDisks") 56 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 57 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 58 } 59 60 func (s *connSuite) TestConnectionDisk(c *gc.C) { 61 _, fakeDisk, err := fakeDiskAndSpec() 62 c.Check(err, jc.ErrorIsNil) 63 s.FakeConn.Disk = fakeDisk 64 disk, err := s.Conn.Disk("home-zone", fakeVolName) 65 c.Check(err, jc.ErrorIsNil) 66 fakeGoogleDisk := google.NewDisk(fakeDisk) 67 c.Assert(disk, gc.DeepEquals, fakeGoogleDisk) 68 69 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 70 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk") 71 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 72 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 73 } 74 75 func (s *connSuite) TestConnectionAttachDisk(c *gc.C) { 76 _, fakeDisk, err := fakeDiskAndSpec() 77 c.Check(err, jc.ErrorIsNil) 78 s.FakeConn.Disk = fakeDisk 79 att, err := s.Conn.AttachDisk("home-zone", fakeVolName, "a-fake-instance", google.ModeRW) 80 c.Check(err, jc.ErrorIsNil) 81 82 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 83 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk") 84 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 85 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 86 87 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "AttachDisk") 88 c.Check(s.FakeConn.Calls[1].ProjectID, gc.Equals, "spam") 89 c.Check(s.FakeConn.Calls[1].ZoneName, gc.Equals, "home-zone") 90 c.Check(s.FakeConn.Calls[1].InstanceId, gc.Equals, "a-fake-instance") 91 c.Check(s.FakeConn.Calls[1].AttachedDisk.DeviceName, gc.Equals, att.DeviceName) 92 c.Check(s.FakeConn.Calls[1].AttachedDisk.Mode, gc.Equals, string(att.Mode)) 93 94 } 95 96 func (s *connSuite) TestConnectionDetachDisk(c *gc.C) { 97 _, fakeDisk, err := fakeDiskAndSpec() 98 c.Check(err, jc.ErrorIsNil) 99 s.FakeConn.Disk = fakeDisk 100 err = s.Conn.DetachDisk("home-zone", "a-fake-instance", fakeVolName) 101 c.Check(err, jc.ErrorIsNil) 102 103 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 104 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk") 105 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 106 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 107 108 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "DetachDisk") 109 c.Check(s.FakeConn.Calls[1].ProjectID, gc.Equals, "spam") 110 c.Check(s.FakeConn.Calls[1].ZoneName, gc.Equals, "home-zone") 111 c.Check(s.FakeConn.Calls[1].InstanceId, gc.Equals, "a-fake-instance") 112 c.Check(s.FakeConn.Calls[1].DeviceName, gc.Equals, "home-zone-0") 113 } 114 115 func (s *connSuite) TestConnectionRemoveDisks(c *gc.C) { 116 err := s.Conn.RemoveDisk("home-zone", fakeVolName) 117 c.Check(err, jc.ErrorIsNil) 118 119 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 120 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "RemoveDisk") 121 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 122 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 123 c.Check(s.FakeConn.Calls[0].ID, gc.Equals, fakeVolName) 124 } 125 126 func (s *connSuite) TestConnectionInstanceDisks(c *gc.C) { 127 s.FakeConn.AttachedDisks = []*compute.AttachedDisk{{ 128 Source: "https://bogus/url/project/aproject/zone/azone/disk/" + fakeVolName, 129 DeviceName: "home-zone-0", 130 Mode: string(google.ModeRW), 131 }} 132 disks, err := s.Conn.InstanceDisks("home-zone", "a-fake-instance") 133 c.Check(err, jc.ErrorIsNil) 134 c.Assert(disks, gc.HasLen, 1) 135 c.Assert(disks[0].VolumeName, gc.Equals, fakeVolName) 136 c.Assert(disks[0].DeviceName, gc.Equals, "home-zone-0") 137 c.Assert(disks[0].Mode, gc.Equals, google.ModeRW) 138 139 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 140 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "InstanceDisks") 141 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 142 c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone") 143 c.Check(s.FakeConn.Calls[0].InstanceId, gc.Equals, "a-fake-instance") 144 }