@@ -614,58 +614,60 @@ def test_from_cidr_defaults_no_labels_no_rd(self) -> None:
614614 assert nlri .rd == RouteDistinguisher .NORD
615615 assert nlri .cidr .prefix () == '192.168.1.0/24'
616616
617- def test_from_cidr_then_set_rd_only (self ) -> None :
618- """Test from_cidr then setting RD (no labels)"""
617+ def test_from_cidr_with_rd_only (self ) -> None :
618+ """Test from_cidr with RD parameter (no labels)"""
619619 cidr = CIDR .make_cidr (IP .pton ('10.0.0.0' ), 24 )
620- nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn )
621- nlri .rd = RouteDistinguisher .make_from_elements ('10.0.0.1' , 100 )
620+ nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn , rd = RouteDistinguisher .make_from_elements ('10.0.0.1' , 100 ))
622621
623622 assert nlri .labels == Labels .NOLABEL
624623 assert nlri .rd ._str () == '10.0.0.1:100'
625624 assert nlri .cidr .prefix () == '10.0.0.0/24'
626625
627- def test_from_cidr_then_set_labels_only (self ) -> None :
628- """Test from_cidr then setting labels (no RD)"""
626+ def test_from_cidr_with_labels_only (self ) -> None :
627+ """Test from_cidr with labels parameter (no RD)"""
629628 cidr = CIDR .make_cidr (IP .pton ('10.0.0.0' ), 24 )
630- nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn )
631- nlri .labels = Labels .make_labels ([42 ], True )
629+ nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn , labels = Labels .make_labels ([42 ], True ))
632630
633631 assert nlri .labels .labels == [42 ]
634632 assert nlri .rd == RouteDistinguisher .NORD
635633 assert nlri .cidr .prefix () == '10.0.0.0/24'
636634
637- def test_from_cidr_set_rd_before_labels (self ) -> None :
638- """Test from_cidr with RD set BEFORE labels (config parser order)
635+ def test_from_cidr_with_labels_and_rd (self ) -> None :
636+ """Test from_cidr with both labels and RD parameters
639637
640- The configuration parser often sets RD before labels. Verify this
641- order works correctly.
638+ Verifies that both parameters can be set at construction time.
642639 """
643640 cidr = CIDR .make_cidr (IP .pton ('192.168.0.0' ), 16 )
644- nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn )
641+ nlri = IPVPN .from_cidr (
642+ cidr ,
643+ AFI .ipv4 ,
644+ SAFI .mpls_vpn ,
645+ labels = Labels .make_labels ([100 , 200 ], True ),
646+ rd = RouteDistinguisher .make_from_elements ('172.16.0.1' , 50 ),
647+ )
645648
646- # Set RD first (like config parser does)
647- nlri .rd = RouteDistinguisher .make_from_elements ('172.16.0.1' , 50 )
649+ assert nlri .labels .labels == [100 , 200 ]
648650 assert nlri .rd ._str () == '172.16.0.1:50'
649651 assert nlri .cidr .prefix () == '192.168.0.0/16'
650652
651- # Then set labels
652- nlri .labels = Labels .make_labels ([100 , 200 ], True )
653- assert nlri .labels .labels == [100 , 200 ]
654- assert nlri .rd ._str () == '172.16.0.1:50' # RD should be preserved
655- assert nlri .cidr .prefix () == '192.168.0.0/16' # CIDR should be preserved
653+ def test_from_cidr_with_all_parameters (self ) -> None :
654+ """Test from_cidr with all optional parameters"""
655+ from exabgp .bgp .message .update .nlri .qualifier import PathInfo
656656
657- def test_from_cidr_set_labels_before_rd (self ) -> None :
658- """Test from_cidr with labels set BEFORE RD"""
659657 cidr = CIDR .make_cidr (IP .pton ('192.168.0.0' ), 16 )
660- nlri = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn )
658+ nlri = IPVPN .from_cidr (
659+ cidr ,
660+ AFI .ipv4 ,
661+ SAFI .mpls_vpn ,
662+ action = Action .ANNOUNCE ,
663+ path_info = PathInfo .NOPATH ,
664+ labels = Labels .make_labels ([100 ], True ),
665+ rd = RouteDistinguisher .make_from_elements ('172.16.0.1' , 50 ),
666+ )
661667
662- # Set labels first
663- nlri .labels = Labels . make_labels ([ 100 ], True )
668+ assert nlri . action == Action . ANNOUNCE
669+ assert nlri .path_info == PathInfo . NOPATH
664670 assert nlri .labels .labels == [100 ]
665-
666- # Then set RD
667- nlri .rd = RouteDistinguisher .make_from_elements ('172.16.0.1' , 50 )
668- assert nlri .labels .labels == [100 ] # Labels should be preserved
669671 assert nlri .rd ._str () == '172.16.0.1:50'
670672 assert nlri .cidr .prefix () == '192.168.0.0/16'
671673
@@ -872,17 +874,17 @@ def test_single_label_vs_no_labels(self) -> None:
872874 """Compare behavior of NOLABEL vs single label"""
873875 # With NOLABEL
874876 cidr = CIDR .make_cidr (IP .pton ('10.0.0.0' ), 24 )
875- nlri_no_label = IPVPN .from_cidr (cidr , AFI .ipv4 , SAFI .mpls_vpn )
876- nlri_no_label .rd = RouteDistinguisher .make_from_elements ('10.0.0.1' , 1 )
877+ nlri_no_label = IPVPN .from_cidr (
878+ cidr , AFI .ipv4 , SAFI .mpls_vpn , rd = RouteDistinguisher .make_from_elements ('10.0.0.1' , 1 )
879+ )
877880
878881 # With single label
879- nlri_with_label = IPVPN .make_vpn_route (
882+ nlri_with_label = IPVPN .from_cidr (
883+ cidr ,
880884 AFI .ipv4 ,
881885 SAFI .mpls_vpn ,
882- IP .pton ('10.0.0.0' ),
883- 24 ,
884- Labels .make_labels ([42 ], True ),
885- RouteDistinguisher .make_from_elements ('10.0.0.1' , 1 ),
886+ labels = Labels .make_labels ([42 ], True ),
887+ rd = RouteDistinguisher .make_from_elements ('10.0.0.1' , 1 ),
886888 )
887889
888890 # Both should have same RD and CIDR
0 commit comments