2023-05-28 17:48:36

by Pauli Virtanen

[permalink] [raw]
Subject: [PATCH BlueZ 1/4] iso-tester: Add tests for AC configuration reconnect

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(-)

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,
--
2.40.1



2023-05-28 20:54:54

by bluez.test.bot

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

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

2023-05-30 18:43:33

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ 1/4] iso-tester: Add tests for AC configuration reconnect

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

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!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html