@@ -33,37 +33,37 @@ func TestServiceUpdateLabel(t *testing.T) {
3333 service .Spec .Labels ["foo" ] = "bar"
3434 _ , err := cli .ServiceUpdate (ctx , serviceID , service .Version , service .Spec , types.ServiceUpdateOptions {})
3535 assert .NilError (t , err )
36- poll .WaitOn (t , serviceIsUpdated (cli , serviceID ), swarm .ServicePoll )
36+ poll .WaitOn (t , serviceSpecIsUpdated (cli , serviceID , service . Version . Index ), swarm .ServicePoll )
3737 service = getService (t , cli , serviceID )
3838 assert .Check (t , is .DeepEqual (service .Spec .Labels , map [string ]string {"foo" : "bar" }))
3939
4040 // add label to non-empty set
4141 service .Spec .Labels ["foo2" ] = "bar"
4242 _ , err = cli .ServiceUpdate (ctx , serviceID , service .Version , service .Spec , types.ServiceUpdateOptions {})
4343 assert .NilError (t , err )
44- poll .WaitOn (t , serviceIsUpdated (cli , serviceID ), swarm .ServicePoll )
44+ poll .WaitOn (t , serviceSpecIsUpdated (cli , serviceID , service . Version . Index ), swarm .ServicePoll )
4545 service = getService (t , cli , serviceID )
4646 assert .Check (t , is .DeepEqual (service .Spec .Labels , map [string ]string {"foo" : "bar" , "foo2" : "bar" }))
4747
4848 delete (service .Spec .Labels , "foo2" )
4949 _ , err = cli .ServiceUpdate (ctx , serviceID , service .Version , service .Spec , types.ServiceUpdateOptions {})
5050 assert .NilError (t , err )
51- poll .WaitOn (t , serviceIsUpdated (cli , serviceID ), swarm .ServicePoll )
51+ poll .WaitOn (t , serviceSpecIsUpdated (cli , serviceID , service . Version . Index ), swarm .ServicePoll )
5252 service = getService (t , cli , serviceID )
5353 assert .Check (t , is .DeepEqual (service .Spec .Labels , map [string ]string {"foo" : "bar" }))
5454
5555 delete (service .Spec .Labels , "foo" )
5656 _ , err = cli .ServiceUpdate (ctx , serviceID , service .Version , service .Spec , types.ServiceUpdateOptions {})
5757 assert .NilError (t , err )
58- poll .WaitOn (t , serviceIsUpdated (cli , serviceID ), swarm .ServicePoll )
58+ poll .WaitOn (t , serviceSpecIsUpdated (cli , serviceID , service . Version . Index ), swarm .ServicePoll )
5959 service = getService (t , cli , serviceID )
6060 assert .Check (t , is .DeepEqual (service .Spec .Labels , map [string ]string {}))
6161
6262 // now make sure we can add again
6363 service .Spec .Labels ["foo" ] = "bar"
6464 _ , err = cli .ServiceUpdate (ctx , serviceID , service .Version , service .Spec , types.ServiceUpdateOptions {})
6565 assert .NilError (t , err )
66- poll .WaitOn (t , serviceIsUpdated (cli , serviceID ), swarm .ServicePoll )
66+ poll .WaitOn (t , serviceSpecIsUpdated (cli , serviceID , service . Version . Index ), swarm .ServicePoll )
6767 service = getService (t , cli , serviceID )
6868 assert .Check (t , is .DeepEqual (service .Spec .Labels , map [string ]string {"foo" : "bar" }))
6969
@@ -271,3 +271,17 @@ func serviceIsUpdated(client client.ServiceAPIClient, serviceID string) func(log
271271 }
272272 }
273273}
274+
275+ func serviceSpecIsUpdated (client client.ServiceAPIClient , serviceID string , serviceOldVersion uint64 ) func (log poll.LogT ) poll.Result {
276+ return func (log poll.LogT ) poll.Result {
277+ service , _ , err := client .ServiceInspectWithRaw (context .Background (), serviceID , types.ServiceInspectOptions {})
278+ switch {
279+ case err != nil :
280+ return poll .Error (err )
281+ case service .Version .Index > serviceOldVersion :
282+ return poll .Success ()
283+ default :
284+ return poll .Continue ("waiting for service %s to be updated" , serviceID )
285+ }
286+ }
287+ }
0 commit comments