[自动化测试]网络重连的测试脚本

0.功能需求

最近在一个安卓客户端项目上重写了断开重连的处理逻辑,需要写个简单的压力测试脚本不断进行断网/网络恢复的操作,大概思路有两种:

1.安卓机器上

安卓机器上可以通过以下命令控制网络断开、连接:

svc wifi enable/disable #wifi开关
svc data enable/disable #移动数据开关

当然网上也有通过settings命令开关飞行模式实现的,不过在我手上的安卓4的盒子上无效

settings put global airplane_mode_on 0/1

:上面命令都需要root权限,此外,安卓shell很多命令都被阉割了,建议安装busybox享受全功能的shell命令,busybox的安装参考这篇: 给Android系统安装busybox

在我的盒子上可以实现wifi的断开,但是执行打开wifi的命令后,盒子并不会主动连接热点,估计是系统的bug,无解

2. PC上

手机端不行就折腾pc端,通过pc搭建热点,控制热点的开关来模拟网络通断,mac上:

sudo ifconfig en0 up/down

上面en0是你mac上用来做热点的wifi网卡,可以通过下面命令查看

networksetup -listallhardwareports | grep -E ‘(Wi-Fi|AirPort)’ -A 1 | grep -o “en.”

好,简单的脚本如下,linux的电脑估计也一样:

#! /bin/bash
# bingoCoder: a script to turn wifi hotpot on/off in mac

function rand(){
  min=$1
  max=$(($2-$min+1))
  num=$(($RANDOM+101))
  echo $(($num%$max+$min))
}

# -1 means endless
loop_time=-1
n=0
sleep_time=0
echo "Wifi hotpot on/off test begin"

while [ $n -ne $loop_time ];do
  (( n++ ))
  sleep_time=$(rand 4 60)
  sleep $sleep_time
  time=$(date "+%H%M%S")
  echo "$time turn off wifi"
  sudo ifconfig en0 down
  sleep_time=$(rand 20 50)
  sleep $sleep_time
  time=$(date "+%H%M%S")
  echo "$time turn on wifi"
  sudo ifconfig en0 up
done

你可能感兴趣的:(工作笔记)