@@ -633,7 +633,6 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
633633 routesLeft : func () (int , error ) {
634634 return numDefaultRoutes , nil
635635 },
636- wantErr : false ,
637636 },
638637 {
639638 name : "Delete endpoint do not delete vnet ns it is still in use" ,
@@ -659,7 +658,6 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
659658 routesLeft : func () (int , error ) {
660659 return numDefaultRoutes + 1 , nil
661660 },
662- wantErr : false ,
663661 },
664662 //nolint gocritic
665663 /* {
@@ -694,15 +692,47 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
694692 for _ , tt := range tests {
695693 tt := tt
696694 t .Run (tt .name , func (t * testing.T ) {
697- err := tt .client .DeleteEndpointsImpl (tt .ep , tt .routesLeft )
698- if tt .wantErr {
699- require .Error (t , err )
700- require .Contains (t , err .Error (), tt .wantErrMsg , "Expected:%v actual:%v" , tt .wantErrMsg , err .Error ())
701- } else {
702- require .NoError (t , err )
703- }
695+ tt .client .DeleteEndpointsImpl (tt .ep , tt .routesLeft )
704696 })
705697 }
698+
699+ t .Run ("Delete endpoint runs even if delete routes fails" , func (t * testing.T ) {
700+ nl := netlink .NewMockNetlink (true , "netlink failure" )
701+ // count number of times delete and link and set route are called
702+ // even if deleting the routes fail, we should still delete the veth pair in the vnet ns
703+ deleteLinkFlag := 0
704+ nl .DeleteLinkFn = func (_ string ) error {
705+ deleteLinkFlag ++
706+ return errors .New ("err mock" )
707+ }
708+ errOnDeleteRouteFlag := 0
709+ nl .SetDeleteRouteValidationFn (func (_ * netlink.Route ) error {
710+ errOnDeleteRouteFlag ++
711+ return errors .New ("err mock" )
712+ })
713+
714+ client := TransparentVlanEndpointClient {
715+ primaryHostIfName : "eth0" ,
716+ vlanIfName : "eth0.1" ,
717+ vnetVethName : "A1veth0" ,
718+ containerVethName : "B1veth0" ,
719+ vnetNSName : "az_ns_1" ,
720+ netnsClient : & mockNetns {
721+ deleteNamed : defaultDeleteNamed ,
722+ },
723+ netlink : nl ,
724+ plClient : platform .NewMockExecClient (false ),
725+ netUtilsClient : networkutils .NewNetworkUtils (nl , plc ),
726+ netioshim : netio .NewMockNetIO (false , 0 ),
727+ }
728+ ep := & endpoint {
729+ IPAddresses : IPAddresses ,
730+ }
731+ client .DeleteEndpointsImpl (ep , func () (int , error ) { return 0 , nil })
732+
733+ require .Equal (t , 1 , errOnDeleteRouteFlag , "error must occur during delete route path" )
734+ require .Equal (t , 1 , deleteLinkFlag , "delete link must still be called" )
735+ })
706736}
707737
708738func TestTransparentVlanConfigureContainerInterfacesAndRoutes (t * testing.T ) {
0 commit comments