1. 程式人生 > >Teuthology的使用與Ceph自動化測試用例的編寫(一)

Teuthology的使用與Ceph自動化測試用例的編寫(一)

這裡將簡單介紹teuthology中自動化測試的用例的編寫。Ceph的自動化測試使用yaml檔案描述,如下的例子搭建了一個三節點的Ceph叢集,終端在叢集搭建好後停止在python的interactive上,允許測試著呼叫相關的函式與叢集互動。

roles:
- [mon.0, mds.0, osd.0]
- [mon.1, osd.1]
- [mon.2, client.0]

tasks:
- install:
- ceph:
- ceph-fuse: [client.0]
- interactive:

targets:
  [email protected]<host1>: ssh-rsa <host1 key>
  
[email protected]
<host2>: ssh-rsa <host2 key> [email protected]<host3>: ssh-rsa <host3 key>

基礎模組介紹

roles

roles需要與targets下的節點相互對應,每一組對應targets中的一個人節點。書寫形式可以如例子中的,一行一組,也可以使用- - 來區分組。例如:

roles:
-- mon.0
 - mds.0
 - osd.0
-- mon.1
 - osd.1
-- mon.2
 - client01

該部分描述了怎樣去使用host,每一組表示了某一個host上的角色,例如上面這個說明了host1上將會包含一個mon.0、mds.0、osd.0。

tasks

tasks 只需要執行的任務,這裡只簡單介紹,後面將主要講解tasks,給出支援的tasks與使用範例。 task是一個python的模組,它處於teuthology.task 的包中,另外task也包含了ceph/qa/tasks下的任務,如 ceph這個任務,teuthology執行到對應的tasks時候,會首先import本身目錄下的tasks,也就是teuthology.task,如果沒有則import ceph/qa/tasks,如果還沒找到對應的任務模組則會報錯。它包含兩個引數分別是ctx、config,例如install這個task的函式定義為:

def task(ctx, config):

每一個任務的python程式碼中都有這樣的一個函式,該定義位於 teuthology.task.install下
其中 引數的解釋為:

ctx: a context that is available through the lifetime of the test run, and has useful attributes such as cluster, letting the task access the remote hosts. Tasks can also store their internal state here. (TODO beware of namespace collisions.)

config: the data structure after the colon in the config file, e.g. for the above ceph-fuse example, it would be a list like [“client.0”].

前面也說到,tasks將會從teuthology.task 和ceph/qa/tasks中尋找,所以teuthology所支援的任務型別都可以在這兩個目錄下找到,這裡只是簡單的說明下列子中的任務,更詳細的將會在後面另外作為一個章節介紹。

示例yaml中的tasks包含四個任務:

  1. install 該任務是teuthology.task下的任務,它負責根據作業系統型別安裝Ceph的包,CentOS則安裝rpm包,ubuntu則安裝deb包。teuthology.task.install下有一個packages.yaml,它描述了需要安裝的軟體包。
  2. ceph 該任務主要是 部署其一個ceph叢集,它是ceph/qa/tasks 下的任務。Teuthology執行到ceph任務的時候就會呼叫 ceph/qa/tasks 下的ceph.py 檔案。
  3. ceph-fuse 該任務表示使用ceph-fuse掛在檔案系統,它包含了一個引數 client.0
  4. interactive 該任務是teuthology自身包含的任務,該任務很簡單,直接呼叫python 的interactive模組調出 互動程式,給使用者使用。 該任務的描述:
    The interactive task presents a prompt for you to interact with the teuthology configuration.
    This is also useful to pause the execution of the test between two tasks, either to perform ad hoc operations,or to examine the state of the cluster. Hit control-D to continue when done.

該例子中,interactive是最後一個任務,當按下 control-D之後,teuthology將會認為任務完成,測試結束,然後開始清空節點的所有內容,解除安裝Ceph叢集,恢復節點測試之前的狀態。

targets

該模組表示測試將選擇的節點,它每一行表示測試將要執行的節點的名字和祕鑰,格式為:“[email protected]: ssh-rsa long_hostkey_here”,在使用teuthology執行的時候,需要將對應數量的節點lock住,給其使用。

執行該測試用例

將上面的列子稍微修改,然後儲存為example.yaml。

鎖住型別為plana的3臺機器

teuthology-lock --lock-many 3 --machine-type plana

執行yaml檔案

teuthology example.yaml --suite-path /home/foo/src/github.com_ceph_ceph_master/qa/

suite-path 後面的路徑是ceph/qa/的路徑,不指定也可以,teuthology將會自己根據配置檔案尋找,並匯入 os.path。

這一步是對前面整個平臺的總體驗證,其中可能會出現很多問題,但是其實都不難解決。另外這一塊執行出錯,百度或者谷歌其實都很難搜尋得到。建議耐心去看輸出的資訊,然後去看看程式碼,也可以在程式碼中加log,輸出更多的資訊來觀察分析,出錯的地方。然後去解決它就行了,有時候會發現,就只是。。。。配置檔案出錯了而已。

Ceph中的suite測試

Suite測試指的是ceph-qa-suite下的測試,目前該專案整和到了Ceph專案下,ceph/qa/suite 下。每一個suite其實是一個directory ,下面又會包含子目錄或者yam檔案。這些yaml檔案通過排列組合形成suite的job,一個suite包含很多的job,一個job就是一寫yaml檔案組合在一個的,一個job包含一些task。

Teuthology測試

Teuthology中包含很多的命令,teuthology-suite命令是用來跑suite測試的,而teuthology是用來跑自定義的測試的。這些都可以通過 #teuthology –help以及#teuthology-suite –help 來檢視相關幫助。

teuthology-suite -s <suite> [-c <ceph>][-k <kernel>][-e email][-f flavor][-t <teuth>][-m <mtype>]

其實很多引數不是必須的,因為其都有預設值,在help中都可以看的到。

• suite: the name of the suite (the directory in ceph-qa-suite).
• ceph: ceph branch to be used.
• kernel: version of the kernel to be used.
• email: email address to send the results to.
• flavor: the kernel flavor to run against
• teuth: version of teuthology to run
• mtype: machine type of the run
• templates: template file used for further modifying the suite (optional)

這裡舉一個例子,加入需要測試一個rbd/librbd的包含CentOS關鍵字的測試的JOB,也可以在猴米艾尼加一個過濾的引數。

#teuthology-suite -v -s rbd/librbd -c master -m plana -S 9106dcXXXXXXXXXXXXX --filter centos

其中 -v表示輸出的日誌會包含debug

-s 表示suite 這裡是suite的目錄,如果測整個rbd直接 -s rbd 就行
-c 表示ceph的branch
-m 表示跑測試使用的資源節點的型別
-S 表示該branch下的某一個commit ID
–filter 表示過濾,只執行那些描述包含centos的job

另外還包含了以下的命令,只列出一些,不再展開,可以檢視–help
teuthology 執行ceph的整合測試
teuthology-suite 執行一系列(suite)的整合測試,一個suite是一個directory,下面有子目錄和yaml檔案
teuthology-kill 殺掉執行的teuthology的job,會清空佇列,殺死正在跑的job,然後重置相關的機器
teuthology-queue 檢視佇列中的job
teuthology-nuke 重置測試的機器
teuthology-lock 解鎖或者鎖住機器等
…………………………………………………………………………………………………………………………………………………………………………………………………………..

相關推薦

Teuthology的使用Ceph自動化測試編寫

這裡將簡單介紹teuthology中自動化測試的用例的編寫。Ceph的自動化測試使用yaml檔案描述,如下的例子搭建了一個三節點的Ceph叢集,終端在叢集搭建好後停止在python的interactive上,允許測試著呼叫相關的函式與叢集互動。 rol

自動化測試編寫的規範

上下 可能 重復 功能點 正向 font 場景 關閉瀏覽器 進行 1.一個腳本是一個完整的場景,從用戶登陸操作到用戶退出系統關閉瀏覽器。 2.一個腳本腳本只驗證一個功能點,不要試圖用戶登陸系統後把所有的功能都進行驗證再退出系統 3.盡量只做功能中正向邏輯的驗證,不要考慮太

自動化測試編寫守則

  先來說下一般自動化測試的流程,今天一個朋友也問過我這個問題,就順便說說。   一般在開始自動化測試,如拿到一個程式包或apk或網站檔案後,我們首先要做的就是要分析這個程式適不適合進行自動化測試;之後再對程式的執行路徑進行分析,找出一些關鍵路徑和有針對性的進行測試設計

Designing Test Cases--測試設計英文

A test case is a detailed procedure that fully tests a feature or an aspect of a feature. Whereas the test plan describes what to test, a

selenium + python自動化測試unittest框架學習selenium原理及應用

自動化 網上 下載安裝 src .cn 基礎 client cnblogs pytho unittest框架的學習得益於蟲師的《selenium+python自動化實踐》這一書,該書講得很詳細,大家可以去看下,我也只學到一點點用於工作中,閑暇時記錄下自己所學才能更加印象深刻

網易自動化測試工具Airtest初探

Airtest是一款自動化測試工具,主要是基於影象和poco控制元件識別。該工具是由網易遊戲團隊自主研發的工具。 主要有以下優點: 1、上手簡單、低門檻,僅需要了解一點點的python語法,便可以實現指令碼編寫和錄製。 2、執行日誌齊全,還可以一鍵生成報告。 3、最新版本已經支援

Web自動化測試Selenium 學習筆記

1、Web自動化測試簡介自動化基礎:自動化用例編寫、Selenium優勢及原理、自動化環境搭建Selenium基礎:常見8大元素定位(表格)、常見元素處理、下拉框元素處理、不同視窗切換、元素進階、元素等待需求到框架    需求分析-用例設計-基礎指令碼-登入/購物指令碼重構-

monkeyrunner自動化測試工具--環境搭建

monkeyrunner位置:你所下載的sdk,解壓後的tool目錄下 monkeyrunner,比monkey要更強大一些,它主要可應用於功能測試,迴歸測試,並且可以自定義測試擴充套件,靈活性較強,測試人員可以完全控制。 一、monkeyrunner環境搭建 1.大概流程

UML9種圖之

用例圖用於需求分析階段,描述了一個待開發系統的功能需求,用例檢視強調的是系統的功能,是軟體開發設計過程第一個設計的檢視。它從使用者的角度描述使用者的雪球,從而描述系統的功能,並指出各功能的執行者,以及

關於自動化測試的一些思考

為什麼要進行自動化測試?要回答這個問題,先了解一下測試背景。我們專案所使用的軟體開發模型是agile,agile開發的scrum模型,整個大專案分成一個個小team,每個team都有一個scrum master。Scrum master 根據每個人的情況安排任務,制定sprint plan。我們的測試有兩條

ApiTesting全鏈路自動化測試框架 - 初版釋出

簡介 此框架是基於Python+Pytest+Requests+Allure+Yaml+Json實現全鏈路介面自動化測試。 主要流程:解析介面資料包 ->生成介面基礎配置(yml) ->生成測試用例(yaml+json) ->生成測試指令碼(.py) ->執行測試(pyte

HTTP介面自動化經驗總結Okhttp3 介面測試編寫

經過前面幾次的分享,我們已經有了方法和結果,那麼這篇文章我們就來寫測試用例。 首先我們新建一個TestNG class,名字為APITest,繼承我們的依賴方法DependeicesMethod 1.get介面測試 //測試Get方法,其餘校驗請自行新增 @Test

Appium+java+Android二(uiautomatorviewer定位手機頁面元素+Java編寫自動化測試)

uiautomatorviewer定位手機頁面元素+編寫自動化測試用例 如何安裝及搭建appium的環境請參考我的上篇部落格appium+java+Android環境搭建 uiautomatorviewer工具是用來給手機頁面元素定位的,所以在使用uiautomatorviewer之前,

測試編寫要素模板

測試用例設計是測試工作的核心任務之一,也是工作量最大的任務之一。一般來說,編寫測試用例所涉及的內容或者要素以及樣式均大同小異,一般都包含主題、前置條件、執行步驟、期望結果等。測試用例可以用資料庫、Word、Excel、xml等格式進行儲存和管理。 1.編寫測試用例要素 一般

一個簡單的web自動化測試(webdriver unittest 結合)

#coding=utf-8 from selenium import webdriver import unittest import time import sys reload(sys) sys.setdefaultencoding('utf8') class My

測試編寫規範

不同 輸出 相互 安全 邊界情況 輸入 不變 ans 基本 一、測試用例編寫準備從配置管理員處申請軟件配置:《需求規格說明書》和《設計說明書》;根據需求規格說明書和設計說明書,詳細理解用戶的真正需求,並且對軟件所實現的功能已經準確理解,然後著手制訂測試用例。 二、測試

測試編寫思路

瀏覽器 elf 也會 strong let 滾動提示 方便 java 獲得 測試用例的編寫可不簡單呢,寫一份專業的測試用例,是所有測試工作者考慮的內容,其實用例的編寫是可以通過一些思路來進行,不少比較成熟的公司為了提升用例的專業性,就會有自己的用例庫,包括流程、關註

自動化測試設計的原則

自動化 多少 target 刪除 問題 正是 測試工具 例子 解決方案 自動化測試用例設計的原則 很多公司在實施自動化測試的過程中,往往會把所有的手工測試用例作為自動化測試用例,並且直接進行腳本的開發工作,甚至有些公司不寫自動化測試用例,直接想當然地開發測試腳本,這些都是

自動化測試設計三原則

命令 進行 test 服務 更換 打印 抽取 自動 持續集成 今天總結一下在做自動化測試中測試用例設計的一些建議,總結為三原則: 1. 保持Case之間的獨立性 case獨立性就是能夠獨立運行,當我們有隨機的跑其中某個Case或亂序的跑這些Cases時,測試的結果都應該是準

自動化測試設計思想指南

不少新手剛剛掌握了寫指令碼的能力,一上來就拿著功能測試用例一條一條的轉化成自動化用例。在編寫的過程中,會發現諸多問題,例如,指令碼中重複程式碼很多,一個指令碼的執行結果影響到另一個指令碼的執行,有些功能用例很難轉化成自動化用例等。 下面談談幾條指導建議:站在使用者角度設計自動化 在功能測試的時