github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/sharedfilesystems/v2/replicas/testing/request_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/vnpaycloud-console/gophercloud/v2" 9 "github.com/vnpaycloud-console/gophercloud/v2/openstack/sharedfilesystems/v2/replicas" 10 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 11 "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client" 12 ) 13 14 func getClient(microVersion string) *gophercloud.ServiceClient { 15 c := client.ServiceClient() 16 c.Type = "sharev2" 17 c.Microversion = microVersion 18 return c 19 } 20 21 func TestCreate(t *testing.T) { 22 th.SetupHTTP() 23 defer th.TeardownHTTP() 24 25 MockCreateResponse(t) 26 27 options := &replicas.CreateOpts{ 28 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 29 AvailabilityZone: "zone-1", 30 } 31 actual, err := replicas.Create(context.TODO(), getClient("2.11"), options).Extract() 32 33 expected := &replicas.Replica{ 34 ID: "3b9c33e8-b136-45c6-84a6-019c8db1d550", 35 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 36 AvailabilityZone: "zone-1", 37 Status: "creating", 38 ShareNetworkID: "ca0163c8-3941-4420-8b01-41517e19e366", 39 CreatedAt: time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC), //"2023-05-26T12:32:56.391337", 40 } 41 42 th.AssertNoErr(t, err) 43 th.AssertDeepEquals(t, expected, actual) 44 } 45 46 func TestDelete(t *testing.T) { 47 th.SetupHTTP() 48 defer th.TeardownHTTP() 49 50 MockDeleteResponse(t) 51 52 result := replicas.Delete(context.TODO(), getClient("2.11"), replicaID) 53 th.AssertNoErr(t, result.Err) 54 } 55 56 func TestForceDeleteSuccess(t *testing.T) { 57 th.SetupHTTP() 58 defer th.TeardownHTTP() 59 60 MockForceDeleteResponse(t) 61 62 err := replicas.ForceDelete(context.TODO(), getClient("2.11"), replicaID).ExtractErr() 63 th.AssertNoErr(t, err) 64 } 65 66 func TestGet(t *testing.T) { 67 th.SetupHTTP() 68 defer th.TeardownHTTP() 69 70 MockGetResponse(t) 71 72 actual, err := replicas.Get(context.TODO(), getClient("2.11"), replicaID).Extract() 73 74 expected := &replicas.Replica{ 75 AvailabilityZone: "zone-1", 76 ShareNetworkID: "ca0163c8-3941-4420-8b01-41517e19e366", 77 ShareServerID: "5ccc1b0c-334a-4e46-81e6-b52e03223060", 78 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 79 ID: replicaID, 80 Status: "available", 81 State: "active", 82 CreatedAt: time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC), 83 UpdatedAt: time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC), 84 } 85 86 th.AssertNoErr(t, err) 87 th.AssertDeepEquals(t, expected, actual) 88 } 89 90 func TestList(t *testing.T) { 91 th.SetupHTTP() 92 defer th.TeardownHTTP() 93 94 MockListResponse(t) 95 96 listOpts := &replicas.ListOpts{ 97 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 98 } 99 allPages, err := replicas.List(getClient("2.11"), listOpts).AllPages(context.TODO()) 100 th.AssertNoErr(t, err) 101 102 actual, err := replicas.ExtractReplicas(allPages) 103 th.AssertNoErr(t, err) 104 105 expected := []replicas.Replica{ 106 { 107 ID: replicaID, 108 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 109 Status: "available", 110 State: "active", 111 }, 112 { 113 ID: "4b70c2e2-eec7-4699-880d-4da9051ca162", 114 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 115 Status: "available", 116 State: "out_of_sync", 117 }, 118 { 119 ID: "920bb037-bdd7-48a1-98f0-1aa1787ca3eb", 120 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 121 Status: "available", 122 State: "in_sync", 123 }, 124 } 125 126 th.AssertDeepEquals(t, expected, actual) 127 } 128 129 func TestListDetail(t *testing.T) { 130 th.SetupHTTP() 131 defer th.TeardownHTTP() 132 133 MockListDetailResponse(t) 134 135 listOpts := &replicas.ListOpts{ 136 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 137 } 138 allPages, err := replicas.ListDetail(getClient("2.11"), listOpts).AllPages(context.TODO()) 139 th.AssertNoErr(t, err) 140 141 actual, err := replicas.ExtractReplicas(allPages) 142 th.AssertNoErr(t, err) 143 144 expected := []replicas.Replica{ 145 { 146 AvailabilityZone: "zone-1", 147 ShareNetworkID: "ca0163c8-3941-4420-8b01-41517e19e366", 148 ShareServerID: "5ccc1b0c-334a-4e46-81e6-b52e03223060", 149 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 150 ID: replicaID, 151 Status: "available", 152 State: "active", 153 CreatedAt: time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC), 154 UpdatedAt: time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC), 155 }, 156 { 157 AvailabilityZone: "zone-2", 158 ShareNetworkID: "ca0163c8-3941-4420-8b01-41517e19e366", 159 ShareServerID: "81aa586e-3a03-4f92-98bd-807d87a61c1a", 160 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 161 ID: "4b70c2e2-eec7-4699-880d-4da9051ca162", 162 Status: "available", 163 State: "out_of_sync", 164 CreatedAt: time.Date(2023, time.May, 26, 11, 59, 38, 313089000, time.UTC), 165 UpdatedAt: time.Date(2023, time.May, 26, 12, 00, 04, 321081000, time.UTC), 166 }, 167 { 168 AvailabilityZone: "zone-1", 169 ShareNetworkID: "ca0163c8-3941-4420-8b01-41517e19e366", 170 ShareServerID: "b87ea601-7d4c-47f3-8956-6876b7a6b6db", 171 ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", 172 ID: "920bb037-bdd7-48a1-98f0-1aa1787ca3eb", 173 Status: "available", 174 State: "in_sync", 175 CreatedAt: time.Date(2023, time.May, 26, 12, 32, 45, 751834000, time.UTC), 176 UpdatedAt: time.Date(2023, time.May, 26, 12, 36, 04, 110328000, time.UTC), 177 }, 178 } 179 180 th.AssertDeepEquals(t, expected, actual) 181 } 182 183 func TestListExportLocationsSuccess(t *testing.T) { 184 th.SetupHTTP() 185 defer th.TeardownHTTP() 186 187 MockListExportLocationsResponse(t) 188 189 actual, err := replicas.ListExportLocations(context.TODO(), getClient("2.47"), replicaID).Extract() 190 191 expected := []replicas.ExportLocation{ 192 { 193 ID: "3fc02d3c-da47-42a2-88b8-2d48f8c276bd", 194 Path: "192.168.1.123:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550", 195 Preferred: true, 196 State: "active", 197 AvailabilityZone: "zone-1", 198 }, 199 { 200 ID: "ae73e762-e8b9-4aad-aad3-23afb7cd6825", 201 Path: "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550", 202 Preferred: false, 203 State: "active", 204 AvailabilityZone: "zone-1", 205 }, 206 } 207 208 th.AssertNoErr(t, err) 209 th.AssertDeepEquals(t, expected, actual) 210 } 211 212 func TestGetExportLocationSuccess(t *testing.T) { 213 th.SetupHTTP() 214 defer th.TeardownHTTP() 215 216 MockGetExportLocationResponse(t) 217 218 s, err := replicas.GetExportLocation(context.TODO(), getClient("2.47"), replicaID, "ae73e762-e8b9-4aad-aad3-23afb7cd6825").Extract() 219 220 th.AssertNoErr(t, err) 221 th.AssertDeepEquals(t, s, &replicas.ExportLocation{ 222 Path: "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550", 223 ID: "ae73e762-e8b9-4aad-aad3-23afb7cd6825", 224 Preferred: false, 225 State: "active", 226 AvailabilityZone: "zone-1", 227 CreatedAt: time.Date(2023, time.May, 26, 12, 44, 33, 987960000, time.UTC), 228 UpdatedAt: time.Date(2023, time.May, 26, 12, 44, 33, 958363000, time.UTC), 229 }) 230 } 231 232 func TestResetStatusSuccess(t *testing.T) { 233 th.SetupHTTP() 234 defer th.TeardownHTTP() 235 236 MockResetStatusResponse(t) 237 238 err := replicas.ResetStatus(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStatusOpts{Status: "available"}).ExtractErr() 239 th.AssertNoErr(t, err) 240 } 241 242 func TestResetStateSuccess(t *testing.T) { 243 th.SetupHTTP() 244 defer th.TeardownHTTP() 245 246 MockResetStateResponse(t) 247 248 err := replicas.ResetState(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStateOpts{State: "active"}).ExtractErr() 249 th.AssertNoErr(t, err) 250 } 251 252 func TestResyncSuccess(t *testing.T) { 253 th.SetupHTTP() 254 defer th.TeardownHTTP() 255 256 MockResyncResponse(t) 257 258 err := replicas.Resync(context.TODO(), getClient("2.11"), replicaID).ExtractErr() 259 th.AssertNoErr(t, err) 260 } 261 262 func TestPromoteSuccess(t *testing.T) { 263 th.SetupHTTP() 264 defer th.TeardownHTTP() 265 266 MockPromoteResponse(t) 267 268 err := replicas.Promote(context.TODO(), getClient("2.11"), replicaID, &replicas.PromoteOpts{QuiesceWaitTime: 30}).ExtractErr() 269 th.AssertNoErr(t, err) 270 }