16026d52710d7a6195a33885020d29aa1330fa855Xia Wang/*
26026d52710d7a6195a33885020d29aa1330fa855Xia Wang * Copyright (C) 2010, The Android Open Source Project
36026d52710d7a6195a33885020d29aa1330fa855Xia Wang *
46026d52710d7a6195a33885020d29aa1330fa855Xia Wang * Licensed under the Apache License, Version 2.0 (the "License");
56026d52710d7a6195a33885020d29aa1330fa855Xia Wang * you may not use this file except in compliance with the License.
66026d52710d7a6195a33885020d29aa1330fa855Xia Wang * You may obtain a copy of the License at
76026d52710d7a6195a33885020d29aa1330fa855Xia Wang *
86026d52710d7a6195a33885020d29aa1330fa855Xia Wang *      http://www.apache.org/licenses/LICENSE-2.0
96026d52710d7a6195a33885020d29aa1330fa855Xia Wang *
106026d52710d7a6195a33885020d29aa1330fa855Xia Wang * Unless required by applicable law or agreed to in writing, software
116026d52710d7a6195a33885020d29aa1330fa855Xia Wang * distributed under the License is distributed on an "AS IS" BASIS,
126026d52710d7a6195a33885020d29aa1330fa855Xia Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136026d52710d7a6195a33885020d29aa1330fa855Xia Wang * See the License for the specific language governing permissions and
146026d52710d7a6195a33885020d29aa1330fa855Xia Wang * limitations under the License.
156026d52710d7a6195a33885020d29aa1330fa855Xia Wang */
166026d52710d7a6195a33885020d29aa1330fa855Xia Wang
176026d52710d7a6195a33885020d29aa1330fa855Xia Wangpackage com.android.connectivitymanagertest;
186026d52710d7a6195a33885020d29aa1330fa855Xia Wang
196026d52710d7a6195a33885020d29aa1330fa855Xia Wangimport android.os.Bundle;
206026d52710d7a6195a33885020d29aa1330fa855Xia Wangimport android.test.InstrumentationTestRunner;
216026d52710d7a6195a33885020d29aa1330fa855Xia Wangimport android.test.InstrumentationTestSuite;
22b97435c94f4d35a70d63e5dcba5415b0110cf2c9Xia Wang
236026d52710d7a6195a33885020d29aa1330fa855Xia Wangimport com.android.connectivitymanagertest.stress.WifiApStress;
2490e1c782a63475cd9b3973936decf6a4f6c6148fXia Wangimport com.android.connectivitymanagertest.stress.WifiStressTest;
256026d52710d7a6195a33885020d29aa1330fa855Xia Wang
266026d52710d7a6195a33885020d29aa1330fa855Xia Wangimport junit.framework.TestSuite;
276026d52710d7a6195a33885020d29aa1330fa855Xia Wang
286026d52710d7a6195a33885020d29aa1330fa855Xia Wang/**
296026d52710d7a6195a33885020d29aa1330fa855Xia Wang * Instrumentation Test Runner for all stress tests
306026d52710d7a6195a33885020d29aa1330fa855Xia Wang *
316026d52710d7a6195a33885020d29aa1330fa855Xia Wang * To run the stress tests:
326026d52710d7a6195a33885020d29aa1330fa855Xia Wang *
336026d52710d7a6195a33885020d29aa1330fa855Xia Wang * adb shell am instrument -e stressnum <stress times> \
346026d52710d7a6195a33885020d29aa1330fa855Xia Wang *     -w com.android.connectivitymanagertest/.ConnectivityManagerStressTestRunner
356026d52710d7a6195a33885020d29aa1330fa855Xia Wang */
366026d52710d7a6195a33885020d29aa1330fa855Xia Wang
376026d52710d7a6195a33885020d29aa1330fa855Xia Wangpublic class ConnectivityManagerStressTestRunner extends InstrumentationTestRunner {
38d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private int mSoftApIterations = 100;
39d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private int mScanIterations = 100;
40d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private int mReconnectIterations = 100;
41a4c2caac05009512213454d329579a79dde11e5fXia Wang    // sleep time before restart wifi, default is set to 2 minutes
42d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private long mSleepTime = 2 * 60 * 1000;
43d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private String mReconnectSsid = null;
44d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private String mReconnectPassword = null;
45d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    private boolean mWifiOnlyFlag = false;
4690e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang
476026d52710d7a6195a33885020d29aa1330fa855Xia Wang    @Override
486026d52710d7a6195a33885020d29aa1330fa855Xia Wang    public TestSuite getAllTests() {
496026d52710d7a6195a33885020d29aa1330fa855Xia Wang        TestSuite suite = new InstrumentationTestSuite(this);
50776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang        suite.addTestSuite(WifiApStress.class);
51776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang        suite.addTestSuite(WifiStressTest.class);
526026d52710d7a6195a33885020d29aa1330fa855Xia Wang        return suite;
536026d52710d7a6195a33885020d29aa1330fa855Xia Wang    }
546026d52710d7a6195a33885020d29aa1330fa855Xia Wang
556026d52710d7a6195a33885020d29aa1330fa855Xia Wang    @Override
566026d52710d7a6195a33885020d29aa1330fa855Xia Wang    public ClassLoader getLoader() {
576026d52710d7a6195a33885020d29aa1330fa855Xia Wang        return ConnectivityManagerTestRunner.class.getClassLoader();
586026d52710d7a6195a33885020d29aa1330fa855Xia Wang    }
596026d52710d7a6195a33885020d29aa1330fa855Xia Wang
606026d52710d7a6195a33885020d29aa1330fa855Xia Wang    @Override
616026d52710d7a6195a33885020d29aa1330fa855Xia Wang    public void onCreate(Bundle icicle) {
626026d52710d7a6195a33885020d29aa1330fa855Xia Wang        super.onCreate(icicle);
63d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String valueStr = icicle.getString("softap_iterations");
64776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang        if (valueStr != null) {
65776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang            int iteration = Integer.parseInt(valueStr);
66776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang            if (iteration > 0) {
67d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu                mSoftApIterations = iteration;
6890e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            }
6990e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        }
7090e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang
71d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String scanIterationStr = icicle.getString("scan_iterations");
7290e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        if (scanIterationStr != null) {
7390e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            int scanIteration = Integer.parseInt(scanIterationStr);
7490e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            if (scanIteration > 0) {
7590e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang                mScanIterations = scanIteration;
7690e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            }
7790e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        }
7890e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang
79d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String ssidStr= icicle.getString("reconnect_ssid");
8090e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        if (ssidStr != null) {
8190e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            mReconnectSsid = ssidStr;
8290e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        }
8390e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang
84d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String passwordStr = icicle.getString("reconnect_password");
8590e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        if (passwordStr != null) {
8690e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            mReconnectPassword = passwordStr;
8790e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        }
8890e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang
89d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String reconnectStr = icicle.getString("reconnect_iterations");
9090e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        if (reconnectStr != null) {
9190e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            int iteration = Integer.parseInt(reconnectStr);
9290e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            if (iteration > 0) {
9390e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang                mReconnectIterations = iteration;
946026d52710d7a6195a33885020d29aa1330fa855Xia Wang            }
956026d52710d7a6195a33885020d29aa1330fa855Xia Wang        }
966026d52710d7a6195a33885020d29aa1330fa855Xia Wang
97d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String sleepTimeStr = icicle.getString("sleep_time");
9890e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        if (sleepTimeStr != null) {
9990e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            int sleepTime = Integer.parseInt(sleepTimeStr);
10090e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            if (sleepTime > 0) {
10190e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang                mSleepTime = 1000 * sleepTime;
10290e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang            }
10390e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang        }
104776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang
105d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        String wifiOnlyFlag = icicle.getString("wifi-only");
106776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang        if (wifiOnlyFlag != null) {
107776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang            mWifiOnlyFlag = true;
108776cca3b3a84cd16bdaccdd43963cc34d923e0a4Xia Wang        }
10990e1c782a63475cd9b3973936decf6a4f6c6148fXia Wang    }
110d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
111d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public int getSoftApInterations() {
112d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mSoftApIterations;
113d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
114d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
115d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public int getScanIterations() {
116d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mScanIterations;
117d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
118d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
119d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public int getReconnectIterations() {
120d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mReconnectIterations;
121d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
122d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
123d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public boolean isWifiOnly() {
124d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mWifiOnlyFlag;
125d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
126d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
127d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public long getSleepTime() {
128d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mSleepTime;
129d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
130d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
131d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public String getReconnectSsid() {
132d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mReconnectSsid;
133d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
134d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu
135d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    public String getReconnectPassword() {
136d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu        return mReconnectPassword;
137d21f1c1e4d34306ab7aa99f5be1b886f6b4e07a8Guang Zhu    }
1386026d52710d7a6195a33885020d29aa1330fa855Xia Wang}
139