diff --git a/bgp/tests/local_tests/community_set_test.go b/bgp/tests/local_tests/community_set_test.go index 83e2646f..2f4150cd 100644 --- a/bgp/tests/local_tests/community_set_test.go +++ b/bgp/tests/local_tests/community_set_test.go @@ -68,6 +68,7 @@ func TestCommunitySet(t *testing.T) { // Install policy Replace(t, dut2, ocpath.Root().RoutingPolicy().PolicyDefinition(policyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Statement: policy}) Replace(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().Config(), []string{policyName}) + Await(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().State(), []string{policyName}) } routeUnderTestList := []string{ @@ -168,6 +169,7 @@ func TestCommunitySet(t *testing.T) { // Install policy Replace(t, dut1, ocpath.Root().RoutingPolicy().PolicyDefinition(policyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Name: ygot.String(policyName), Statement: policy}) Replace(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().Config(), []string{policyName}) + Await(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().State(), []string{policyName}) } test := func(testRef bool) { diff --git a/bgp/tests/local_tests/policy_test.go b/bgp/tests/local_tests/policy_test.go index eef3d846..189b326c 100644 --- a/bgp/tests/local_tests/policy_test.go +++ b/bgp/tests/local_tests/policy_test.go @@ -84,51 +84,6 @@ func testPolicy(t *testing.T, testspec PolicyTestCase) { }}) defer stop5() - for _, routeTest := range testspec.spec.RouteTests { - // Install all regular test routes into DUT1. - route := &oc.NetworkInstance_Protocol_Static{ - Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), - NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ - "single": { - Index: ygot.String("single"), - NextHop: oc.UnionString("192.0.2.1"), - Recurse: ygot.Bool(true), - }, - }, - } - installStaticRoute(t, dut1, route) - } - - for _, routeTest := range testspec.spec.LongerPathRouteTests { - // Install all longer-path test routes into DUT4. - route := &oc.NetworkInstance_Protocol_Static{ - Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), - NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ - "single": { - Index: ygot.String("single"), - NextHop: oc.UnionString("192.0.2.1"), - Recurse: ygot.Bool(true), - }, - }, - } - installStaticRoute(t, dut4, route) - } - - for _, routeTest := range testspec.spec.AlternatePathRouteTests { - // Install all alternate-path test routes into DUT5. - route := &oc.NetworkInstance_Protocol_Static{ - Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), - NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ - "single": { - Index: ygot.String("single"), - NextHop: oc.UnionString("193.0.2.1"), - Recurse: ygot.Bool(true), - }, - }, - } - installStaticRoute(t, dut5, route) - } - testPolicyAux(t, testspec, dut1, dut2, dut3, dut4, dut5) } @@ -206,6 +161,8 @@ func testPolicyAux(t *testing.T, testspec PolicyTestCase, dut1, dut2, dut3, dut4 Delete(t, dut4, bgp.RoutingPolicyPath.Config()) Delete(t, dut5, bgp.RoutingPolicyPath.Config()) + establishSessionPairs(t, []DevicePair{{dut1, dut2}, {dut2, dut3}, {dut4, dut5}, {dut5, dut2}}...) + installDefaultPolicies := func() { // Clear the path for routes to be propagated. // DUT1 -> DUT2 -> DUT3 @@ -221,6 +178,17 @@ func testPolicyAux(t *testing.T, testspec PolicyTestCase, dut1, dut2, dut3, dut4 Replace(t, dut5, bgp.BGPPath.Neighbor(dut4.RouterID).ApplyPolicy().DefaultImportPolicy().Config(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) Replace(t, dut5, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultExportPolicy().Config(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) Replace(t, dut2, bgp.BGPPath.Neighbor(dut5.RouterID).ApplyPolicy().DefaultImportPolicy().Config(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + + // Wait until policies are installed. + Await(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut2, bgp.BGPPath.Neighbor(dut3.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut3, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + + Await(t, dut4, bgp.BGPPath.Neighbor(dut5.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut5, bgp.BGPPath.Neighbor(dut4.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut5, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut2, bgp.BGPPath.Neighbor(dut5.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) } installDefaultPolicies() @@ -228,7 +196,50 @@ func testPolicyAux(t *testing.T, testspec PolicyTestCase, dut1, dut2, dut3, dut4 testspec.installPolicies(t, dut1, dut2, dut3, dut4, dut5) } - establishSessionPairs(t, []DevicePair{{dut1, dut2}, {dut2, dut3}, {dut4, dut5}, {dut5, dut2}}...) + for _, routeTest := range testspec.spec.RouteTests { + // Install all regular test routes into DUT1. + route := &oc.NetworkInstance_Protocol_Static{ + Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), + NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ + "single": { + Index: ygot.String("single"), + NextHop: oc.UnionString("192.0.2.1"), + Recurse: ygot.Bool(true), + }, + }, + } + installStaticRoute(t, dut1, route) + } + + for _, routeTest := range testspec.spec.LongerPathRouteTests { + // Install all longer-path test routes into DUT4. + route := &oc.NetworkInstance_Protocol_Static{ + Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), + NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ + "single": { + Index: ygot.String("single"), + NextHop: oc.UnionString("192.0.2.1"), + Recurse: ygot.Bool(true), + }, + }, + } + installStaticRoute(t, dut4, route) + } + + for _, routeTest := range testspec.spec.AlternatePathRouteTests { + // Install all alternate-path test routes into DUT5. + route := &oc.NetworkInstance_Protocol_Static{ + Prefix: ygot.String(routeTest.GetInput().GetReachPrefix()), + NextHop: map[string]*oc.NetworkInstance_Protocol_Static_NextHop{ + "single": { + Index: ygot.String("single"), + NextHop: oc.UnionString("193.0.2.1"), + Recurse: ygot.Bool(true), + }, + }, + } + installStaticRoute(t, dut5, route) + } staticp := ocpath.Root().NetworkInstance(fakedevice.DefaultNetworkInstance).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_STATIC, fakedevice.StaticRoutingProtocol) v := GetAll(t, dut1, staticp.StaticAny().Config()) diff --git a/bgp/tests/local_tests/prefix_set_test.go b/bgp/tests/local_tests/prefix_set_test.go index 81918f6a..5a41c3c5 100644 --- a/bgp/tests/local_tests/prefix_set_test.go +++ b/bgp/tests/local_tests/prefix_set_test.go @@ -84,6 +84,7 @@ func TestPrefixSet(t *testing.T) { // Install policy Replace(t, dut2, ocpath.Root().RoutingPolicy().PolicyDefinition(policyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Statement: policy}) Replace(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().Config(), []string{policyName}) + Await(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().State(), []string{policyName}) } invertResult := func(result valpb.RouteTestResult, invert bool) valpb.RouteTestResult { diff --git a/bgp/tests/local_tests/route_propagation_test.go b/bgp/tests/local_tests/route_propagation_test.go index 5a85c4f4..e5df6048 100644 --- a/bgp/tests/local_tests/route_propagation_test.go +++ b/bgp/tests/local_tests/route_propagation_test.go @@ -76,6 +76,16 @@ func TestRoutePropagation(t *testing.T) { establishSessionPairs(t, []DevicePair{{dut1, dut2}, {dut2, dut3}, {dut3, dut4}}...) + awaitDefaultPolicies := func() { + Await(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut2, bgp.BGPPath.Neighbor(dut3.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut3, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut3, bgp.BGPPath.Neighbor(dut4.RouterID).ApplyPolicy().DefaultExportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + Await(t, dut4, bgp.BGPPath.Neighbor(dut3.RouterID).ApplyPolicy().DefaultImportPolicy().State(), oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE) + } + awaitDefaultPolicies() + prefix := "10.10.10.0/24" installStaticRoute(t, dut1, &oc.NetworkInstance_Protocol_Static{ Prefix: ygot.String(prefix), diff --git a/bgp/tests/local_tests/set_attributes_test.go b/bgp/tests/local_tests/set_attributes_test.go index 8ea61aa6..21399fd3 100644 --- a/bgp/tests/local_tests/set_attributes_test.go +++ b/bgp/tests/local_tests/set_attributes_test.go @@ -304,13 +304,17 @@ func TestSetAttributes(t *testing.T) { // Install export policies Replace(t, dut1, ocpath.Root().RoutingPolicy().PolicyDefinition(dut1ExportPolicyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Name: ygot.String(dut1ExportPolicyName), Statement: dut1ExportPolicy}) Replace(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().Config(), []string{dut1ExportPolicyName}) + Await(t, dut1, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().State(), []string{dut1ExportPolicyName}) Replace(t, dut5, ocpath.Root().RoutingPolicy().PolicyDefinition(dut5ExportPolicyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Name: ygot.String(dut5ExportPolicyName), Statement: dut5ExportPolicy}) Replace(t, dut5, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().Config(), []string{dut5ExportPolicyName}) + Await(t, dut5, bgp.BGPPath.Neighbor(dut2.RouterID).ApplyPolicy().ExportPolicy().State(), []string{dut5ExportPolicyName}) // Install import policies Replace(t, dut2, ocpath.Root().RoutingPolicy().PolicyDefinition(dut1ImportPolicyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Name: ygot.String(dut1ImportPolicyName), Statement: dut1ImportPolicy}) Replace(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().Config(), []string{dut1ImportPolicyName}) + Await(t, dut2, bgp.BGPPath.Neighbor(dut1.RouterID).ApplyPolicy().ImportPolicy().State(), []string{dut1ImportPolicyName}) Replace(t, dut2, ocpath.Root().RoutingPolicy().PolicyDefinition(dut5ImportPolicyName).Config(), &oc.RoutingPolicy_PolicyDefinition{Name: ygot.String(dut5ImportPolicyName), Statement: dut5ImportPolicy}) Replace(t, dut2, bgp.BGPPath.Neighbor(dut5.RouterID).ApplyPolicy().ImportPolicy().Config(), []string{dut5ImportPolicyName}) + Await(t, dut2, bgp.BGPPath.Neighbor(dut5.RouterID).ApplyPolicy().ImportPolicy().State(), []string{dut5ImportPolicyName}) }, }) }