[CERT-TEST-FAILURE] TC-CNET-4.12 fails at Step 8 — subscription cache never updates after ExpireSessions(), causing false failure

Author: Sumith-grlCreated Sep 8, 2026Updated Sep 18, 2026
Labelsbugcert blockerneeds triage

Test Case

TC-CNET-4.12

Describe the bug

The test case TC_CNET_4_12 fails at Step 8 with Subscription cache mismatch for Networks, even though the DUT has correctly connected to the second Thread network.

  • Step 6 reads Networks → connected=False . This value gets cached by the wildcard subscription.
  • Step 7 sends ConnectNetwork and calls ExpireSessions(), which kills the session backing that subscription — but the subscription is never re-established.
  • Step 8 opens a fresh session and does a live read → DUT correctly returns connected=True.
  • The test then cross-checks this fresh read against the subscription cache, which is still frozen on Step 6 False value. Mismatch → fails after 3 retries (3s).

Steps to reproduce the behavior:

1 . Manually Create a OTBR network-1 with the following commands:

  • sudo docker network create --ipv6 --subnet fd11:db8:1::/64 -o com.docker.network.bridge.name=otbr0 otbr
  • sudo sysctl net.ipv6.conf.otbr0.accept_ra_rt_info_max_plen=128
  • sudo sysctl net.ipv6.conf.otbr0.accept_ra=2
  • sudo docker run -it --rm --privileged --network otbr -p 8080:80 --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv6.conf.all.forwarding=1" --name otbr -e NAT64=0 --volume /dev/ttyACM0:/dev/ttyACM0 nrfconnect/otbr:9185bda --radio-url spinel+hdlc+uart:///dev/ttyACM0
  • To get the hex values: docker exec -ti otbr ot-ctl dataset active -x

2 . Manually Create a OTBR network-2 with the following commands:

  • sudo docker network create --ipv6 --subnet fd11:db9:1::/64 -o com.docker.network.bridge.name=otbr20 otbr2
  • sudo sysctl net.ipv6.conf.otbr20.accept_ra_rt_info_max_plen=128
  • sudo sysctl net.ipv6.conf.otbr20.accept_ra=2
  • sudo docker run -it --rm --privileged --network otbr2 -p 8081:80 --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv6.conf.all.forwarding=1" --name otbr_2 -e NAT64=0 --volume /dev/ttyACM1:/dev/ttyACM1 nrfconnect/otbr:9185bda --radio-url spinel+hdlc+uart:///dev/ttyACM1
  • To get the hex values: docker exec -ti otbr_2 ot-ctl dataset active -x

3 . Python scripts are available in the following path, Please navigate to this path to run the script:

  • cd /Master/connectedhomeip/scripts/sdk

3 . Command to execute the TC in Master ToT:

  • python3 TC_CNET_4_12.py --commissioning-method ble-thread -d <discriminator> -p 20202021 --thread-dataset-hex <thread-data-set_1> --string-arg PIXIT.CNET.THREAD_2ND_OPERATIONALDATASET:<thread-data-set_2> --endpoint 0 Expected behavior The test case should be run completely and PASS without any issues.

GitHub hash of the SDK that was being used

e054bb8ac69b87d8cd11d720f6ade008e0b928c9

Platform

raspi

Log files

Controller Log for reference:

DUT log for reference:

Source: project-chip/connectedhomeip