廢話引用:
Facebook此前開源了增強網絡流量控制工具 ATC,能利用WiFi網絡模擬各種移動網絡,測試智能手機和APP在不同國家地區和應用環境下的性能表現。ATC能夠模擬2G、2.5G(Edge)、3G和LTE4G網絡環境,測試工程師可以快速在各種不同模擬網絡環境中切換。
ATC能夠模擬真實網絡環境中的用戶體驗,Facebook開發ATC的目的是確保更多的人,尤其是發展中國家的用戶也能夠獲得最好的APP體驗。
此前曾有媒體報道扎克伯格要求Facebook員工使用低端智能手機,感受低收入和偏遠地區用戶的實際用戶的產品體驗。
為了獲得真實的網絡測試環境,Facebook一開始試圖在公司園區部署2G網絡,但是由於可運行開源軟件的2G基站難以采購而作罷。最后,Facebook轉而選擇通過WiFi網絡流量控制來模擬巴西、印度、尼日利亞和菲律賓等地的2G低速蜂窩網絡的數據通訊。
正文:
ATC有兩個最吸引人的特點:
- 在手機上通過Web界面就可以隨時切換不同的網絡環境。
- 多個手機可以連接到同一個WIFI下,相互之間模擬的網絡環境各不影響。
可以想象一下這個場景:一群程序猿和測試猴子熱火朝天的在辦公室忙活着,這時有一個叫ATC WiFi的熱點,任何人都可以將手機連接上去,通過Web界面隨意切換到各種不同的網絡環境下進行調試和測試……
網上的方法:
ATC只能運行在Linux上,所以搭建部署稍顯麻煩一些。此前網上有一些部署方式介紹了在虛擬機里如何搭建ATC環境。大致有以下幾個步驟:
- VMWare裝Ubuntu系統。
- 除非你的機器有無線網卡,不然找一個USB無線網卡,用來設置WIFI熱點。
- 部署ATC
Ubuntu中設置WiFi熱點功能,在系統自帶的工具里可以直接開啟。但是,由於是Ad-hoc模式,Android手機根本搜不到信號。所以必須設置AP模式才能讓Android手機搜到。參考:http://my.oschina.net/eechen/blog/227230,照着設置一般就OK了。
我的方法:
但是以上方法我嘗試過,在兩個電腦上均未能成功,所以我沒有采用虛擬機的方法。我采用的是裝雙系統的方法,大致有以下幾個步驟:
- window7基礎上裝雙系統 deepin-linux。
- deepin能夠很好的識別網卡,需要無線網卡支持AP模式,然后安裝kde-nm-connection-editor,設置無線wifi熱點。
- 部署ATC。
安裝deepin-linux 雙系統:
系統下載:http://www.deepin.org/download.html
制作U盤啟動盤:Deepin Boot Make 鏈接:http://pan.baidu.com/s/1pJVTvOR 密碼:a93q
其他安裝步驟參照:http://jingyan.baidu.com/article/359911f557e77a57fe030613.html
注意:linux安裝需要4個盤: / /home /boot swap
查看網卡是否支持AP模式:
sudo apt-get install iw sudo iw list
安裝kde-nm-connection-editor,設置無線wifi熱點:
安裝:
sudo apt-get install plasma-nm
配置-終端輸入:
sudo kde5-nm-connection-editor
點擊 add, 選擇 Wireless (shared)。
ssid 就是無線名字,比如我的是 tiankonguse。
mode 選擇 Access Point。
可以去 Wireless Security 設置一個密碼, WPA & WPA2 Personal 那一項。(密碼必須大於8位)
然后點擊 ok 保存,在網絡列表處選擇新建的網絡,然后點擊連接,連接成功后就可以用手機搜索到WiFi進行連接。
部署ATC:
先看看官方文檔 https://github.com/facebook/augmented-traffic-control 步驟都寫得比較清楚。
1、安裝python 、pip
sudo apt-get install python-pip python-dev build-essential sudo pip install --upgrade pip
2、通過pip安裝ATC需要的django組件
pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage
3、創建一個django工程以便使用ATC服務端app
django-admin startproject atcui cd atcui
4、進入atcui目錄,注意這里有兩層目錄,編輯settings.py,在INSTALLED_APPS里添加以下內容
'django_static_jquery', 'bootstrap_themes', 'atc_api', 'atc_demo_ui', 'atc_profile_storage', 'rest_framework',
5、編輯urls.py,加入以下內容
from django.views.generic import RedirectView admin.autodiscover() urlpatterns = patterns( '', url(r'^admin/', include(admin.site.urls)), url(r'^api/v1/', include('atc_api.urls')), url(r'^api/v1/profiles/', include('atc_profile_storage.urls')), url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)), url(r'^atc_demo_ui/', include('atc_demo_ui.urls')), ) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
其中以上4\5兩個步驟可以用ATC下載源碼包中的/augmented-traffic-control-master/docker/atcui_tpl/ 里面的 settings.py、urls.py,直接覆蓋 atcui目錄中的文件就行。
6、更新數據庫
python manage.py migrate
7、啟動ATC服務
sudo atcd --atcd-lan wlan0 --atcd-wan eth0
8、啟動Django工程
sudo python manage.py runserver 0.0.0.0:8080
9、手機連上ATC的wifi,訪問http://192.168.0.1:8080 IP地址以實際WiFi地址為准
就可以在手機上訪問到ATC網絡模擬頁面了,除了Android親兒子手機訪問正常,其他手機瀏覽器訪問UI有點不正常。能用就行了。
網上的說法是:這可能是由於其他rom沒有谷歌服務框架導致的,嘗試在其他手機裝chrome卻無法啟動。
但是這樣的頁面是沒有配置的,為了增加配置,我們還要繼續下面的操作。
10、添加facebook工程中為我們配置的常見網絡的配置
git clone https://github.com/facebook/augmented-traffic-control.git
下載完代碼后,進入工程文件,執行以下指令:
utils/restore-profiles.sh localhost:8080
然后在手機上刷新頁面,就有對應的一些常用網絡模擬選項了。
切換配置的方法: 只需點擊配置旁邊的“Select”按鈕,在點擊上方的“Update Shaping”按鈕即可
實際網絡使用情況可以在手機上使用網絡檢測工具speedtest查看。