diff options
Diffstat (limited to 'src/libs/mynewt-nimble/apps/blestress/README.md')
-rw-r--r-- | src/libs/mynewt-nimble/apps/blestress/README.md | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/src/libs/mynewt-nimble/apps/blestress/README.md b/src/libs/mynewt-nimble/apps/blestress/README.md new file mode 100644 index 00000000..8524397a --- /dev/null +++ b/src/libs/mynewt-nimble/apps/blestress/README.md @@ -0,0 +1,201 @@ +BLE Stress Tests + +****************************************************************************** + QUICK TIPS: + You need 2 controllers supported by MyNewt. One will become TX device, + the other will become RX device. + + 1. Set role (TX=0, RX=1) for current device in syscfg.yml + BLE_STRESS_TEST_ROLE: 1 + + The RX has LED2 turned on. + + 2. Set (in syscfg.yml) number of times to repeat each tested action + in use case, e.g. do 1000 times connect/disconnect to complete use case. + RX_STRESS_REPEAT: 1000 + + 3. To perform only specific test, go to rx_stress.c, + find definition of rx_stress_main_task_fn(void *arg) and in place of + for-loop just paste function rx_stress_start(i), where i is id of test. + +****************************************************************************** + +No | Use case +----------------------------------------------------------------------------- + 1 | Stress Connect -> Connect Cancel - repeat 1000 + | RX: Nothing + | TX: Connect/Connect cancel + | + 2 | Stress Connect/Disconnect legacy - repeat 1000 + | RX: Advertise legacy + | TX: Connect/Disconnect + | + 3 | Stress Connect/Disconnect ext adv - repeat 1000 + | RX: Advertise Ext + | TX: Connect/Disconnect + | + 4 | Stress connection params update (TX) - (1000) + | RX: Advertise + | TX: Connect/Connect param update + | + 5 | Stress connection params update (RX) - (1000) + | RX: Advertise/Connect param update + | TX: Connect + | + 6 | Stress Scan + | RX: Advertise a known data pattern + | TX: Scan and check received data with pattern + | + 7 | Stress PHY Update (TX) - (1000) + | RX: Advertise + | TX: Connect/Phy update + | + 8 | Stress PHY update (RX) - (1000) + | RX: Advertise/Phy update + | TX: Connect + | + 9 | Stress multi connection + | RX: Advertise Ext + | TX: Establish and maintain as many instances as possible + | +10 | Stress L2CAP send + | RX: Send 64kB of data with L2CAP + | TX: Measure bit rate and max received data MTU + | +11 | Stress Advertise/Connect/Continue Adv/Disconnect + | RX: Advertise Ext/Continue same advertise after connect + | TX: Connect + | +12 | Stress GATT indicating + | RX: Indicate + | TX: Receive indication. Measure average time of indicating. + | +13 | Stress GATT notification + | RX: Notify. Measure average time of notifying. + | TX: Count the number of received notification. + | +14 | Stress GATT Subscribe/Notify/Unsubscribe + | RX: Notify on subscribe + | TX: Measure the average time from sending a subscription request + | to receiving a notification. + | +15 | Stress Connect/Send/Disconnect + | RX: Advertise/Send via ATT/Disconnect + | TX: Receive notification. Measure time of notifying. + +****************************************************************************** + Concept: + The RX device advertises data containing a UUID128 of test use case that + should be performed. The TX device scan for known UUIDs, when it finds, + adapts to the advertised use case and runs a test. + + Stress Task vs Semaphore: + The rx_stress_start_auto function starts main stress test task that runs + all stress tests one by one. The tests are based on event handling, so to + synchronize main task with events, a semaphore is used. On use case start + there is 0 tokens for semaphore. After main task starts one of use cases, + it comes across a semaphore and has to wait. When use case is completed, + 1 token is released, so main task can use it to pass through semaphore. + The tx_stress_start_auto function works analogically. + + + Newt target set example: + rymek@rymek:~/projects/bletiny_proj$ newt target show bletest_tx + targets/bletest_tx + app=@apache-mynewt-nimble/apps/blestress + bsp=@apache-mynewt-core/hw/bsp/nordic_pca10056 + build_profile=debug + syscfg=BLE_STRESS_TEST_ROLE=0 + rymek@rymek:~/projects/bletiny_proj$ newt target show bletest_rx + targets/bletest_rx + app=@apache-mynewt-nimble/apps/blestress + bsp=@apache-mynewt-core/hw/bsp/nordic_pca10056 + build_profile=debug + syscfg=BLE_STRESS_TEST_ROLE=1 + + + Example of expected logs on TX side(LOG_LEVEL > 1): + Start test num 1 + >>>>>>>>>>>>>>>>>>>> Stress test 1 completed + Start scan for test + Start test num 2 + >>>>>>>>>>>>>>>>>>>> Stress test 2 completed + Start scan for test + Start test num 3 + >>>>>>>>>>>>>>>>>>>> Stress test 3 completed + Start scan for test + Start test num 4 + >>>>>>>>>>>>>>>>>>>> Stress test 4 completed + Start scan for test + Start test num 5 + >>>>>>>>>>>>>>>>>>>> Stress test 5 completed + Start scan for test + Start test num 6 + >>>>>>>>>>>>>>>>>>>> Stress test 6 completed + Start scan for test + Start test num 7 + >>>>>>>>>>>>>>>>>>>> Stress test 7 completed + Start scan for test + Start test num 8 + >>>>>>>>>>>>>>>>>>>> Stress test 8 completed + All tests completed + Tests results: + Use case 1 - Stress Connect -> Connect Cancel: + Con attempts = 20 + Con success = 0 + Use case 2 - Stress Connect/Disconnect legacy: + Con attempts = 20 + Con success = 20 + Use case 3 - Stress Connect/Disconnect ext adv: + Con attempts = 20 + Con success = 20 + Use case 4 - Stress connection params update (TX): + Params updates = 20 + Use case 5 - Stress connection params update (RX): + Params updates = 20 + Use case 6 - Stress Scan: + Received first packets = 20 + Received all packets = 20 + Use case 7 - Stress PHY Update (TX): + PHY updates = 20 + Use case 8 - Stress Connect -> Connect Cancel: + PHY updates = 20 + + + Example of expected logs on RX side(LOG_LEVEL > 1): + Start test num 2 + >>>>>>>>>>>>>>>>>>>> Stress test 2 completed + Start test num 3 + >>>>>>>>>>>>>>>>>>>> Stress test 3 completed + Start test num 4 + >>>>>>>>>>>>>>>>>>>> Stress test 4 completed + Start test num 5 + >>>>>>>>>>>>>>>>>>>> Stress test 5 completed + Start test num 6 + Received signal to switch test + Start test num 7 + >>>>>>>>>>>>>>>>>>>> Stress test 7 completed + Start test num 8 + >>>>>>>>>>>>>>>>>>>> Stress test 8 completed + All tests completed + Tests results: + Use case 1 - Stress Connect -> Connect Cancel: + Con attempts = 0 + Con success = 0 + Use case 2 - Stress Connect/Disconnect legacy: + Con attempts = 20 + Con success = 20 + Use case 3 - Stress Connect/Disconnect ext adv: + Con attempts = 20 + Con success = 20 + Use case 4 - Stress connection params update (TX): + Params updates = 20 + Use case 5 - Stress connection params update (RX): + Params updates = 20 + Use case 6 - Stress Scan: + Received first packets = 0 + Received all packets = 0 + Use case 7 - Stress PHY Update (TX): + PHY updates = 20 + Use case 8 - Stress Connect -> Connect Cancel: + PHY updates = 20 |