@@ -633,7 +633,6 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
633
633
routesLeft : func () (int , error ) {
634
634
return numDefaultRoutes , nil
635
635
},
636
- wantErr : false ,
637
636
},
638
637
{
639
638
name : "Delete endpoint do not delete vnet ns it is still in use" ,
@@ -659,7 +658,6 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
659
658
routesLeft : func () (int , error ) {
660
659
return numDefaultRoutes + 1 , nil
661
660
},
662
- wantErr : false ,
663
661
},
664
662
//nolint gocritic
665
663
/* {
@@ -694,15 +692,47 @@ func TestTransparentVlanDeleteEndpoints(t *testing.T) {
694
692
for _ , tt := range tests {
695
693
tt := tt
696
694
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 )
704
696
})
705
697
}
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
+ })
706
736
}
707
737
708
738
func TestTransparentVlanConfigureContainerInterfacesAndRoutes (t * testing.T ) {
0 commit comments