Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[smartswitch] Add support for ENI Based Forwarding #3398

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Merge branch 'master' into dasn_eni_fwd

e5e23be
Select commit
Loading
Failed to load commit list.
Open

[smartswitch] Add support for ENI Based Forwarding #3398

Merge branch 'master' into dasn_eni_fwd
e5e23be
Select commit
Loading
Failed to load commit list.
Azure Pipelines / Azure.sonic-swss failed Jan 24, 2025 in 1d 17h 3m 12s

Build #20250122.19 had test failures

Details

Tests

  • Failed: 6 (0.67%)
  • Passed: 833 (92.66%)
  • Other: 60 (6.67%)
  • Total: 899
Code coverage

  • 49678 of 66827 lines covered (74.34%)

Annotations

Check failure on line 6271 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

Build log #L6271

Bash exited with code '123'.

Check failure on line 7227 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

Build log #L7227

Bash exited with code '123'.

Check failure on line 1 in test_AddRemoveSrv6MySidEnd

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

test_AddRemoveSrv6MySidEnd

AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"
Raw output
self = <test_srv6.TestSrv6MySidFpmsyncd object at 0x7faa9eb73ee0>
dvs = <conftest.DockerVirtualSwitch object at 0x7faa9ee34c70>, testlog = None

    def test_AddRemoveSrv6MySidEnd(self, dvs, testlog):
    
        _, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
        if 'dplane_fpm_sonic' not in output:
            pytest.skip("'dplane_fpm_sonic' required for this test is not available, skipping", allow_module_level=True)
    
>       self.setup_srv6(dvs)

test_srv6.py:821: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_srv6.py:720: in setup_srv6
    self.create_l3_intf("Ethernet104", "")
test_srv6.py:686: in create_l3_intf
    self.adb.wait_for_n_keys(table, len(existed_entries) + 1)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7faa9ee08d30>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE', num_keys = 3
wait_at_least_n_keys = False
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_n_keys(
        self,
        table_name: str,
        num_keys: int,
        wait_at_least_n_keys: bool = False,
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> List[str]:
        """Wait for the specified number of keys to exist in the table.
    
        Args:
            table_name: The name of the table from which to fetch the keys.
            num_keys: The expected number of keys to retrieve from the table.
            polling_config: The parameters to use to poll the db.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            The keys stored in the table. If no keys are found, then an empty List is returned.
        """
    
        def access_function():
            keys = self.get_keys(table_name)
            if wait_at_least_n_keys:
                return (len(keys) >= num_keys, keys)
            else:
                return (len(keys) == num_keys, keys)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
                f'({result}), table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"

dvslib/dvs_database.py:414: AssertionError

Check failure on line 1 in test_AddRemoveSrv6MySidEndX

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

test_AddRemoveSrv6MySidEndX

AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"
Raw output
self = <test_srv6.TestSrv6MySidFpmsyncd object at 0x7faa9ee16c10>
dvs = <conftest.DockerVirtualSwitch object at 0x7faa9ee34c70>, testlog = None

    def test_AddRemoveSrv6MySidEndX(self, dvs, testlog):
    
        _, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
        if 'dplane_fpm_sonic' not in output:
            pytest.skip("'dplane_fpm_sonic' required for this test is not available, skipping", allow_module_level=True)
    
>       self.setup_srv6(dvs)

test_srv6.py:866: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_srv6.py:720: in setup_srv6
    self.create_l3_intf("Ethernet104", "")
test_srv6.py:686: in create_l3_intf
    self.adb.wait_for_n_keys(table, len(existed_entries) + 1)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7faa9ee08d30>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE', num_keys = 3
wait_at_least_n_keys = False
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_n_keys(
        self,
        table_name: str,
        num_keys: int,
        wait_at_least_n_keys: bool = False,
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> List[str]:
        """Wait for the specified number of keys to exist in the table.
    
        Args:
            table_name: The name of the table from which to fetch the keys.
            num_keys: The expected number of keys to retrieve from the table.
            polling_config: The parameters to use to poll the db.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            The keys stored in the table. If no keys are found, then an empty List is returned.
        """
    
        def access_function():
            keys = self.get_keys(table_name)
            if wait_at_least_n_keys:
                return (len(keys) >= num_keys, keys)
            else:
                return (len(keys) == num_keys, keys)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
                f'({result}), table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"

dvslib/dvs_database.py:414: AssertionError

Check failure on line 1 in test_AddRemoveSrv6MySidEndDT4

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

test_AddRemoveSrv6MySidEndDT4

AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"
Raw output
self = <test_srv6.TestSrv6MySidFpmsyncd object at 0x7faa9ed9e220>
dvs = <conftest.DockerVirtualSwitch object at 0x7faa9ee34c70>, testlog = None

    @pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('5.11'),
                        reason="This test requires Linux kernel 5.11 or higher")
    def test_AddRemoveSrv6MySidEndDT4(self, dvs, testlog):
    
        _, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
        if 'dplane_fpm_sonic' not in output:
            pytest.skip("'dplane_fpm_sonic' required for this test is not available, skipping", allow_module_level=True)
    
>       self.setup_srv6(dvs)

test_srv6.py:917: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_srv6.py:720: in setup_srv6
    self.create_l3_intf("Ethernet104", "")
test_srv6.py:686: in create_l3_intf
    self.adb.wait_for_n_keys(table, len(existed_entries) + 1)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7faa9ee08d30>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE', num_keys = 3
wait_at_least_n_keys = False
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_n_keys(
        self,
        table_name: str,
        num_keys: int,
        wait_at_least_n_keys: bool = False,
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> List[str]:
        """Wait for the specified number of keys to exist in the table.
    
        Args:
            table_name: The name of the table from which to fetch the keys.
            num_keys: The expected number of keys to retrieve from the table.
            polling_config: The parameters to use to poll the db.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            The keys stored in the table. If no keys are found, then an empty List is returned.
        """
    
        def access_function():
            keys = self.get_keys(table_name)
            if wait_at_least_n_keys:
                return (len(keys) >= num_keys, keys)
            else:
                return (len(keys) == num_keys, keys)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
                f'({result}), table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"

dvslib/dvs_database.py:414: AssertionError

Check failure on line 1 in test_AddRemoveSrv6MySidEndDT6

See this annotation in the file changed.

@azure-pipelines azure-pipelines / Azure.sonic-swss

test_AddRemoveSrv6MySidEndDT6

AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"
Raw output
self = <test_srv6.TestSrv6MySidFpmsyncd object at 0x7faa9edc4520>
dvs = <conftest.DockerVirtualSwitch object at 0x7faa9ee34c70>, testlog = None

    def test_AddRemoveSrv6MySidEndDT6(self, dvs, testlog):
    
        _, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
        if 'dplane_fpm_sonic' not in output:
            pytest.skip("'dplane_fpm_sonic' required for this test is not available, skipping", allow_module_level=True)
    
>       self.setup_srv6(dvs)

test_srv6.py:965: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_srv6.py:720: in setup_srv6
    self.create_l3_intf("Ethernet104", "")
test_srv6.py:686: in create_l3_intf
    self.adb.wait_for_n_keys(table, len(existed_entries) + 1)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7faa9ee08d30>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE', num_keys = 3
wait_at_least_n_keys = False
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_n_keys(
        self,
        table_name: str,
        num_keys: int,
        wait_at_least_n_keys: bool = False,
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> List[str]:
        """Wait for the specified number of keys to exist in the table.
    
        Args:
            table_name: The name of the table from which to fetch the keys.
            num_keys: The expected number of keys to retrieve from the table.
            polling_config: The parameters to use to poll the db.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            The keys stored in the table. If no keys are found, then an empty List is returned.
        """
    
        def access_function():
            keys = self.get_keys(table_name)
            if wait_at_least_n_keys:
                return (len(keys) >= num_keys, keys)
            else:
                return (len(keys) == num_keys, keys)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
                f'({result}), table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Unexpected number of keys: expected=3, received=2 (('oid:0x6000000000621', 'oid:0x60000000005c9')), table="ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"

dvslib/dvs_database.py:414: AssertionError