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

Enhance the logic to check capability of bulk counter poll #1555

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

Conversation

stephenxs
Copy link
Contributor

@stephenxs stephenxs commented Mar 13, 2025

Enhance the logic to check the capability of the bulk counter poll in bulkAddObject

  1. Check bulk capability using m_vendorSai->queryStatsCapability before calling SAI API to check capability
  2. Check single call capability before adding it to m_objectIdsMap
  3. Reduce the log severity to INFO when a counter is not supported to be bulk-polled to avoid too many log messages
  4. Remove redundant code for buffer pool counters

Details:
In bulkAddObject it enables counter polling for a set of objects. A brief flow is the following:

  1. Check the object type's counter capability of single operation (SAI_STATS_MODE_READ_AND_CLEAR or SAI_STATS_MODE_READ) using updateSupportedCounters (which eventually calls query_stats_capability). All counters that do not support the capability will be removed.
  2. Check the object type's counter capability of the corresponding bulk operation (SAI_STATS_MODE_BULK_READ_AND_CLEAR and SAI_STATS_MODE_BULK_READ respectively).
    Add the counters to m_objectIdsMap if they do not support bulk call.
  3. Check the bulk operation capability on the group of objects (since some vendors support bulk operation only on a part of objects). Add the objects to bulk context if all objects support bulk operation. The objects will be polled using bulk operation.
  4. Check the single call capability on each object (since some vendors support counters only on a part of objects). The objects that do not support single call will not be polled at all.

Possible error messages in vendor SAI:
An error message can be observed on some platforms if an unsupported counter-polling SAI API is called.
This could happen if the vendor SAI supports a counter polling operation only on part of objects.
In this case, the function query_stats_capability returns that it supports the operation on the object type. FlexCounter needs to call the counter polling SAI API to check whether the operation is supported on each object. An error message could be seen if vendor SAI prints it.

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

@stephenxs stephenxs force-pushed the check-bulk-counter branch from 57f5aa2 to cd5cd5e Compare March 14, 2025 00:32
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

@stephenxs
Copy link
Contributor Author

/azpw run

@mssonicbld
Copy link
Collaborator

/AzurePipelines run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephenxs stephenxs force-pushed the check-bulk-counter branch from cd5cd5e to 55543e8 Compare March 14, 2025 01:42
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephenxs stephenxs marked this pull request as ready for review March 14, 2025 05:00
@stephenxs
Copy link
Contributor Author

BFD test fails

2025-03-14T03:57:49.5470953Z =================================== FAILURES ===================================
2025-03-14T03:57:49.5471985Z _____________________ TestSoftBfd.test_addRemoveBfdSession _____________________
2025-03-14T03:57:49.5472523Z 
2025-03-14T03:57:49.5473252Z self = <test_soft_bfd.TestSoftBfd object at 0x7f0b2d443d90>
2025-03-14T03:57:49.5474372Z dvs = <conftest.DockerVirtualSwitch object at 0x7f0b2d465af0>
2025-03-14T03:57:49.5475034Z 
2025-03-14T03:57:49.5475388Z     def test_addRemoveBfdSession(self, dvs):
2025-03-14T03:57:49.5475728Z         self.setup_db(dvs)
2025-03-14T03:57:49.5476089Z         bfd_session_key = "default:default:10.0.0.2"
2025-03-14T03:57:49.5476473Z         bfdSessions = self.get_exist_bfd_session()
2025-03-14T03:57:49.5476974Z     
2025-03-14T03:57:49.5477128Z         # Create BFD session
2025-03-14T03:57:49.5477328Z         fieldValues = {"local_addr": "10.0.0.1", "tos": "64", "multiplier": "5", "tx_interval": "300",
2025-03-14T03:57:49.5477544Z                        "rx_interval": "500"}
2025-03-14T03:57:49.5477732Z         self.create_bfd_session(bfd_session_key, fieldValues)
2025-03-14T03:57:49.5478118Z >       self.sdb.wait_for_n_keys(SOFT_BFD_STATE_TABLE, len(bfdSessions) + 1)
2025-03-14T03:57:49.5478246Z 
2025-03-14T03:57:49.5478612Z test_soft_bfd.py:48: 
2025-03-14T03:57:49.5480169Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2025-03-14T03:57:49.5480625Z 
2025-03-14T03:57:49.5481606Z self = <dvslib.dvs_database.DVSDatabase object at 0x7f0b2d478c70>
2025-03-14T03:57:49.5482712Z table_name = 'BFD_SOFTWARE_SESSION_TABLE', num_keys = 1
2025-03-14T03:57:49.5483392Z wait_at_least_n_keys = False
2025-03-14T03:57:49.5484814Z polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
2025-03-14T03:57:49.5485263Z failure_message = None
2025-03-14T03:57:49.5485577Z 
2025-03-14T03:57:49.5485915Z     def wait_for_n_keys(
2025-03-14T03:57:49.5486372Z         self,
2025-03-14T03:57:49.5486702Z         table_name: str,
2025-03-14T03:57:49.5487170Z         num_keys: int,
2025-03-14T03:57:49.5487559Z         wait_at_least_n_keys: bool = False,
2025-03-14T03:57:49.5488097Z         polling_config: PollingConfig = PollingConfig(),
2025-03-14T03:57:49.5488634Z         failure_message: str = None,
2025-03-14T03:57:49.5489001Z     ) -> List[str]:
2025-03-14T03:57:49.5489666Z         """Wait for the specified number of keys to exist in the table.
2025-03-14T03:57:49.5490127Z     
2025-03-14T03:57:49.5490422Z         Args:
2025-03-14T03:57:49.5492479Z             table_name: The name of the table from which to fetch the keys.
2025-03-14T03:57:49.5492927Z             num_keys: The expected number of keys to retrieve from the table.
2025-03-14T03:57:49.5493364Z             polling_config: The parameters to use to poll the db.
2025-03-14T03:57:49.5493816Z             failure_message: The message to print if the call times out. This will only take effect
2025-03-14T03:57:49.5494249Z                 if the PollingConfig is set to strict.
2025-03-14T03:57:49.5494561Z     
2025-03-14T03:57:49.5494828Z         Returns:
2025-03-14T03:57:49.5495329Z             The keys stored in the table. If no keys are found, then an empty List is returned.
2025-03-14T03:57:49.5495692Z         """
2025-03-14T03:57:49.5495929Z     
2025-03-14T03:57:49.5496222Z         def access_function():
2025-03-14T03:57:49.5496556Z             keys = self.get_keys(table_name)
2025-03-14T03:57:49.5496897Z             if wait_at_least_n_keys:
2025-03-14T03:57:49.5497271Z                 return (len(keys) >= num_keys, keys)
2025-03-14T03:57:49.5497590Z             else:
2025-03-14T03:57:49.5497913Z                 return (len(keys) == num_keys, keys)
2025-03-14T03:57:49.5498180Z     
2025-03-14T03:57:49.5498486Z         status, result = wait_for_result(
2025-03-14T03:57:49.5498901Z             access_function, self._disable_strict_polling(polling_config)
2025-03-14T03:57:49.5499251Z         )
2025-03-14T03:57:49.5499499Z     
2025-03-14T03:57:49.5499804Z         if not status:
2025-03-14T03:57:49.5500135Z             message = failure_message or (
2025-03-14T03:57:49.5500532Z                 f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
2025-03-14T03:57:49.5500921Z                 f'({result}), table="{table_name}"'
2025-03-14T03:57:49.5501224Z             )
2025-03-14T03:57:49.5502873Z >           assert not polling_config.strict, message
2025-03-14T03:57:49.5503813Z E           AssertionError: Unexpected number of keys: expected=1, received=0 ([]), table="BFD_SOFTWARE_SESSION_TABLE"
2025-03-14T03:57:49.5504133Z 
2025-03-14T03:57:49.5504518Z dvslib/dvs_database.py:414: AssertionError
2025-03-14T03:57:49.5505732Z __________________ TestSoftBfd.test_addRemoveBfdSession_ipv6 ___________________
2025-03-14T03:57:49.5506193Z 
2025-03-14T03:57:49.5507331Z self = <test_soft_bfd.TestSoftBfd object at 0x7f0b2d3a5250>
2025-03-14T03:57:49.5507792Z dvs = <conftest.DockerVirtualSwitch object at 0x7f0b2d465af0>
2025-03-14T03:57:49.5508016Z 
2025-03-14T03:57:49.5508700Z     def test_addRemoveBfdSession_ipv6(self, dvs):
2025-03-14T03:57:49.5509072Z         self.setup_db(dvs)
2025-03-14T03:57:49.5509529Z         bfd_session_key = "default:default:2000::2"
2025-03-14T03:57:49.5521767Z         bfdSessions = self.get_exist_bfd_session()
2025-03-14T03:57:49.5522239Z     
2025-03-14T03:57:49.5522585Z         # Create BFD session
2025-03-14T03:57:49.5523629Z         fieldValues = {"local_addr": "2000::1", "multihop": "true", "multiplier": "3", "tx_interval": "400",
2025-03-14T03:57:49.5524097Z                        "rx_interval": "200"}
2025-03-14T03:57:49.5524447Z         self.create_bfd_session(bfd_session_key, fieldValues)
2025-03-14T03:57:49.5524952Z >       self.sdb.wait_for_n_keys(SOFT_BFD_STATE_TABLE, len(bfdSessions) + 1)
2025-03-14T03:57:49.5525212Z 
2025-03-14T03:57:49.5525754Z test_soft_bfd.py:72: 
2025-03-14T03:57:49.5526226Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2025-03-14T03:57:49.5526787Z 
2025-03-14T03:57:49.5527496Z self = <dvslib.dvs_database.DVSDatabase object at 0x7f0b2d478c70>
2025-03-14T03:57:49.5528202Z table_name = 'BFD_SOFTWARE_SESSION_TABLE', num_keys = 1
2025-03-14T03:57:49.5528633Z wait_at_least_n_keys = False
2025-03-14T03:57:49.5529255Z polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
2025-03-14T03:57:49.5529686Z failure_message = None
2025-03-14T03:57:49.5529859Z 
2025-03-14T03:57:49.5530180Z     def wait_for_n_keys(
2025-03-14T03:57:49.5530483Z         self,
2025-03-14T03:57:49.5531118Z         table_name: str,
2025-03-14T03:57:49.5531469Z         num_keys: int,
2025-03-14T03:57:49.5531832Z         wait_at_least_n_keys: bool = False,
2025-03-14T03:57:49.5532254Z         polling_config: PollingConfig = PollingConfig(),
2025-03-14T03:57:49.5532668Z         failure_message: str = None,
2025-03-14T03:57:49.5533014Z     ) -> List[str]:
2025-03-14T03:57:49.5533386Z         """Wait for the specified number of keys to exist in the table.
2025-03-14T03:57:49.5533826Z     
2025-03-14T03:57:49.5534093Z         Args:
2025-03-14T03:57:49.5534487Z             table_name: The name of the table from which to fetch the keys.
2025-03-14T03:57:49.5534965Z             num_keys: The expected number of keys to retrieve from the table.
2025-03-14T03:57:49.5535426Z             polling_config: The parameters to use to poll the db.
2025-03-14T03:57:49.5535924Z             failure_message: The message to print if the call times out. This will only take effect
2025-03-14T03:57:49.5537355Z                 if the PollingConfig is set to strict.
2025-03-14T03:57:49.5537785Z     
2025-03-14T03:57:49.5538130Z         Returns:
2025-03-14T03:57:49.5538592Z             The keys stored in the table. If no keys are found, then an empty List is returned.
2025-03-14T03:57:49.5539126Z         """
2025-03-14T03:57:49.5539445Z     
2025-03-14T03:57:49.5540021Z         def access_function():
2025-03-14T03:57:49.5541019Z             keys = self.get_keys(table_name)
2025-03-14T03:57:49.5541403Z             if wait_at_least_n_keys:
2025-03-14T03:57:49.5541967Z                 return (len(keys) >= num_keys, keys)
2025-03-14T03:57:49.5542293Z             else:
2025-03-14T03:57:49.5542647Z                 return (len(keys) == num_keys, keys)
2025-03-14T03:57:49.5542979Z     
2025-03-14T03:57:49.5543313Z         status, result = wait_for_result(
2025-03-14T03:57:49.5543756Z             access_function, self._disable_strict_polling(polling_config)
2025-03-14T03:57:49.5544466Z         )
2025-03-14T03:57:49.5544746Z     
2025-03-14T03:57:49.5545049Z         if not status:
2025-03-14T03:57:49.5545381Z             message = failure_message or (
2025-03-14T03:57:49.5545820Z                 f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
2025-03-14T03:57:49.5546439Z                 f'({result}), table="{table_name}"'
2025-03-14T03:57:49.5546768Z             )
2025-03-14T03:57:49.5547127Z >           assert not polling_config.strict, message
2025-03-14T03:57:49.5547703Z E           AssertionError: Unexpected number of keys: expected=1, received=0 ([]), table="BFD_SOFTWARE_SESSION_TABLE"
2025-03-14T03:57:49.5547975Z 
2025-03-14T03:57:49.5548341Z dvslib/dvs_database.py:414: AssertionError
2025-03-14T03:57:49.5548835Z ________________ TestSoftBfd.test_addRemoveBfdSession_interface ________________
2025-03-14T03:57:49.5549071Z 
2025-03-14T03:57:49.5549442Z self = <test_soft_bfd.TestSoftBfd object at 0x7f0b2d314310>
2025-03-14T03:57:49.5549916Z dvs = <conftest.DockerVirtualSwitch object at 0x7f0b2d465af0>
2025-03-14T03:57:49.5550113Z 
2025-03-14T03:57:49.5550477Z     def test_addRemoveBfdSession_interface(self, dvs):
2025-03-14T03:57:49.5550883Z         self.setup_db(dvs)
2025-03-14T03:57:49.5551302Z         bfd_session_key = "default:Ethernet0:10.0.0.2"
2025-03-14T03:57:49.5551759Z         bfdSessions = self.get_exist_bfd_session()
2025-03-14T03:57:49.5552263Z     
2025-03-14T03:57:49.5552564Z         # Create BFD session
2025-03-14T03:57:49.5552991Z         fieldValues = {"local_addr": "10.0.0.1", "dst_mac": "00:02:03:04:05:06", "type": "async_passive"}
2025-03-14T03:57:49.5553537Z         self.create_bfd_session("default:Ethernet0:10.0.0.2", fieldValues)
2025-03-14T03:57:49.5554048Z >       self.sdb.wait_for_n_keys(SOFT_BFD_STATE_TABLE, len(bfdSessions) + 1)
2025-03-14T03:57:49.5554282Z 
2025-03-14T03:57:49.5554626Z test_soft_bfd.py:95: 
2025-03-14T03:57:49.5555000Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2025-03-14T03:57:49.5555199Z 
2025-03-14T03:57:49.5555570Z self = <dvslib.dvs_database.DVSDatabase object at 0x7f0b2d478c70>
2025-03-14T03:57:49.5556032Z table_name = 'BFD_SOFTWARE_SESSION_TABLE', num_keys = 1
2025-03-14T03:57:49.5556411Z wait_at_least_n_keys = False
2025-03-14T03:57:49.5556859Z polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
2025-03-14T03:57:49.5558364Z failure_message = None
2025-03-14T03:57:49.5558629Z 
2025-03-14T03:57:49.5559009Z     def wait_for_n_keys(
2025-03-14T03:57:49.5559380Z         self,
2025-03-14T03:57:49.5559745Z         table_name: str,
2025-03-14T03:57:49.5560181Z         num_keys: int,
2025-03-14T03:57:49.5560594Z         wait_at_least_n_keys: bool = False,
2025-03-14T03:57:49.5561211Z         polling_config: PollingConfig = PollingConfig(),
2025-03-14T03:57:49.5561640Z         failure_message: str = None,
2025-03-14T03:57:49.5562006Z     ) -> List[str]:
2025-03-14T03:57:49.5562557Z         """Wait for the specified number of keys to exist in the table.
2025-03-14T03:57:49.5563286Z     
2025-03-14T03:57:49.5563566Z         Args:
2025-03-14T03:57:49.5563945Z             table_name: The name of the table from which to fetch the keys.
2025-03-14T03:57:49.5564410Z             num_keys: The expected number of keys to retrieve from the table.
2025-03-14T03:57:49.5564864Z             polling_config: The parameters to use to poll the db.
2025-03-14T03:57:49.5565367Z             failure_message: The message to print if the call times out. This will only take effect
2025-03-14T03:57:49.5566013Z                 if the PollingConfig is set to strict.
2025-03-14T03:57:49.5566348Z     
2025-03-14T03:57:49.5566624Z         Returns:
2025-03-14T03:57:49.5567044Z             The keys stored in the table. If no keys are found, then an empty List is returned.
2025-03-14T03:57:49.5567444Z         """
2025-03-14T03:57:49.5567721Z     
2025-03-14T03:57:49.5568042Z         def access_function():
2025-03-14T03:57:49.5568415Z             keys = self.get_keys(table_name)
2025-03-14T03:57:49.5569226Z             if wait_at_least_n_keys:
2025-03-14T03:57:49.5569582Z                 return (len(keys) >= num_keys, keys)
2025-03-14T03:57:49.5569920Z             else:
2025-03-14T03:57:49.5570487Z                 return (len(keys) == num_keys, keys)
2025-03-14T03:57:49.5571465Z     
2025-03-14T03:57:49.5571935Z         status, result = wait_for_result(
2025-03-14T03:57:49.5572555Z             access_function, self._disable_strict_polling(polling_config)
2025-03-14T03:57:49.5572969Z         )
2025-03-14T03:57:49.5573263Z     
2025-03-14T03:57:49.5573552Z         if not status:
2025-03-14T03:57:49.5573889Z             message = failure_message or (
2025-03-14T03:57:49.5574117Z                 f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
2025-03-14T03:57:49.5574337Z                 f'({result}), table="{table_name}"'
2025-03-14T03:57:49.5574502Z             )
2025-03-14T03:57:49.5574676Z >           assert not polling_config.strict, message
2025-03-14T03:57:49.5575140Z E           AssertionError: Unexpected number of keys: expected=1, received=0 ([]), table="BFD_SOFTWARE_SESSION_TABLE"
2025-03-14T03:57:49.5575273Z 
2025-03-14T03:57:49.5575627Z dvslib/dvs_database.py:414: AssertionError
2025-03-14T03:57:49.5575867Z _____________________ TestSoftBfd.test_multipleBfdSessions _____________________
2025-03-14T03:57:49.5576140Z 
2025-03-14T03:57:49.5576318Z self = <test_soft_bfd.TestSoftBfd object at 0x7f0b2d4370d0>
2025-03-14T03:57:49.5576735Z dvs = <conftest.DockerVirtualSwitch object at 0x7f0b2d443190>
2025-03-14T03:57:49.5576826Z 
2025-03-14T03:57:49.5576997Z     def test_multipleBfdSessions(self, dvs):
2025-03-14T03:57:49.5577251Z         self.setup_db(dvs)
2025-03-14T03:57:49.5577810Z         bfdSessions = self.get_exist_bfd_session()
2025-03-14T03:57:49.5578007Z     
2025-03-14T03:57:49.5578171Z         # Create BFD session 1
2025-03-14T03:57:49.5578375Z         key1 = "default:default:10.0.0.2"
2025-03-14T03:57:49.5578572Z         fieldValues = {"local_addr": "10.0.0.1"}
2025-03-14T03:57:49.5578988Z         self.create_bfd_session(key1, fieldValues)
2025-03-14T03:57:49.5579224Z >       self.sdb.wait_for_n_keys(SOFT_BFD_STATE_TABLE, len(bfdSessions) + 1)
2025-03-14T03:57:49.5579341Z 
2025-03-14T03:57:49.5579489Z test_soft_bfd.py:118: 
2025-03-14T03:57:49.5579705Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2025-03-14T03:57:49.5579808Z 
2025-03-14T03:57:49.5580798Z self = <dvslib.dvs_database.DVSDatabase object at 0x7f0b2d35ee20>
2025-03-14T03:57:49.5581779Z table_name = 'BFD_SOFTWARE_SESSION_TABLE', num_keys = 1
2025-03-14T03:57:49.5582236Z wait_at_least_n_keys = False
2025-03-14T03:57:49.5582818Z polling_config = PollingConfig(polling_interval=0.01, timeout=20.0, strict=True)
2025-03-14T03:57:49.5583028Z failure_message = None
2025-03-14T03:57:49.5583126Z 
2025-03-14T03:57:49.5583444Z     def wait_for_n_keys(
2025-03-14T03:57:49.5583599Z         self,
2025-03-14T03:57:49.5583905Z         table_name: str,
2025-03-14T03:57:49.5584089Z         num_keys: int,
2025-03-14T03:57:49.5584439Z         wait_at_least_n_keys: bool = False,
2025-03-14T03:57:49.5584832Z         polling_config: PollingConfig = PollingConfig(),
2025-03-14T03:57:49.5585048Z         failure_message: str = None,
2025-03-14T03:57:49.5585233Z     ) -> List[str]:
2025-03-14T03:57:49.5585441Z         """Wait for the specified number of keys to exist in the table.
2025-03-14T03:57:49.5585636Z     
2025-03-14T03:57:49.5586099Z         Args:
2025-03-14T03:57:49.5586612Z             table_name: The name of the table from which to fetch the keys.
2025-03-14T03:57:49.5587185Z             num_keys: The expected number of keys to retrieve from the table.
2025-03-14T03:57:49.5587729Z             polling_config: The parameters to use to poll the db.
2025-03-14T03:57:49.5588278Z             failure_message: The message to print if the call times out. This will only take effect
2025-03-14T03:57:49.5588797Z                 if the PollingConfig is set to strict.
2025-03-14T03:57:49.5589517Z     
2025-03-14T03:57:49.5589829Z         Returns:
2025-03-14T03:57:49.5590319Z             The keys stored in the table. If no keys are found, then an empty List is returned.
2025-03-14T03:57:49.5590735Z         """
2025-03-14T03:57:49.5591043Z     
2025-03-14T03:57:49.5591893Z         def access_function():
2025-03-14T03:57:49.5592451Z             keys = self.get_keys(table_name)
2025-03-14T03:57:49.5593017Z             if wait_at_least_n_keys:
2025-03-14T03:57:49.5593427Z                 return (len(keys) >= num_keys, keys)
2025-03-14T03:57:49.5593779Z             else:
2025-03-14T03:57:49.5594338Z                 return (len(keys) == num_keys, keys)
2025-03-14T03:57:49.5594688Z     
2025-03-14T03:57:49.5594965Z         status, result = wait_for_result(
2025-03-14T03:57:49.5595330Z             access_function, self._disable_strict_polling(polling_config)
2025-03-14T03:57:49.5595785Z         )
2025-03-14T03:57:49.5596097Z     
2025-03-14T03:57:49.5596432Z         if not status:
2025-03-14T03:57:49.5596835Z             message = failure_message or (
2025-03-14T03:57:49.5597270Z                 f"Unexpected number of keys: expected={num_keys}, received={len(result)} "
2025-03-14T03:57:49.5597501Z                 f'({result}), table="{table_name}"'
2025-03-14T03:57:49.5597679Z             )
2025-03-14T03:57:49.5597859Z >           assert not polling_config.strict, message
2025-03-14T03:57:49.5598121Z E           AssertionError: Unexpected number of keys: expected=1, received=0 ([]), table="BFD_SOFTWARE_SESSION_TABLE"
2025-03-14T03:57:49.5598254Z 
2025-03-14T03:57:49.5598450Z dvslib/dvs_database.py:414: AssertionError
2025-03-14T03:57:49.5598692Z -- generated xml file: /agent/_work/1/s/sonic-swss/tests/test_soft_bfd_tr.xml --

Signed-off-by: Stephen Sun <[email protected]>
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephenxs stephenxs marked this pull request as draft March 14, 2025 15:12
Signed-off-by: Stephen Sun <[email protected]>
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Signed-off-by: Stephen Sun <[email protected]>
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephenxs stephenxs marked this pull request as ready for review March 15, 2025 02:45
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephenxs stephenxs force-pushed the check-bulk-counter branch from 696e427 to 737b802 Compare March 15, 2025 03:36
@mssonicbld
Copy link
Collaborator

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants