diff mbox series

[BlueZ,1/4] iso-tester: Add tests for AC configuration reconnect

Message ID 502997002ac9d4a76593aa4ba8237b7fb803c701.1685283364.git.pav@iki.fi (mailing list archive)
State Accepted
Commit 000c2012f38afffd476b43fbf0695886e7381eed
Headers show
Series [BlueZ,1/4] iso-tester: Add tests for AC configuration reconnect | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/CheckPatch success CheckPatch PASS
tedd_an/GitLint fail WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search 15: B2 Line has trailing whitespace: " " 19: B2 Line has trailing whitespace: " "
tedd_an/BuildEll success Build ELL PASS
tedd_an/BluezMake success Bluez Make PASS
tedd_an/MakeCheck success Bluez Make Check PASS
tedd_an/MakeDistcheck success Make Distcheck PASS
tedd_an/CheckValgrind success Check Valgrind PASS
tedd_an/CheckSmatch warning CheckSparse WARNING emulator/btdev.c:417:29: warning: Variable length array is used.emulator/btdev.c:417:29: warning: Variable length array is used.
tedd_an/bluezmakeextell success Make External ELL PASS
tedd_an/IncrementalBuild success Incremental Build PASS
tedd_an/ScanBuild warning ScanBuild: emulator/btdev.c:1080:10: warning: Although the value stored to 'conn' is used in the enclosing expression, the value is never actually read from 'conn' while ((conn = queue_find(dev->conns, match_handle, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emulator/btdev.c:1392:13: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from variable 'conn') send_event(conn->dev, BT_HCI_EVT_AUTH_COMPLETE, &ev, sizeof(ev)); ^~~~~~~~~ 2 warnings generated.

Commit Message

Pauli Virtanen May 28, 2023, 5:39 p.m. UTC
Add test for reconnecting a CIG with two CIS, either both with same peer
or with different peers.

ISO Reconnect AC 6(i) - Success
ISO Reconnect AC 6(ii) - Success
---

Notes:
    The intent here was to trigger the kernel to send Remove CIG and Set CIG
    Parameters in the wrong order, but it doesn't hit the right timing in
    the emulator. It occurs on real hardware when BlueZ recreates multiple
    CIS at the same time.
    
    This can occur because Remove CIG is sent via hci_sync queue and
    queueing its request may be delayed until hci_cmd_sync_work runs,
    whereas Set CIG Parameters request is queued directly via hci_send_cmd.
    
    However, these tests were useful to have, as they hit Create CIS timing
    issues if Set CIG Parameters is moved to hci_sync.

 tools/iso-tester.c | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

Comments

bluez.test.bot@gmail.com May 28, 2023, 8:07 p.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=751682

---Test result---

Test Summary:
CheckPatch                    PASS      1.63 seconds
GitLint                       FAIL      1.35 seconds
BuildEll                      PASS      33.10 seconds
BluezMake                     PASS      1035.93 seconds
MakeCheck                     PASS      13.28 seconds
MakeDistcheck                 PASS      193.40 seconds
CheckValgrind                 PASS      305.90 seconds
CheckSmatch                   WARNING   407.90 seconds
bluezmakeextell               PASS      124.24 seconds
IncrementalBuild              PASS      3302.71 seconds
ScanBuild                     WARNING   1262.65 seconds

Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[BlueZ,1/4] iso-tester: Add tests for AC configuration reconnect

WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search
15: B2 Line has trailing whitespace: "    "
19: B2 Line has trailing whitespace: "    "
##############################
Test: CheckSmatch - WARNING
Desc: Run smatch tool with source
Output:
emulator/btdev.c:417:29: warning: Variable length array is used.emulator/btdev.c:417:29: warning: Variable length array is used.
##############################
Test: ScanBuild - WARNING
Desc: Run Scan Build
Output:
emulator/btdev.c:1080:10: warning: Although the value stored to 'conn' is used in the enclosing expression, the value is never actually read from 'conn'
        while ((conn = queue_find(dev->conns, match_handle,
                ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emulator/btdev.c:1392:13: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from variable 'conn')
        send_event(conn->dev, BT_HCI_EVT_AUTH_COMPLETE, &ev, sizeof(ev));
                   ^~~~~~~~~
2 warnings generated.



---
Regards,
Linux Bluetooth
patchwork-bot+bluetooth@kernel.org May 30, 2023, 6:40 p.m. UTC | #2
Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Sun, 28 May 2023 17:39:13 +0000 you wrote:
> Add test for reconnecting a CIG with two CIS, either both with same peer
> or with different peers.
> 
> ISO Reconnect AC 6(i) - Success
> ISO Reconnect AC 6(ii) - Success
> ---
> 
> [...]

Here is the summary with links:
  - [BlueZ,1/4] iso-tester: Add tests for AC configuration reconnect
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=000c2012f38a
  - [BlueZ,2/4] btdev: fix inactive CIG configurable status
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=a8b927e34733
  - [BlueZ,3/4] btdev: check LE Create CIS error conditions
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=d214fe5f7522
  - [BlueZ,4/4] test-runner: enable no_hash_pointers=1
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=15eb57049b19

You are awesome, thank you!
diff mbox series

Patch

diff --git a/tools/iso-tester.c b/tools/iso-tester.c
index 63c37bd52..776d87fc1 100644
--- a/tools/iso-tester.c
+++ b/tools/iso-tester.c
@@ -839,6 +839,15 @@  static const struct iso_client_data connect_ac_6i = {
 	.defer = true,
 };
 
+static const struct iso_client_data reconnect_ac_6i = {
+	.qos = AC_6i_1,
+	.qos_2 = AC_6i_2,
+	.expect_err = 0,
+	.mcis = true,
+	.defer = true,
+	.disconnect = true,
+};
+
 static const struct iso_client_data connect_ac_6ii = {
 	.qos = AC_6ii_1,
 	.qos_2 = AC_6ii_2,
@@ -847,6 +856,15 @@  static const struct iso_client_data connect_ac_6ii = {
 	.defer = true,
 };
 
+static const struct iso_client_data reconnect_ac_6ii = {
+	.qos = AC_6ii_1,
+	.qos_2 = AC_6ii_2,
+	.expect_err = 0,
+	.mcis = true,
+	.defer = true,
+	.disconnect = true,
+};
+
 static const struct iso_client_data connect_ac_7i = {
 	.qos = AC_7i_1,
 	.qos_2 = AC_7i_2,
@@ -1626,7 +1644,7 @@  static void iso_send(struct test_data *data, GIOChannel *io)
 		iso_recv(data, io);
 }
 
-static void setup_connect(struct test_data *data, uint8_t num, GIOFunc func);
+static void test_connect(const void *test_data);
 static gboolean iso_connect_cb(GIOChannel *io, GIOCondition cond,
 							gpointer user_data);
 
@@ -1642,7 +1660,7 @@  static gboolean iso_disconnected(GIOChannel *io, GIOCondition cond,
 
 		if (data->reconnect) {
 			data->reconnect = false;
-			setup_connect(data, 0, iso_connect_cb);
+			test_connect(data->test_data);
 			return FALSE;
 		}
 
@@ -1885,17 +1903,12 @@  static void test_connect(const void *test_data)
 	setup_connect_many(data, n, num, func);
 }
 
-static void setup_reconnect(struct test_data *data, uint8_t num, GIOFunc func)
-{
-	data->reconnect = true;
-	setup_connect(data, num, func);
-}
-
 static void test_reconnect(const void *test_data)
 {
 	struct test_data *data = tester_get_data();
 
-	setup_reconnect(data, 0, iso_connect_cb);
+	data->reconnect = true;
+	test_connect(test_data);
 }
 
 static void test_defer(const void *test_data)
@@ -2410,6 +2423,14 @@  int main(int argc, char *argv[])
 							setup_powered,
 							test_connect2_seq);
 
+	test_iso2("ISO Reconnect AC 6(i) - Success", &reconnect_ac_6i,
+							setup_powered,
+							test_reconnect);
+
+	test_iso2("ISO Reconnect AC 6(ii) - Success", &reconnect_ac_6ii,
+							setup_powered,
+							test_reconnect);
+
 	test_iso("ISO Broadcaster - Success", &bcast_16_2_1_send, setup_powered,
 							test_bcast);
 	test_iso("ISO Broadcaster Encrypted - Success", &bcast_enc_16_2_1_send,