Facebook網絡模擬測試工具ATC使用

轉載自: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的前世今生
在這裏插入圖片描述
那麼,對比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
 
urlpatterns = patterns('',
    ...
    # Django ATC API
    url(r'^api/v1/', include('atc_api.urls')),
    # Django ATC Demo UI
    url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),
    # Django ATC profile storage
    url(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

然後,啓動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提供的一份參數配置(國外的網絡和國內的很不一樣吧,僅供參考,歡迎大家修正和補充)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章