[sonic-bgpcfgd] Call Python 3 version of sonic-cfggen for testing (#5847)

sonic-bgpcfgd build fails in the absence of Python 2, as it attempts to explicitly call sonic-cfggen using `/usr/bin/python2.7`. Also, it attempts to call sonic-cfggen using a local, relative path. Since the sonic-config-engine package is not installed, neither are its dependencies.

Now, we configure the Python 3 sonic-config-engine as a dependency of sonic-bgpcfgd, which ensures the Python 3 sonic-config-engine package and its dependencies are installed before sonic-bgpcfgd is built/tested.
This commit is contained in:
Joe LeVeque 2020-11-13 11:39:16 -08:00 committed by GitHub
parent 48822be2aa
commit 56fa3cf494
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 41 additions and 64 deletions

View File

@ -7,7 +7,7 @@ $(SONIC_BGPCFGD)_SRC_PATH = $(SRC_PATH)/sonic-bgpcfgd
# as part of its unit tests.
# TODO: Refactor unit tests so that these dependencies are not needed
$(SONIC_BGPCFGD)_DEPENDS += $(SONIC_PY_COMMON_PY2)
$(SONIC_BGPCFGD)_DEPENDS += $(SONIC_CONFIG_ENGINE_PY3)
$(SONIC_BGPCFGD)_DEBS_DEPENDS += $(PYTHON3_SWSSCOMMON)
$(SONIC_BGPCFGD)_PYTHON_VERSION = 3
SONIC_PYTHON_WHEELS += $(SONIC_BGPCFGD)

View File

@ -26,6 +26,7 @@ setuptools.setup(
],
tests_require = [
'pytest',
'pytest-cov'
'pytest-cov',
'sonic-config-engine'
]
)

View File

@ -1,12 +1,10 @@
!
! template: bgpd/bgpd.conf.j2
!
!
! =========== Managed by sonic-cfggen DO NOT edit manually! ====================
! generated by templates/quagga/bgpd.conf.j2 with config DB data
! file: bgpd.conf
!
!
! template: common/daemons.common.conf.j2
!
hostname new_hostname
@ -19,8 +17,6 @@ log facility local4
! end of template: common/daemons.common.conf.j2!
agentx
!
!
!
! template: bgpd/bgpd.main.conf.j2
!
! bgp multiple-instance
@ -33,15 +29,13 @@ ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32
!
ipv6 prefix-list PL_LoopbackV6 permit fc00::/64
!
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 5 permit fc01::/64
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64
!
route-map HIDE_INTERNAL permit 10
set community local-AS
!
!
router bgp 55555
!
bgp log-neighbor-changes
@ -61,11 +55,10 @@ router bgp 55555
network fc00::1/64
exit-address-family
!
network 10.10.10.1/24
address-family ipv6
network fc01::1/64
exit-address-family
network 10.10.10.1/24
!
!
address-family ipv4
redistribute connected route-map HIDE_INTERNAL

View File

@ -11,15 +11,13 @@ ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32
!
ipv6 prefix-list PL_LoopbackV6 permit fc00::/64
!
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 15 permit fc01::/64
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64
!
route-map HIDE_INTERNAL permit 10
set community local-AS
!
!
router bgp 55555
!
bgp log-neighbor-changes
@ -43,7 +41,6 @@ router bgp 55555
address-family ipv6
network fc01::1/64
exit-address-family
!
!
address-family ipv4
redistribute connected route-map HIDE_INTERNAL

View File

@ -11,15 +11,13 @@ ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32
!
ipv6 prefix-list PL_LoopbackV6 permit fc00::/64
!
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 15 permit fc01::/64
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64
!
route-map HIDE_INTERNAL permit 10
set community local-AS
!
!
router bgp 55555
!
bgp log-neighbor-changes
@ -43,7 +41,6 @@ router bgp 55555
address-family ipv6
network fc01::1/64
exit-address-family
!
!
address-family ipv4
redistribute connected route-map HIDE_INTERNAL

View File

@ -1,23 +1,5 @@
!
! Vnet BGP instance
router bgp 555 vrf Second
no bgp default ipv4-unicast
bgp log-neighbor-changes
bgp bestpath as-path multipath-relax
no bgp default ipv4-unicast
bgp graceful-restart restart-time 240
bgp graceful-restart
bgp router-id 10.20.30.40
neighbor 20.20.20.1 remote-as 20
neighbor 20.20.20.1 description session2
address-family ipv4 unicast
neighbor 20.20.20.1 activate
neighbor 20.20.20.1 soft-reconfiguration inbound
maximum-paths 64
exit-address-family
address-family l2vpn evpn
advertise ipv4 unicast
exit-address-family
router bgp 555 vrf First
no bgp default ipv4-unicast
bgp log-neighbor-changes
@ -36,4 +18,22 @@ router bgp 555 vrf First
address-family l2vpn evpn
advertise ipv4 unicast
exit-address-family
router bgp 555 vrf Second
no bgp default ipv4-unicast
bgp log-neighbor-changes
bgp bestpath as-path multipath-relax
no bgp default ipv4-unicast
bgp graceful-restart restart-time 240
bgp graceful-restart
bgp router-id 10.20.30.40
neighbor 20.20.20.1 remote-as 20
neighbor 20.20.20.1 description session2
address-family ipv4 unicast
neighbor 20.20.20.1 activate
neighbor 20.20.20.1 soft-reconfiguration inbound
maximum-paths 64
exit-address-family
address-family l2vpn evpn
advertise ipv4 unicast
exit-address-family
!

View File

@ -3,7 +3,6 @@
! generated by templates/frr.conf.j2 with config DB data
! file: frr.conf
!
!
! template: common/daemons.common.conf.j2
!
hostname test_hostname
@ -16,15 +15,13 @@ log facility local4
! end of template: common/daemons.common.conf.j2!
agentx
!
!
!
! Enable nht through default route
ip nht resolve-via-default
! Enable link-detect (default disabled)
interface Ethernet4
interface Ethernet0
link-detect
!
interface Ethernet0
interface Ethernet4
link-detect
!
interface PortChannel10
@ -51,15 +48,13 @@ ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32
!
ipv6 prefix-list PL_LoopbackV6 permit fc00::/64
!
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 5 permit fc01::/64
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24
!
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64
!
route-map HIDE_INTERNAL permit 10
set community local-AS
!
!
router bgp 55555
!
bgp log-neighbor-changes
@ -79,11 +74,10 @@ router bgp 55555
network fc00::1/64
exit-address-family
!
network 10.10.10.1/24
address-family ipv6
network fc01::1/64
exit-address-family
network 10.10.10.1/24
!
!
address-family ipv4
redistribute connected route-map HIDE_INTERNAL

View File

@ -1,12 +1,11 @@
!
!
! Enable nht through default route
ip nht resolve-via-default
! Enable link-detect (default disabled)
interface Ethernet4
interface Ethernet0
link-detect
!
interface Ethernet0
interface Ethernet4
link-detect
!
interface PortChannel10
@ -15,4 +14,3 @@ link-detect
interface PortChannel20
link-detect
!
!

View File

@ -3,7 +3,6 @@
! generated by templates/zebra/zebra.conf.j2 using config DB data
! file: zebra.conf
!
!
! template: common/daemons.common.conf.j2
!
hostname new_hostname
@ -15,20 +14,19 @@ log facility local4
!
! end of template: common/daemons.common.conf.j2!
!
vrf Second
vni 20
!
vrf First
vni 10
!
vrf Second
vni 20
!
! Enable nht through default route
ip nht resolve-via-default
! Enable link-detect (default disabled)
interface Ethernet4
interface Ethernet0
link-detect
!
interface Ethernet0
interface Ethernet4
link-detect
!
interface PortChannel10

View File

@ -12,9 +12,8 @@ CONSTANTS_PATH = os.path.abspath('../../files/image_config/constants/constants.y
def run_test(name, template_path, json_path, match_path):
template_path = os.path.join(TEMPLATE_PATH, template_path)
json_path = os.path.join(DATA_PATH, json_path)
cfggen = os.path.abspath("../sonic-config-engine/sonic-cfggen")
command = ['/usr/bin/python2.7', cfggen, "-T", TEMPLATE_PATH, "-t", template_path, "-y", json_path]
p = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env={"PYTHONPATH": "."})
command = ['sonic-cfggen', "-T", TEMPLATE_PATH, "-t", template_path, "-y", json_path]
p = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
assert p.returncode == 0, "sonic-cfggen for %s test returned %d code. stderr='%s'" % (name, p.returncode, stderr)
raw_generated_result = stdout.decode("ascii")