Skip to content

Commit 3721112

Browse files
committed
Use tools.WaitForTimeout to poll the state
1 parent b0f867a commit 3721112

1 file changed

Lines changed: 49 additions & 27 deletions

File tree

acceptance/openstack/networking/v2/extensions/agents/agents_test.go

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func TestAgentsRUD(t *testing.T) {
9797
}
9898

9999
func TestBGPAgentRUD(t *testing.T) {
100-
waitTime := 30 * time.Second
100+
timeout := 120 * time.Second
101101
clients.RequireAdmin(t)
102102

103103
client, err := clients.NewNetworkV2Client()
@@ -119,60 +119,82 @@ func TestBGPAgentRUD(t *testing.T) {
119119
// Create a BGP Speaker
120120
bgpSpeaker, err := spk.CreateBGPSpeaker(t, client)
121121
th.AssertNoErr(t, err)
122-
time.Sleep(waitTime)
123-
124-
// List the BGP Agents that accommodate the BGP Speaker
125122
pages, err := agents.ListDRAgentHostingBGPSpeakers(client, bgpSpeaker.ID).AllPages()
126123
th.AssertNoErr(t, err)
127124
bgpAgents, err := agents.ExtractAgents(pages)
128125
th.AssertNoErr(t, err)
129126
th.AssertIntGreaterOrEqual(t, len(bgpAgents), 1)
130-
for _, agt := range bgpAgents {
131-
t.Logf("BGP Speaker %s has been scheduled to agent %s", bgpSpeaker.ID, agt.ID)
132-
bgpAgent, err := agents.Get(client, agt.ID).Extract()
133-
th.AssertNoErr(t, err)
134-
numOfSpeakers := int(bgpAgent.Configurations["bgp_speakers"].(float64))
135-
th.AssertEquals(t, numOfSpeakers, 1)
136-
}
127+
128+
// List the BGP Agents that accommodate the BGP Speaker
129+
err = tools.WaitForTimeout(
130+
func() (bool, error) {
131+
flag := true
132+
for _, agt := range bgpAgents {
133+
t.Logf("BGP Speaker %s has been scheduled to agent %s", bgpSpeaker.ID, agt.ID)
134+
bgpAgent, err := agents.Get(client, agt.ID).Extract()
135+
th.AssertNoErr(t, err)
136+
numOfSpeakers := int(bgpAgent.Configurations["bgp_speakers"].(float64))
137+
flag = flag && (numOfSpeakers == 1)
138+
}
139+
return flag, nil
140+
}, timeout)
141+
th.AssertNoErr(t, err)
137142

138143
// Remove the BGP Speaker from the first agent
139144
err = agents.RemoveBGPSpeaker(client, bgpAgents[0].ID, bgpSpeaker.ID).ExtractErr()
140145
th.AssertNoErr(t, err)
141146
t.Logf("BGP Speaker %s has been removed from agent %s", bgpSpeaker.ID, bgpAgents[0].ID)
142-
time.Sleep(waitTime)
143-
bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract()
147+
err = tools.WaitForTimeout(
148+
func() (bool, error) {
149+
bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract()
150+
th.AssertNoErr(t, err)
151+
agentConf := bgpAgent.Configurations
152+
numOfSpeakers := int(agentConf["bgp_speakers"].(float64))
153+
t.Logf("Agent %s has %d speakers", bgpAgent.ID, numOfSpeakers)
154+
return numOfSpeakers == 0, nil
155+
}, timeout)
144156
th.AssertNoErr(t, err)
145-
agentConf := bgpAgent.Configurations
146-
th.AssertEquals(t, int(agentConf["bgp_speakers"].(float64)), 0)
147157

148158
// Remove all BGP Speakers from the agent
149-
pages, err = agents.ListBGPSpeakers(client, bgpAgent.ID).AllPages()
159+
pages, err = agents.ListBGPSpeakers(client, bgpAgents[0].ID).AllPages()
150160
th.AssertNoErr(t, err)
151161
allSpeakers, err := agents.ExtractBGPSpeakers(pages)
152162
th.AssertNoErr(t, err)
153163
for _, speaker := range allSpeakers {
154-
th.AssertNoErr(t, agents.RemoveBGPSpeaker(client, bgpAgent.ID, speaker.ID).ExtractErr())
164+
th.AssertNoErr(t, agents.RemoveBGPSpeaker(client, bgpAgents[0].ID, speaker.ID).ExtractErr())
155165
}
166+
156167
// Schedule a BGP Speaker to an agent
157168
opts := agents.ScheduleBGPSpeakerOpts{
158169
SpeakerID: bgpSpeaker.ID,
159170
}
160-
err = agents.ScheduleBGPSpeaker(client, bgpAgent.ID, opts).ExtractErr()
171+
err = agents.ScheduleBGPSpeaker(client, bgpAgents[0].ID, opts).ExtractErr()
161172
th.AssertNoErr(t, err)
162-
t.Logf("Successfully scheduled speaker %s to agent %s", bgpSpeaker.ID, bgpAgent.ID)
163-
time.Sleep(waitTime)
164-
bgpAgent, err = agents.Get(client, bgpAgent.ID).Extract()
173+
t.Logf("Successfully scheduled speaker %s to agent %s", bgpSpeaker.ID, bgpAgents[0].ID)
174+
175+
err = tools.WaitForTimeout(
176+
func() (bool, error) {
177+
bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract()
178+
th.AssertNoErr(t, err)
179+
agentConf := bgpAgent.Configurations
180+
numOfSpeakers := int(agentConf["bgp_speakers"].(float64))
181+
t.Logf("Agent %s has %d speakers", bgpAgent.ID, numOfSpeakers)
182+
return 1 == numOfSpeakers, nil
183+
}, timeout)
165184
th.AssertNoErr(t, err)
166-
agentConf = bgpAgent.Configurations
167-
th.AssertEquals(t, 1, int(agentConf["bgp_speakers"].(float64)))
168185

169186
// Delete the BGP Speaker
170187
speakers.Delete(client, bgpSpeaker.ID).ExtractErr()
171188
th.AssertNoErr(t, err)
172189
t.Logf("Successfully deleted the BGP Speaker, %s", bgpSpeaker.ID)
173-
time.Sleep(waitTime)
174-
bgpAgent, err = agents.Get(client, bgpAgent.ID).Extract()
190+
err = tools.WaitForTimeout(
191+
func() (bool, error) {
192+
bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract()
193+
th.AssertNoErr(t, err)
194+
agentConf := bgpAgent.Configurations
195+
numOfSpeakers := int(agentConf["bgp_speakers"].(float64))
196+
t.Logf("Agent %s has %d speakers", bgpAgent.ID, numOfSpeakers)
197+
return 0 == numOfSpeakers, nil
198+
}, timeout)
175199
th.AssertNoErr(t, err)
176-
agentConf = bgpAgent.Configurations
177-
th.AssertEquals(t, 0, int(agentConf["bgp_speakers"].(float64)))
178200
}

0 commit comments

Comments
 (0)