• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.cts.verifier.p2p.testcase;
17 
18 import android.content.Context;
19 import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest;
20 import android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest;
21 
22 import com.android.cts.verifier.R;
23 
24 /**
25  * Service discovery requester test case to search all UPnP services on channel1
26  * and search all Bonjour services on channel2.
27  */
28 public class ServReqMultiClientTestCase01 extends ServReqTestCase {
29 
ServReqMultiClientTestCase01(Context context)30     public ServReqMultiClientTestCase01(Context context) {
31         super(context);
32     }
33 
34     @Override
executeTest()35     protected boolean executeTest() throws InterruptedException {
36 
37         notifyTestMsg(R.string.p2p_checking_serv_capab);
38 
39         ActionListenerTest actionListener = new ActionListenerTest();
40 
41         /*
42          * create upnp and bonjour search requests.
43          */
44         WifiP2pUpnpServiceRequest upnpReq = WifiP2pUpnpServiceRequest.newInstance();
45         WifiP2pDnsSdServiceRequest bonjourReq =
46                 WifiP2pDnsSdServiceRequest.newInstance();
47 
48         /*
49          * add UPnP request to channel1.
50          */
51         mP2pMgr.addServiceRequest(mChannel, upnpReq, actionListener);
52         if (!actionListener.check(ActionListenerTest.SUCCESS, TIMEOUT)) {
53             mReason = mContext.getString(R.string.p2p_add_service_request_error);
54             return false;
55         }
56 
57         /*
58          * add Bonjour request to channel2.
59          */
60         mP2pMgr.addServiceRequest(mSubChannel, bonjourReq, actionListener);
61         if (!actionListener.check(ActionListenerTest.SUCCESS, TIMEOUT)) {
62             mReason = mContext.getString(R.string.p2p_add_service_request_error);
63             return false;
64         }
65 
66         /*
67          * Initialize listener test objects.
68          */
69         UPnPServiceResponseListenerTest upnpCh1Listener =
70                 new UPnPServiceResponseListenerTest(mTargetAddress);
71         DnsSdResponseListenerTest dnsCh1Listener =
72                 new DnsSdResponseListenerTest(mTargetAddress);
73         DnsSdTxtRecordListenerTest txtCh1Listener =
74                 new DnsSdTxtRecordListenerTest(mTargetAddress);
75         UPnPServiceResponseListenerTest upnpCh2Listener =
76                 new UPnPServiceResponseListenerTest(mTargetAddress);
77         DnsSdResponseListenerTest dnsCh2Listener =
78                 new DnsSdResponseListenerTest(mTargetAddress);
79         DnsSdTxtRecordListenerTest txtCh2Listener =
80                 new DnsSdTxtRecordListenerTest(mTargetAddress);
81 
82         /*
83          * set service response listener callback.
84          */
85         mP2pMgr.setUpnpServiceResponseListener(mChannel, upnpCh1Listener);
86         mP2pMgr.setDnsSdResponseListeners(mChannel, dnsCh1Listener, txtCh1Listener);
87         mP2pMgr.setUpnpServiceResponseListener(mSubChannel, upnpCh2Listener);
88         mP2pMgr.setDnsSdResponseListeners(mSubChannel, dnsCh2Listener, txtCh2Listener);
89 
90         /*
91          * discover services
92          */
93         mP2pMgr.discoverServices(mChannel, actionListener);
94         if (!actionListener.check(ActionListenerTest.SUCCESS, TIMEOUT)) {
95             mReason = mContext.getString(R.string.p2p_discover_services_error);
96             return false;
97         }
98 
99         /*
100          * channel1 receive only UPnP service.
101          */
102         Timeout t = new Timeout(TIMEOUT);
103         if (!dnsCh1Listener.check(DnsSdResponseListenerTest.NO_DNS_PTR,
104                 t.getRemainTime())) {
105             mReason = getListenerError(dnsCh1Listener);
106             return false;
107         }
108         if (!txtCh1Listener.check(DnsSdTxtRecordListenerTest.NO_DNS_TXT,
109                 t.getRemainTime())) {
110             mReason = getListenerError(txtCh1Listener);
111             return false;
112         }
113         if (!upnpCh1Listener.check(
114                 UPnPServiceResponseListenerTest.ALL_UPNP_SERVICES,
115                 t.getRemainTime())) {
116             mReason = getListenerError(upnpCh1Listener);
117             return false;
118         }
119 
120         /*
121          * channel2 receive only Bonjour service.
122          */
123         if (!dnsCh2Listener.check(DnsSdResponseListenerTest.ALL_DNS_PTR,
124                 t.getRemainTime())) {
125             mReason = getListenerError(dnsCh2Listener);
126             return false;
127         }
128         if (!txtCh2Listener.check(DnsSdTxtRecordListenerTest.ALL_DNS_TXT,
129                 t.getRemainTime())) {
130             mReason = getListenerError(txtCh2Listener);
131             return false;
132         }
133         if (!upnpCh2Listener.check(
134                 UPnPServiceResponseListenerTest.NO_UPNP_SERVICES,
135                 t.getRemainTime())) {
136             mReason = getListenerError(upnpCh2Listener);
137             return false;
138         }
139 
140         return true;
141     }
142 
143     @Override
getTestName()144     public String getTestName() {
145         return "Multiple clients test 01";
146     }
147 }
148