@@ -97,7 +97,7 @@ func TestAgentsRUD(t *testing.T) {
9797}
9898
9999func 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