mirror of
https://github.com/espressif/openthread.git
synced 2026-10-29 18:54:06 +00:00
[test] fix potential backbone name conflict when running cert suite (#10596)
### Background https://github.com/openthread/openthread/pull/10550 introduced a new way to support multiple backbone nework in otbr docker test. Though it works good while running a single test, a bug exists when running cert-suite, which runs a batch of tests in parallel. cert-suite allocates the name of the backbone interfaces dynamically by setting env PORT_OFFSET for each test, so there is potentially conflict exists if we hard code the `backbone_network` name in TOPOLOGY. This PR is targeting to fix this potential naming conflict. ### Fix We fix it by assigning a number for `backbone_network_id` in each BR definition in TOPOLOGY, instead of setting a fixed `backbone network` name. The final backbone network name is decided by both `PORT_OFFSET` env and the number of `backbone_network` (in `backbone{PORT_OFFSET}.{backbone_network}` format) For example, if `PORT_OFFSET` is 0 and `backbone_network_id` is 1, then backbone network name will be `backbone0.1`. For the tests that only use one backbone network and the `backbone_network_id` is not given, the backbone network name is by default `backbone{PORT_OFFSET}.0`. ### New test case format ``` class NewTestCase(thread_cert.TestCase): ... BR = 1 ... TOPOLOGY = { BR: { ... 'is_otbr': True, 'backbone_network_id': <backbone-id>, ... } ... } ... ``` `<backbone-id>` is any integer from 0, for each BR inside a single test, if `<backbone-id>` is different, the BR use different backbone interfaces; the same `<backbone-id>` inside a single test case means the same backbone network interface. `'backbone_network_id': <backbone-id>` is optional for single backbone test cases, when it's not given while defining a otbr node, the backbone is default as `backbone{PORT_OFFSET}.0`. For developers, if you are defining a new test which has multiple backbone interfaces, please ensure `backbone_network_id` is explicitly defined in each BR, otherwize an error is reported.
This commit is contained in:
@@ -64,11 +64,11 @@ DOMAIN_PREFIX_REGEX_PATTERN = '^fd00:7d03:7d03:7d03:'
|
||||
DOMAIN_PREFIX_ALTER = 'fd00:7d04:7d04:7d04::/64'
|
||||
|
||||
PORT_OFFSET = int(os.getenv('PORT_OFFSET', '0'))
|
||||
BACKBONE_IPV6_ADDR_START_BASE = 0x9100
|
||||
BACKBONE_IPV6_ADDR_START = BACKBONE_IPV6_ADDR_START_BASE + PORT_OFFSET
|
||||
BACKBONE_PREFIX = f'{BACKBONE_IPV6_ADDR_START:04x}::/64'
|
||||
BACKBONE_PREFIX_REGEX_PATTERN = f'^{BACKBONE_IPV6_ADDR_START:04x}:'
|
||||
BACKBONE_IPV6_ADDR_START = f'{0x9100 + PORT_OFFSET:04x}'
|
||||
BACKBONE_PREFIX = f'{BACKBONE_IPV6_ADDR_START}::/64'
|
||||
BACKBONE_PREFIX_REGEX_PATTERN = f'^{BACKBONE_IPV6_ADDR_START}:'
|
||||
BACKBONE_DOCKER_NETWORK_NAME = f'backbone{PORT_OFFSET}'
|
||||
BACKBONE_DOCKER_NETWORK_DEFAULT_ID = 0
|
||||
BACKBONE_IFNAME = 'eth0'
|
||||
THREAD_IFNAME = 'wpan0'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user