1 /* 2 * Copyright (C) 2018 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 17 package com.android.server.wifi.aware; 18 19 import android.net.wifi.aware.ConfigRequest; 20 import android.net.wifi.aware.PublishConfig; 21 import android.net.wifi.aware.SubscribeConfig; 22 import android.util.SparseIntArray; 23 24 /** 25 * Utility methods for Wi-Fi Aware unit tests. 26 */ 27 public class TestUtils { 28 public static class MonitoredWifiAwareNativeApi extends WifiAwareNativeApi { 29 private SparseIntArray mTransactionIds = new SparseIntArray(); 30 MonitoredWifiAwareNativeApi()31 MonitoredWifiAwareNativeApi() { 32 super(null); // doesn't matter - mocking parent 33 } 34 addTransactionId(int transactionId)35 private void addTransactionId(int transactionId) { 36 if (transactionId == 0) { 37 return; // transaction ID == 0 is used as a placeholder ID in several command 38 } 39 mTransactionIds.append(transactionId, mTransactionIds.get(transactionId) + 1); 40 } 41 validateUniqueTransactionIds()42 public void validateUniqueTransactionIds() { 43 for (int i = 0; i < mTransactionIds.size(); ++i) { 44 if (mTransactionIds.valueAt(i) != 1) { 45 throw new RuntimeException("Duplicate transaction IDs -- " + mTransactionIds); 46 } 47 } 48 } 49 enableAndConfigure(short transactionId, ConfigRequest configRequest, boolean notifyIdentityChange, boolean initialConfiguration, boolean isInteractive, boolean isIdle, boolean rangingEnabled, boolean isInstantCommunicationEnabled)50 public boolean enableAndConfigure(short transactionId, ConfigRequest configRequest, 51 boolean notifyIdentityChange, boolean initialConfiguration, boolean isInteractive, 52 boolean isIdle, boolean rangingEnabled, boolean isInstantCommunicationEnabled) { 53 addTransactionId(transactionId); 54 return true; 55 } 56 disable(short transactionId)57 public boolean disable(short transactionId) { 58 addTransactionId(transactionId); 59 return true; 60 } 61 publish(short transactionId, byte publishId, PublishConfig publishConfig)62 public boolean publish(short transactionId, byte publishId, PublishConfig publishConfig) { 63 addTransactionId(transactionId); 64 return true; 65 } 66 subscribe(short transactionId, byte subscribeId, SubscribeConfig subscribeConfig)67 public boolean subscribe(short transactionId, byte subscribeId, 68 SubscribeConfig subscribeConfig) { 69 addTransactionId(transactionId); 70 return true; 71 } 72 sendMessage(short transactionId, byte pubSubId, int requestorInstanceId, byte[] dest, byte[] message, int messageId)73 public boolean sendMessage(short transactionId, byte pubSubId, int requestorInstanceId, 74 byte[] dest, byte[] message, int messageId) { 75 addTransactionId(transactionId); 76 return true; 77 } 78 stopPublish(short transactionId, byte pubSubId)79 public boolean stopPublish(short transactionId, byte pubSubId) { 80 addTransactionId(transactionId); 81 return true; 82 } 83 stopSubscribe(short transactionId, byte pubSubId)84 public boolean stopSubscribe(short transactionId, byte pubSubId) { 85 addTransactionId(transactionId); 86 return true; 87 } 88 getCapabilities(short transactionId)89 public boolean getCapabilities(short transactionId) { 90 addTransactionId(transactionId); 91 return true; 92 } 93 createAwareNetworkInterface(short transactionId, String interfaceName)94 public boolean createAwareNetworkInterface(short transactionId, String interfaceName) { 95 addTransactionId(transactionId); 96 return true; 97 } 98 deleteAwareNetworkInterface(short transactionId, String interfaceName)99 public boolean deleteAwareNetworkInterface(short transactionId, String interfaceName) { 100 addTransactionId(transactionId); 101 return true; 102 } 103 initiateDataPath(short transactionId, int peerId, int channelRequestType, int channel, byte[] peer, String interfaceName, byte[] pmk, String passphrase, boolean isOutOfBand, byte[] appInfo, Capabilities capabilities)104 public boolean initiateDataPath(short transactionId, int peerId, int channelRequestType, 105 int channel, byte[] peer, String interfaceName, byte[] pmk, String passphrase, 106 boolean isOutOfBand, byte[] appInfo, Capabilities capabilities) { 107 addTransactionId(transactionId); 108 return true; 109 } 110 respondToDataPathRequest(short transactionId, boolean accept, int ndpId, String interfaceName, byte[] pmk, String passphrase, byte[] appInfo, boolean isOutOfBand, Capabilities capabilities)111 public boolean respondToDataPathRequest(short transactionId, boolean accept, int ndpId, 112 String interfaceName, byte[] pmk, String passphrase, byte[] appInfo, 113 boolean isOutOfBand, Capabilities capabilities) { 114 addTransactionId(transactionId); 115 return true; 116 } 117 endDataPath(short transactionId, int ndpId)118 public boolean endDataPath(short transactionId, int ndpId) { 119 addTransactionId(transactionId); 120 return true; 121 } 122 } 123 } 124