转载自:https://www.cnblogs.com/coderzh/p/AugmentedTrafficControl.html
实际步骤本人并没有操作过。因为考虑再过一段时间马上就需要用到了,所以转载过来,当做自己的备忘录

正文

Facebook在其工程博客(原文 )上宣布开源移动网络测试工具Augmented Traffic Control(ATC),我迅速试用了一番,非常不错,对手游或者其他APP的调试和测试都非常有帮助,介绍给大家。

现在已经是APP时代了,由于手机网络的特殊性,移动APP需要面临更加复杂的网络环境。在设计之初就要考虑如何应对各种网络环境,比如很高的延迟,经常丢包,频繁的断线。特别是手游,断线重连机制设计的好坏直接影响到游戏的体验。

所以,在开发过程中模拟各种网络环境进行测试变得越来越重要。在ATC出来之前,微软曾经有一个网络模拟工具NEWT(Network Emulator for Windows Toolkit),使用起来也是方便。(NEWT的诞生也蛮有意思,见:NEWT的前世今生)

http://blog.sina.com.cn/s/blog_4caedc7a0100g9y6.html

那么,对比NEWT,ATC有些什么特点呢?

ATC有两个最吸引人的特点:

在手机上通过Web界面就可以随时切换不同的网络环境。
多个手机可以连接到同一个WIFI下,相互之间模拟的网络环境各不影响。
可以想象一下这个场景:一群程序猿和测试猴子热火朝天的在办公室忙活着,这时有一个叫ATC WiFi的热点,任何人都可以将手机连接上去,通过Web界面随意切换到各种不同的网络环境下进行调试和测试……

想想都有点小激动呢,接下来就来试用一把,感受一下ATC的威力。

ATC只能运行在Linux上,所以搭建部署稍显麻烦一些。本文将介绍在虚拟机里如何搭建ATC环境。大致有以下几个步骤:

VMWare装个Ubuntu系统吧(以前我常用VirtualBox,各种兼容性问题被坑惨了不敢用了)。
除非你的机器有无线网卡,不然找一个USB无线网卡,用来设置WIFI热点。
部署ATC
Ubuntu中设置WiFi热点功能,在系统自带的工具里可以直接开启。但是,由于是Ad-hoc模式,Android手机根本搜不到信号。所以必须设置AP模式才能让Android手机搜到。我折腾了好一阵,最后发现这篇文章最靠谱,照着设置一般就OK了。
接下来是部署ATC,其实也很简单,官方文档上写的也很清楚:https://github.com/facebook/augmented-traffic-control
首先,必须安装Python2.7以上版本,然后安装pip:

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip

然后,使用pip直接安装好ATC所有组件:

pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

接下来部署Django的web工程,提供手机访问并用来配置和切换网络用的。

1.使用django-admin生成一个新的django工程:

django-admin startproject atcui
cd atcui

2.修改atcui/settings.py,加入ATC相关的内容:

INSTALLED_APPS = (...# Django ATC API'rest_framework','atc_api',# Django ATC Demo UI'bootstrap_themes','django_static_jquery','atc_demo_ui',# Django ATC Profile Storage'atc_profile_storage',
)

3.修改atcui/urls.py,urlpatterns 中加入atc的url页面:

...
...
from django.views.generic.base import RedirectView
from django.conf.urls import includeurlpatterns = patterns('',...# Django ATC APIurl(r'^api/v1/', include('atc_api.urls')),# Django ATC Demo UIurl(r'^atc_demo_ui/', include('atc_demo_ui.urls')),# Django ATC profile storageurl(r'^api/v1/profiles/', include('atc_profile_storage.urls')),url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
)

4.更新一下数据库:

python manage.py migrate

万事俱备,就差启动了……

前面设置WiFI热点时,你还记得设置的无线网卡的名字吗?嗯,就是wlan0,这个很重要。接下来要启动网络控制的核心组件atcd,需要通过参数指定提供Wifi热点的内网用的网卡名字,外网访问的网卡名默认是eth0(如果不是也需要通过–atcd-wan指定)

#原文给的
sudo atcd --atcd-lan wlan0
#因没有无线网卡驱动,前辈给的命令
sudo atcd --atcd-lan enp3s0 --atcd-wan enp3s0

然后,启动Django的工程:

sudo python manage.py runserver 0.0.0.0:8000

用手机连接上去试试吧。看看虚拟机的IP,比如我设置的是192.168.6.1,手机浏览器里访问:http://192.168.6.1:8000

在手机的界面里,你可以分别对网络上行下行进行设置,主要设置的参数有:

网络带宽(bandwidth)
延迟(latency)
丢包率(packet loss)
错包率(corrupted packets)
乱序率(packets ordering)
通过设置上面的参数,可以模拟出各种常用的网络环境,比如:2G,3G,4G,WiFi等等,同时也可以模拟一些异常情况,比如信号很差,延迟很大,丢包率高的情况。具体有哪些场景和参数设置,欢迎大家一起交流交流,下面是Comcast提供的一份参数配置(国外的网络和国内的很不一样吧,仅供参考,欢迎大家修正和补充)

59.1 Facebook网络模拟测试工具ATC使用相关推荐

  1. Facebook网络模拟测试工具ATC使用

    转载自:https://www.cnblogs.com/coderzh/p/AugmentedTrafficControl.html 实际步骤本人并没有操作过.因为考虑再过一段时间马上就需要用到了,所 ...

  2. 弱网络模拟测试工具---易测app

    易测功能介绍   易测是一款基于无线客户端研发场景的通用测试工具, 它通过在研发人员的自持机上提供各种辅助能力&标准化的专项测试服务来提升研发质量&效率.   易测app是阿里巴巴做的 ...

  3. 弱网测试工具-ATC和NEWT

    据目前了解的 模拟弱网,如2G,3G,4G网络信号的,工具主要有两个 1个是微软出的Network Emulator for Windows Toolkit. 可以参考http://blog.csdn ...

  4. facebook网络环境模拟工具atc

    本来想自己制作一个atc的images,搜了一下docker hub,发现2015.5.15日有人发布了该工具的镜像,这下方便了. Docker hub地址 Image 启动镜像 docker run ...

  5. Facebook网络环境模拟工具ATC的使用

    在我们之前的网络测试中,主要是限制网速来模拟弱网络环境,而实际中弱网络时,网络延时,丢包率都会有变化,所以使用网速+丢包率+延时来定义一种网络环境更加合理 本篇文章介绍ATC工具环境的搭建和使用,搭建 ...

  6. FaceBook ATC 弱网测试工具环境搭建

    原址 工具简介 ATC是FaceBook开源的移动网络测试工具Augmented Traffic Control(ATC),能够方便的让我们模拟各种网络环境进行测试. ATC有两个最吸引人的特点: 在 ...

  7. 弱网工具ATC使用总结

    Facebook网络模拟测试工具ATC使用 就在上周,Facebook在其工程博客(原文)上宣布开源移动网络测试工具Augmented Traffic Control(ATC),我迅速试用了一番,非常 ...

  8. 【优测干货分享】微信测试工程师手把手教你做弱网络模拟测试

    小优有话说: app研发不同于实验室里做研究,哪里有"理想环境". 理想里,用户用着性能卓越的手机,连着畅通无阻的wifi网络. "哇塞!这个app好用到飞起!" ...

  9. 微信测试工程师手把手教你做弱网络模拟测试

    微信测试工程师手把手教你做弱网络模拟测试 Posted by 腾讯优测  | 3,152 views 小优有话说: app研发不同于实验室里做研究,哪里有"理想环境". 理想里,用 ...

最新文章

  1. 出现这四种情况,才是考虑分库分表的时候!
  2. Grunt 新手一日入门
  3. 简单struts,spring,mybatis组合使用
  4. iOS应用软件沙盒sandbox相关知识(整理)
  5. IDEA 同一个工程下不同模块之间的类相互调用
  6. krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
  7. 爬虫之scrapy环境安装
  8. Docker 数据管理
  9. Fortran95学习总结
  10. AP注册不上线(现网中存在其它厂商的控制器)
  11. UI——day15.H5和小程序的设计
  12. 软件测试的类型有哪些?
  13. Teams Tab App 分析
  14. 适合发朋友圈的高情商文案
  15. HTML中添加点击链接 进行Skype、QQ、微信对话的问题
  16. 如何获取两个经纬度点之间的中心点的经纬度
  17. 期货开户公司交返怎么申请?
  18. 开发必备的图片格式——.9图的原理和陷阱
  19. DOS命令:cd显示当前目录名或改变当前目录
  20. JavaScript权威指南-总结

热门文章

  1. 资本频频下注,为什么是江小白?
  2. NOIP2017普及组:棋盘
  3. 硬盘位置不可用无法访问X:/指定不存在的设备?
  4. lisp 河道水面线计算_天然河道水面线计算表
  5. Spring中的scope配置和@scope注解
  6. astash制作UML类图 简单入门教程
  7. Reaveal + iPhone(越狱)分析第三方app的UI视图结构
  8. 目标检测扩散模型DiffusionDet登场,扩散模型正在不同任务中“扩散”
  9. 2016国赛A题——系泊系统问题粒子群算法求解
  10. php视频播放地址,视频网站播放地址获取方法