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

[action] [PR:3247] Reset skip error counter on a fabric link if it was down. (#3247) #3281

Merged
merged 1 commit into from
Sep 7, 2024

Reset skip error counter on a fabric link if it was down. (#3247)

1cde91a
Select commit
Loading
Failed to load commit list.
Merged

[action] [PR:3247] Reset skip error counter on a fabric link if it was down. (#3247) #3281

Reset skip error counter on a fabric link if it was down. (#3247)
1cde91a
Select commit
Loading
Failed to load commit list.
Azure Pipelines / Azure.sonic-swss failed Sep 7, 2024 in 3h 8m 24s

Build #20240906.11 had test failures

Details

Tests

  • Failed: 29 (3.22%)
  • Passed: 819 (91.00%)
  • Other: 52 (5.78%)
  • Total: 900
Code coverage

  • 40254 of 60723 lines covered (66.29%)

Annotations

Check failure on line 12773 in Build log

See this annotation in the file changed.

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

Build log #L12773

Bash exited with code '123'.

Check failure on line 13162 in Build log

See this annotation in the file changed.

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

Build log #L13162

Bash exited with code '123'.

Check failure on line 1 in test_pfcwd_shared_egress_acl_table

See this annotation in the file changed.

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

test_pfcwd_shared_egress_acl_table

AssertionError: Operation timed out after 600 seconds with result None
Raw output
self = <test_pfcwd_shared_egress_acl_table.TestPfcwdFunc object at 0x7f5a243e0ee0>
setup_teardown_test = None

    def test_pfcwd_shared_egress_acl_table(self, setup_teardown_test):
        try:
            # enable PFC on queues
            test_queues = [3, 4]
            self.set_ports_pfc(pfc_queues=test_queues)
    
            # start PFCWD on ports and PFC storm
            self.start_pfcwd_on_ports()
            storm_queue = test_queues
            self.set_storm_state(storm_queue)
    
            # verify egress ACLs in asic db
            expected_acls = []
            for port in self.test_ports:
                for queue in storm_queue:
                    expected_acls.append((self.port_oids[port], queue))
>           self.verify_egress_acls(expected_acls)

test_pfcwd_shared_egress_acl_table.py:155: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_pfcwd_shared_egress_acl_table.py:137: in verify_egress_acls
    wait_for_result(do_verify_egress_acls, polling_config=max_poll)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

polling_function = <function TestPfcwdFunc.verify_egress_acls.<locals>.do_verify_egress_acls at 0x7f5a2576af70>
polling_config = PollingConfig(polling_interval=5, timeout=600, strict=True)
failure_message = None

    def wait_for_result(
        polling_function: Callable[[], Tuple[bool, Any]],
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> Tuple[bool, Any]:
        """Run `polling_function` periodically using the specified `polling_config`.
    
        Args:
            polling_function: The function being polled. The function cannot take any arguments and
                must return a status which indicates if the function was succesful or not, as well as
                some return value.
            polling_config: The parameters to use to poll the polling function.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            If the polling function succeeds, then this method will return True and the output of the
            polling function.
    
            If it does not succeed within the provided timeout, it will return False and whatever the
            output of the polling function was on the final attempt.
        """
        for _ in range(polling_config.iterations()):
            status, result = polling_function()
    
            if status:
                return (True, result)
    
            time.sleep(polling_config.polling_interval)
    
        if polling_config.strict:
            message = failure_message or f"Operation timed out after {polling_config.timeout} seconds with result {result}"
>           assert False, message
E           AssertionError: Operation timed out after 600 seconds with result None

dvslib/dvs_common.py:60: AssertionError

Check failure on line 1 in test_Neighbor

See this annotation in the file changed.

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

test_Neighbor

AssertionError: Entry still exists: entry={'SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS': '00:00:00:00:11:11'}, key="{"ip":"192.168.1.100","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}", table="ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY"
Raw output
self = <test_mux.TestMuxTunnel object at 0x7fecbbb62070>
dvs = <conftest.DockerVirtualSwitch object at 0x7fecbbb88490>
dvs_route = <dvslib.dvs_route.DVSRoute object at 0x7fecbbaf2520>
setup_vlan = None, setup_mux_cable = None, testlog = None

    def test_Neighbor(self, dvs, dvs_route, setup_vlan, setup_mux_cable, testlog):
        """ test Neighbor entries and mux state change """
    
        confdb = dvs.get_config_db()
        appdb = swsscommon.DBConnector(swsscommon.APPL_DB, dvs.redis_sock, 0)
        asicdb = dvs.get_asic_db()
    
>       self.create_and_test_neighbor(confdb, appdb, asicdb, dvs, dvs_route)

test_mux.py:1499: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_mux.py:401: in create_and_test_neighbor
    self.bulk_neighbor_test(confdb, appdb, asicdb, dvs, dvs_route)
test_mux.py:378: in bulk_neighbor_test
    asicdb.wait_for_deleted_entry(self.ASIC_NEIGH_TABLE, neigh_info.ipv4_key)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7fecbbb31280>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY'
key = '{"ip":"192.168.1.100","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}'
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_deleted_entry(
        self,
        table_name: str,
        key: str,
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> Dict[str, str]:
        """Wait for no entry to exist at `key` in the specified table.
    
        Args:
            table_name: The name of the table being checked.
            key: The key to be checked.
            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 entry stored at `key`. If no entry is found, then an empty Dict is returned.
        """
    
        def access_function():
            fv_pairs = self.get_entry(table_name, key)
            return (not bool(fv_pairs), fv_pairs)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f'Entry still exists: entry={result}, key="{key}", table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Entry still exists: entry={'SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS': '00:00:00:00:11:11'}, key="{"ip":"192.168.1.100","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}", table="ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY"

dvslib/dvs_database.py:373: AssertionError

Check failure on line 1 in test_Fdb

See this annotation in the file changed.

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

test_Fdb

AssertionError: Expected keys not found: expected=['{"ip":"fc02:1000::10","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}'], received=('{"ip":"fc02:1001::175","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.208","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.234","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.153","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.143","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::151","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::241","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.105","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.212","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::165","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::144","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::184","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::218","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.130","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::251","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.222","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.180","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::111","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.231","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.141","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.224","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.251","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::119","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::215","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.140","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::147","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.135","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::197","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::234","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.226","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::216","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.233","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::121","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::117","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.126","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.210","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.213","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::235","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::142","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.176","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.229","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::160","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.113","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{
Raw output
self = <test_mux.TestMuxTunnel object at 0x7fecbba39880>
dvs = <conftest.DockerVirtualSwitch object at 0x7fecbbb88490>
dvs_route = <dvslib.dvs_route.DVSRoute object at 0x7fecbbaf2520>, testlog = None

    def test_Fdb(self, dvs, dvs_route, testlog):
        """ test Fdb entries and mux state change """
    
        appdb = swsscommon.DBConnector(swsscommon.APPL_DB, dvs.redis_sock, 0)
        asicdb = dvs.get_asic_db()
    
>       self.create_and_test_fdb(appdb, asicdb, dvs, dvs_route)

test_mux.py:1507: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_mux.py:488: in create_and_test_fdb
    self.check_neigh_in_asic_db(asicdb, ip_1)
test_mux.py:215: in check_neigh_in_asic_db
    nbr_keys = asicdb.wait_for_matching_keys(self.ASIC_NEIGH_TABLE, [expected_key])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dvslib.dvs_database.DVSDatabase object at 0x7fecbbb31280>
table_name = 'ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY'
expected_keys = ['{"ip":"fc02:1000::10","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}']
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = None

    def wait_for_matching_keys(
        self,
        table_name: str,
        expected_keys: List[str],
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> List[str]:
        """Wait for the specified keys to exist in the table.
    
        Args:
            table_name: The name of the table from which to fetch the keys.
            expected_keys: The keys we expect to see in 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)
            return (all(key in keys for key in expected_keys), keys)
    
        status, result = wait_for_result(
            access_function, self._disable_strict_polling(polling_config)
        )
    
        if not status:
            message = failure_message or (
                f"Expected keys not found: expected={expected_keys}, received={result}, "
                f'table="{table_name}"'
            )
>           assert not polling_config.strict, message
E           AssertionError: Expected keys not found: expected=['{"ip":"fc02:1000::10","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}'], received=('{"ip":"fc02:1001::175","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.208","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.234","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.153","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.143","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::151","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::241","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.105","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.212","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::165","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::144","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::184","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::218","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"192.168.1.130","rif":"oid:0x600000000066a","switch_id":"oid:0x21000000000000"}', '{"ip":"fc02:1001::

Check failure on line 1 in test_Route

See this annotation in the file changed.

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

test_Route

AssertionError: Entry not found: key="2.3.4.0/24", table="ROUTE_TABLE"
Raw output
self = <test_mux.TestMuxTunnel object at 0x7fecbbac2340>
dvs = <conftest.DockerVirtualSwitch object at 0x7fecbbb88490>
dvs_route = <dvslib.dvs_route.DVSRoute object at 0x7fecbbaf2520>, testlog = None

    def test_Route(self, dvs, dvs_route, testlog):
        """ test Route entries and mux state change """
    
        appdb = swsscommon.DBConnector(swsscommon.APPL_DB, dvs.redis_sock, 0)
        asicdb = dvs.get_asic_db()
    
>       self.create_and_test_route(appdb, asicdb, dvs, dvs_route)

test_mux.py:1515: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_mux.py:538: in create_and_test_route
    pdb.wait_for_entry("ROUTE_TABLE", rtprefix)
dvslib/dvs_database.py:164: in wait_for_entry
    _, result = wait_for_result(access_function, polling_config, message)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

polling_function = <function DVSDatabase.wait_for_entry.<locals>.access_function at 0x7fecbbab4f70>
polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
failure_message = 'Entry not found: key="2.3.4.0/24", table="ROUTE_TABLE"'

    def wait_for_result(
        polling_function: Callable[[], Tuple[bool, Any]],
        polling_config: PollingConfig = PollingConfig(),
        failure_message: str = None,
    ) -> Tuple[bool, Any]:
        """Run `polling_function` periodically using the specified `polling_config`.
    
        Args:
            polling_function: The function being polled. The function cannot take any arguments and
                must return a status which indicates if the function was succesful or not, as well as
                some return value.
            polling_config: The parameters to use to poll the polling function.
            failure_message: The message to print if the call times out. This will only take effect
                if the PollingConfig is set to strict.
    
        Returns:
            If the polling function succeeds, then this method will return True and the output of the
            polling function.
    
            If it does not succeed within the provided timeout, it will return False and whatever the
            output of the polling function was on the final attempt.
        """
        for _ in range(polling_config.iterations()):
            status, result = polling_function()
    
            if status:
                return (True, result)
    
            time.sleep(polling_config.polling_interval)
    
        if polling_config.strict:
            message = failure_message or f"Operation timed out after {polling_config.timeout} seconds with result {result}"
>           assert False, message
E           AssertionError: Entry not found: key="2.3.4.0/24", table="ROUTE_TABLE"

dvslib/dvs_common.py:60: AssertionError