天天看點

使用Tempest Docker測試OpenStack

筆者,從事基于OpenStack産品的QA測試工作半年多來,一直對相關測試環境的建構記憶深刻,尤其是測試環境的安裝和部署。舉個很簡單的例子,當測試A環境的OpenStack時,需要建構好一個諸如Tempest在内的測試平台;當測試B環境的OpenStack時,又需要建構好一個同樣的測試平台;亦或者要運作諸如社群那樣的分布式大規模異步測試任務等。

通常,為了建構這樣的一個測試平台,即便是熟練者往往也需要花費30多分鐘時間。通過使用Docker容器化,将Tempest獨立于主控端OS,而單獨運作在容器中,可以做到系統隔離,平台複用和簡單分化等高效作用。

社群對OpenStack的內建測試工具采用Tempest,性能測試采用Rally。Tempest的實作基于Python的unittest2測試架構和nose測試架構。Tempest對Openstack終端發起一系列API請求,并且對終端的響應進行驗證。Tempest通過config檔案來描述整個測試環境,包括compute 、Keystone、Glance、Neutron等OpenStack相關服務。

備注:這裡,我的測試環境是Tempest docker和OpenStack環境均建構在同一個CentOS 7中。

1)Docker 軟體包已經包含在預設的 CentOS-Extras 軟體源裡,安裝指令如下:

2)當 Docker 安裝完成之後,你需要啟動 docker 程序:

3)如果我們希望 Docker 預設開機啟動,如下操作:

4)配置Docker加速器。這裡我們使用daocloud提供的docker鏡像加速服務:

5)重新開機服務:

6)現在,我們來驗證 Docker 是否正常工作以及為下一步安裝Tempest做足準備。為此,我們需要下載下傳centos 7鏡像。

7)下一步,我們運作下邊的指令來檢視鏡像,确認鏡像是否存在:

OK,事已至此,Docker和CentOS7鏡像現在已經build好了。我們繼續進行下一步。

1)首先,我們需要進入到CentOS 7這個Docker鏡像中,執行安裝和配置任務等。

2)安裝相關的依賴關系

3)下載下傳和安裝Tempest

4)生成Tempest配置檔案

5)檢視,是否成功生成配置檔案

6)編輯Tempest檔案

由于,這裡我們隻測試OpenStack identity服務(Keystone)。是以,我們隻針對了[identity]部分進行了相關的配置和運作Tempest測試,以此來驗證我們的整個環節是否都是成功的。如果,你需要配置和測試諸如Compute、network、volume等服務,隻需要按照注釋配置相關選項即可。

如下,OpenStack identity服務配置:

7)執行Tempest測試

這裡,我們測試的對象是Keystone服務v2版本中的test_list_tenants_returns_only_authorized_tenants測試用例。指令如下,所示:

通過,觀察測試結果資訊,我們已經知道該測試用例已經執行成功了。

8)測試用例分析

該測試用例的主要測試内容是:檢查使用者隻可以看見他所屬租戶下的使用者;成功驗證使用者所使用的credentials和租戶名;最後就是檢查使用者不能登入alt使用者的租戶。主要是調用assertEqual、assertRaises等斷言方法來判斷程式的執行結果和預期值是否相符。

1)儲存Tempest Docker鏡像當我們制作好了Tempest鏡像之後,如果不做commit儲存起來,那麼container停止以後再啟動,這些更改就消失了。在完成操作之後,輸入 exit指令來退出這個容器。

現在,我們可以使用 docker commit 來儲存鏡像。

這裡的-m辨別我們指定送出的資訊,-a辨別來指定一個作者,tempest/centos是一個新的鏡像名,v1是版本号。

現在,我們可以使用 docker images 指令來檢視我們的新鏡像tempest/centos。

2)使用我們的新鏡像來運作Tempest docker

3)最後,我們使用docker save 指令将鏡像導出到本地檔案,預設目錄為執行docker指令的使用者家目錄下。

4)當我們把自己做好的鏡像push到Docker Hub公共庫或内部私有庫中後,别人可以直接導入鏡像或者pull(這将導入鏡像以及其相關的中繼資料資訊,包括标簽等)。

作者簡介:徐超。專注于工作和研究基于OpenStack産品研發測試過程的持續內建、持續測試和持續部署/傳遞領域,曾參與建立國内一OpenStack服務提供商從0到1+的測試體系。

本文轉自    OpenStack2015 部落格,原文連結:    http://blog.51cto.com/andyliu/1902212    如需轉載請自行聯系原作者

<a href="http://blog.51cto.com/search/result?q=linux+openstack+dock" target="_blank">linux openstack dock</a>