blob: e82fc4e1679d76c1b42217935d333db208bd09d1 [file] [log] [blame]
Ildar Svetlovb35f3612020-01-27 13:51:00 +04001package testing
2
3import (
4 "fmt"
5 "net/http"
6 "testing"
7 "time"
8
Ildar Svetlov82d42912020-01-27 14:47:43 +04009 az "gerrit.mcp.mirantis.net/debian/gophercloud.git/openstack/compute/v2/extensions/availabilityzones"
10 th "gerrit.mcp.mirantis.net/debian/gophercloud.git/testhelper"
11 "gerrit.mcp.mirantis.net/debian/gophercloud.git/testhelper/client"
Ildar Svetlovb35f3612020-01-27 13:51:00 +040012)
13
14const GetOutput = `
15{
16 "availabilityZoneInfo": [
17 {
18 "hosts": null,
19 "zoneName": "nova",
20 "zoneState": {
21 "available": true
22 }
23 }
24 ]
25}
26`
27
28const GetDetailOutput = `
29{
30 "availabilityZoneInfo": [
31 {
32 "hosts": {
33 "localhost": {
34 "nova-cert": {
35 "active": true,
36 "available": false,
37 "updated_at": "2017-10-14T17:03:39.000000"
38 },
39 "nova-conductor": {
40 "active": true,
41 "available": false,
42 "updated_at": "2017-10-14T17:04:09.000000"
43 },
44 "nova-consoleauth": {
45 "active": true,
46 "available": false,
47 "updated_at": "2017-10-14T17:04:18.000000"
48 },
49 "nova-scheduler": {
50 "active": true,
51 "available": false,
52 "updated_at": "2017-10-14T17:04:30.000000"
53 }
54 },
55 "openstack-acc-tests.novalocal": {
56 "nova-cert": {
57 "active": true,
58 "available": true,
59 "updated_at": "2018-01-04T04:11:19.000000"
60 },
61 "nova-conductor": {
62 "active": true,
63 "available": true,
64 "updated_at": "2018-01-04T04:11:22.000000"
65 },
66 "nova-consoleauth": {
67 "active": true,
68 "available": true,
69 "updated_at": "2018-01-04T04:11:20.000000"
70 },
71 "nova-scheduler": {
72 "active": true,
73 "available": true,
74 "updated_at": "2018-01-04T04:11:23.000000"
75 }
76 }
77 },
78 "zoneName": "internal",
79 "zoneState": {
80 "available": true
81 }
82 },
83 {
84 "hosts": {
85 "openstack-acc-tests.novalocal": {
86 "nova-compute": {
87 "active": true,
88 "available": true,
89 "updated_at": "2018-01-04T04:11:23.000000"
90 }
91 }
92 },
93 "zoneName": "nova",
94 "zoneState": {
95 "available": true
96 }
97 }
98 ]
99}`
100
101var AZResult = []az.AvailabilityZone{
102 {
103 Hosts: nil,
104 ZoneName: "nova",
105 ZoneState: az.ZoneState{Available: true},
106 },
107}
108
109var AZDetailResult = []az.AvailabilityZone{
110 {
111 Hosts: az.Hosts{
112 "localhost": az.Services{
113 "nova-cert": az.ServiceState{
114 Active: true,
115 Available: false,
116 UpdatedAt: time.Date(2017, 10, 14, 17, 3, 39, 0, time.UTC),
117 },
118 "nova-conductor": az.ServiceState{
119 Active: true,
120 Available: false,
121 UpdatedAt: time.Date(2017, 10, 14, 17, 4, 9, 0, time.UTC),
122 },
123 "nova-consoleauth": az.ServiceState{
124 Active: true,
125 Available: false,
126 UpdatedAt: time.Date(2017, 10, 14, 17, 4, 18, 0, time.UTC),
127 },
128 "nova-scheduler": az.ServiceState{
129 Active: true,
130 Available: false,
131 UpdatedAt: time.Date(2017, 10, 14, 17, 4, 30, 0, time.UTC),
132 },
133 },
134 "openstack-acc-tests.novalocal": az.Services{
135 "nova-cert": az.ServiceState{
136 Active: true,
137 Available: true,
138 UpdatedAt: time.Date(2018, 1, 4, 4, 11, 19, 0, time.UTC),
139 },
140 "nova-conductor": az.ServiceState{
141 Active: true,
142 Available: true,
143 UpdatedAt: time.Date(2018, 1, 4, 4, 11, 22, 0, time.UTC),
144 },
145 "nova-consoleauth": az.ServiceState{
146 Active: true,
147 Available: true,
148 UpdatedAt: time.Date(2018, 1, 4, 4, 11, 20, 0, time.UTC),
149 },
150 "nova-scheduler": az.ServiceState{
151 Active: true,
152 Available: true,
153 UpdatedAt: time.Date(2018, 1, 4, 4, 11, 23, 0, time.UTC),
154 },
155 },
156 },
157 ZoneName: "internal",
158 ZoneState: az.ZoneState{Available: true},
159 },
160 {
161 Hosts: az.Hosts{
162 "openstack-acc-tests.novalocal": az.Services{
163 "nova-compute": az.ServiceState{
164 Active: true,
165 Available: true,
166 UpdatedAt: time.Date(2018, 1, 4, 4, 11, 23, 0, time.UTC),
167 },
168 },
169 },
170 ZoneName: "nova",
171 ZoneState: az.ZoneState{Available: true},
172 },
173}
174
175// HandleGetSuccessfully configures the test server to respond to a Get request
176// for availability zone information.
177func HandleGetSuccessfully(t *testing.T) {
178 th.Mux.HandleFunc("/os-availability-zone", func(w http.ResponseWriter, r *http.Request) {
179 th.TestMethod(t, r, "GET")
180 th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
181
182 w.Header().Add("Content-Type", "application/json")
183 fmt.Fprintf(w, GetOutput)
184 })
185}
186
187// HandleGetDetailSuccessfully configures the test server to respond to a Get request
188// for detailed availability zone information.
189func HandleGetDetailSuccessfully(t *testing.T) {
190 th.Mux.HandleFunc("/os-availability-zone/detail", func(w http.ResponseWriter, r *http.Request) {
191 th.TestMethod(t, r, "GET")
192 th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
193
194 w.Header().Add("Content-Type", "application/json")
195 fmt.Fprintf(w, GetDetailOutput)
196 })
197}