From 66a6331501093a882d5278fd8ce1f6faf280792a Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 20 Feb 2014 16:17:48 +0200 Subject: [PATCH] tests: Increase P2P SD test coverage Verify cases both with multiple peers (one of which not advertising any services) and with multiple SD queries. Signed-off-by: Jouni Malinen --- tests/hwsim/test_p2p_service.py | 58 +++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/tests/hwsim/test_p2p_service.py b/tests/hwsim/test_p2p_service.py index 6c936f47b..43ed5b2db 100644 --- a/tests/hwsim/test_p2p_service.py +++ b/tests/hwsim/test_p2p_service.py @@ -29,7 +29,7 @@ def add_extra_services(dev): for i in range(0, 100): dev.request("P2P_SERVICE_ADD upnp 10 uuid:" + str(uuid.uuid4()) + "::upnp:rootdevice") -def run_sd(dev, dst, query, exp_query=None, fragment=False): +def run_sd(dev, dst, query, exp_query=None, fragment=False, query2=None): addr0 = dev[0].p2p_dev_addr() addr1 = dev[1].p2p_dev_addr() add_bonjour_services(dev[0]) @@ -40,6 +40,8 @@ def run_sd(dev, dst, query, exp_query=None, fragment=False): dev[1].request("P2P_FLUSH") dev[1].request("P2P_SERV_DISC_REQ " + dst + " " + query) + if query2: + dev[1].request("P2P_SERV_DISC_REQ " + dst + " " + query2) if not dev[1].discover_peer(addr0, social=True, force_find=True): raise Exception("Peer " + addr0 + " not found") @@ -50,14 +52,27 @@ def run_sd(dev, dst, query, exp_query=None, fragment=False): raise Exception("Unexpected service discovery request source") if exp_query is None: exp_query = query - if exp_query not in ev: + if exp_query not in ev and (query2 is None or query2 not in ev): raise Exception("Unexpected service discovery request contents") - ev = dev[1].wait_event(["P2P-SERV-DISC-RESP"], timeout=10) - if ev is None: - raise Exception("Service discovery timed out") - if addr0 not in ev: - raise Exception("Unexpected service discovery response source") + if query2: + ev_list = [] + for i in range(0, 4): + ev = dev[1].wait_event(["P2P-SERV-DISC-RESP"], timeout=10) + if ev is None: + raise Exception("Service discovery timed out") + if addr0 in ev: + ev_list.append(ev) + if len(ev_list) == 2: + break + return ev_list + + for i in range(0, 2): + ev = dev[1].wait_event(["P2P-SERV-DISC-RESP"], timeout=10) + if ev is None: + raise Exception("Service discovery timed out") + if addr0 in ev: + break return ev def test_p2p_service_discovery(dev): @@ -69,6 +84,35 @@ def test_p2p_service_discovery(dev): if "496e7465726e6574" not in ev: raise Exception("Unexpected service discovery response contents (UPnP)") +def test_p2p_service_discovery2(dev): + """P2P service discovery with one peer having no services""" + dev[2].p2p_listen() + for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]: + ev = run_sd(dev, dst, "02000001") + if "0b5f6166706f766572746370c00c000c01" not in ev: + raise Exception("Unexpected service discovery response contents (Bonjour)") + if "496e7465726e6574" not in ev: + raise Exception("Unexpected service discovery response contents (UPnP)") + +def test_p2p_service_discovery_multiple_queries(dev): + """P2P service discovery with multiple queries""" + for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]: + ev = run_sd(dev, dst, "02000201", query2="02000101") + if "0b5f6166706f766572746370c00c000c01" not in ev[0] + ev[1]: + raise Exception("Unexpected service discovery response contents (Bonjour)") + if "496e7465726e6574" not in ev[0] + ev[1]: + raise Exception("Unexpected service discovery response contents (UPnP)") + +def test_p2p_service_discovery_multiple_queries2(dev): + """P2P service discovery with multiple queries with one peer having no services""" + dev[2].p2p_listen() + for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]: + ev = run_sd(dev, dst, "02000201", query2="02000101") + if "0b5f6166706f766572746370c00c000c01" not in ev[0] + ev[1]: + raise Exception("Unexpected service discovery response contents (Bonjour)") + if "496e7465726e6574" not in ev[0] + ev[1]: + raise Exception("Unexpected service discovery response contents (UPnP)") + def test_p2p_service_discovery_fragmentation(dev): """P2P service discovery with fragmentation""" for dst in [ "00:00:00:00:00:00", dev[0].p2p_dev_addr() ]: