• 11
  • 11
分享
  • 如何在CentOS7下通过Docker方式搭建OpenStf环境?
  • 曼倩诙谐 2021-06-24 10:44:42 字数 3536 阅读 1186 收藏 11

  应用场景

  开始了解stf主要源自于当前移动端自动化过程中,发现执行机器上挂载的移动设备监控起来比较麻烦,有时候报错或调试需要跑到执行机所在的位置查看运行情况。

  有没有一种办法可以直接在自己位置上就能看到手机的运行情况呢?于是就在领导的指引下调研了一下该工具。

  但其实这款工具还可以帮助解决公司内部移动设备资源不能充分利用的问题,如:

  公司移动设备其实是有限的,有的人借走了用完未及时归还,导致其他人就无法使用,而使用这款工具就可以统一监控公司的所有移动设备资源,使用者可在浏览器界面上查看哪些设备是空闲状态,在页面上就可以操作对应设备。

  本文案例环境配置

  windows上通过VMware安装虚拟机CentOS7,然后安装docker,使用docker方式搭建。

  CentOS如何搭建不在本文范围。

  注意:windows系统不建议直接用docker的toolbox版本,会有很多问题。

  Docker安装

  官方文档:https://docs.docker.com/engine/install/centos/

  以下docker安装操作均来自官方:

  1. 卸载旧版本

  yum remove docker \

  2.  安装要用到的仓库

yum install -y yum-utils
# 配置仓库(后续下载镜像的地址) 默认下载的地址是国外的(https://download.docker.com/linux/centos/docker-ce.repo ),可以换成阿里云的更快一些 yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  3.  安装docker相关的东西

#更新yum索引
yum makecache fast
#安装docker引擎
yum install docker-ce docker-ce-cli containerd.io

  注:安装过程中会出现两次让你输入y/n的地方,我选的y,然后就继续下载一些东西。

  4.  启动docker

systemctl start docker
# 使用该命令查看是否安装成功
docker version
# 运行官方的hello-world
docker run hello-world
# 查看hello-world是否启动成功
docker ps

  上述环境都准备好以后,下面开始docker搭建openStf。

  明确openStf连接设备的2种方式:

  ·一种是本文采用的方式:主节点部署STF服务并允许远程访问API,子节点只需部署ADB,保证ADB 5037端口对外暴露即可。

  这种方案的优点是部署简单,而且子节点无需部署STF服务;缺点就是子节点新增机器需要在主节点重新运行STF命令以识别子节点上新增的机器。

  ·还有一种是主节点和子节点都部署STF服务并允许远程访问API,然后主节点连接子节点。

  这种方案的优点是子节点新增设备可以自动识别;缺点就是子节点也需要部署STF服务。

  开始搭建

  拉取镜像

docker pull openstf/stf:latest   //stf镜像
docker pull sorccu/adb:latest  //adb镜像
docker pull rethinkdb:latest    //rethinkdb镜像

  启动镜像

docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
//启动stf,注意ip[192.168.20.130]是stf对应服务器ip
docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.20.130

  查看启动成功后的镜像:

  docker ps

2-1.png

  访问stf

  启动上述镜像后用windows直接访问http://192.168.20.130:7100访问不到,但不一定其他人的环境也访问不到,如图:

2-2-.png

  此时,需要放开7100端口:

//查询7100是否放开
firewall-cmd --query -port=7100/tcp

2-3.png

//放开7100端口,并重新加载
[root@second ~]# firewall-cmd --permanent --zone=public --add-port=7100/tcp
success
[root@second ~]# firewall-cmd --reload
success

2-4.png

  上述端口问题解决后,再次访问 http://192.168.20.130:7100,可以成功打开页面。

2-5.png

  随意输入名称、邮箱登录。

  注意:此时连接上还不能正常使用,页面一直断断续续报Disconnected,实际上是没有连接上的。

2-6.png

  手机连接windows电脑

  提示:

  • 如果是在该电脑上装的虚拟机,连接的时候注意选择连接到windows电脑,而不是虚拟机上

  • 手机打开开发者调试模式

  命令操作

  cmd中adb命令查看是否连接成功:

  adb devices

  对外暴露5037端口:

adb nodaemon server -a -P 5037  //当提示端口被占用时需要杀掉占用的进程

2-7.png

taskkill /pid 7808/f

  centos上进入docker内部执行如下操作:

//通过下面的命令查看stf容器id
docker ps
//进入stf容器内部,标红部分为正在运行中的stf容器id
docker exec -it 570a1d6addc6 /bin/sh
//执行如下命令,标红部分的ip为stf所在服务ip,通过ifconfig可以查看
stf local --public-ip 192.168.20.130 --allow-remote

2-8.png

//通过adb host加载windows主机上的设备
stf provider --name second --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 192.168.20.130 --storage-url http://localhost:7100/ --adb-host 192.168.1.4 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote

2-9.png

  再次访问stf,如下图手机已显示在stf上。

2-10.png

  点击设备进去会出现如下问题:

  http://www.360doc.com/content/20/0120/13/8189294_887148015.shtml

  经再三验证,确实还是需要关闭防火墙才行,直接在centos里访问stf点击设备进入是没有问题的,说明还是有些网络上的问题。

  当把防火墙关闭后,windows上访问就ok了。

2-11.png

  通过这样的方式,我们在开发或调试移动端自动脚本时就不必要一直跑到执行机对应的位置查看手机运行情况了,直接打开上述界面即可看到app的运行情况。

  截至此stf的docker上搭建方式就已经结束了。

  由于浏览器上查看的时候有时会断开连接,为了确保连接的稳定性还需要考虑的问题:

  centos上进入stf容器内部,通过adb host连接子节点上的设备,一旦退出容器后好像就断掉连接了,这该怎样解决?

  当再多一个子节点连接设备时,该怎样同时保证连所有子节点上的设备呢?命令怎么写的?

  因为docker建立在linux系统之上的,docker与宿主机与电脑是怎样的关系?

  linux命令需要多了解、练习.网络方面的知识等都需要有基本的认识,这样在出现问题时知道从哪排查?


作者:月亮   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 随着银行主机应用的陆续下移,开放平台应用的数量和规模均呈上升趋势,应用系统性能的高低不仅影响着系统上线后的稳定运行,更关系着银行的声誉。性能测试作为应用系统上线前性能把控的最后一道关口,其重要性不言而喻。本文针对性能测试过程中的存在的问题,梳理并研究开放平台应用系统性能测试方法和技术,明确了性能测试过程重要环节的工作策略,目的在于指导性能测试工作开展,进而提升性能测试质量。1、现状分析近年来,各商业银行均组建了专业的测试团队承担性能测试工作,工作规范度日益加强,但由于银行开放平台应用系统具有规模大、交易量大、数据量大、技术架构和软件多样化、关联系统复杂等特点,性能测试工作仍存在一些问题。一是测...
            0 1 2301
            分享
          • 读者提问:PC 端长截图工具有推荐的吗 ?阿常回答:1、QQ 截图2、Snipaste3、FastStone Capture4、verycapture5、ShareX6、iShot(Mac)阿常碎碎念:看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家私信阿常,一起探讨交流。
            0 0 986
            分享
          •   CTS测试全称为系列兼容测试(Compatibility Test Suite),CTS是为了测试手机是否符合Google定义的兼容性规范(Compatibility Definition)而设置的。  顾名思义,CTS测试是针对谷歌系统框架(GMS)进行适配性测试的。目前正在兴起的鸿蒙操作系统(Harmony OS)可能无法完全适配。  CTS这个兼容性测试和软件测试中的兼容测试是完全不同的概念。CTS测试是针对设备的,只有通过CTS测试的设备才有可能获得Android的商标,并且享受Android Market的权限。  由于Google系统的开源性,使得很多手机厂商基于安卓系统都做出...
            12 12 1382
            分享
          •   rf(即robotframework)是自动化测试常用的框架之一,在前端自动化测试中常与webdriver驱动器,以及rf的selenium2library库搭配使用。selenium2library提供的open browser,close browser,click element……等关键字方便了广大测试人员编写前端自动化用例。  编写前端自动化用例的首要原则即是模仿用户的习惯,在浏览器上进行各种“点击”、“下拉”、“滑动”等操作验证浏览器返回的响应是否与用户期望一致。但是,往往在前端自动化测试过程中会遇到进行浏览器设置从而使得测试用例更快、更稳定运行的情形。例如:设置浏览器避开ht...
            14 14 1178
            分享
          •   当你学会了如何设计测试用例之后,接下来便是开始用例的编写。  在设计阶段,更准确的说应该是识别测试点的过程,而编写阶段则是将测试点细化成一条条测试用例的过程,有了比较全的用例场景后,如何让别人更舒服、更方便、更清晰地去使用你的测试用例,如何更优雅地展示你的测试用例,如何让领导对你的测试用例满意呢?(“降本增效”,这里的“效”有时也指的是“效果”)  测试用例的编写是每一个测试工程师安身立命的家伙,也是测试的基础,更是软件测试的核心内容,正所谓“基础不牢,地动山摇”,所以一定要掌握好,有些转行的小伙伴一上来就开始自动化、性能的学习,却忽略了最基础的东西,这是不对的。  正好最近有小伙伴问到关...
            1 1 207
            分享
      • 51testing软件测试圈微信