Home | History | Annotate | Download | only in testcase
      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 
     30     public ServReqMultiClientTestCase01(Context context) {
     31         super(context);
     32     }
     33 
     34     @Override
     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
    144     public String getTestName() {
    145         return "Multiple clients test 01";
    146     }
    147 }
    148