OSTF without fuel on openstack

最近弄了一陣子OSTF,小記一下。

OSTF 是什么

openstack的龐大就不多說了,小可也剛剛摸出點(diǎn)門道,覺得暈的,自己開始能搭起來一個(gè)環(huán)境,看到虛機(jī)跑起來了就已經(jīng)拜謝六丁六甲了,但是千里之堤潰于蟻穴,這樣龐大復(fù)雜的系統(tǒng)想不出問題是不可能的,而對(duì)于我們平時(shí)搭建和基本的使用來說,有些問題是不容易發(fā)現(xiàn)的,這時(shí)候需要進(jìn)行系統(tǒng)的和業(yè)務(wù)邏輯相關(guān)的測(cè)試來保證系統(tǒng)的正常運(yùn)行。

duangduangduang。。。

這就是OSTF要做的了,OSTF 是 OpenStack Testing Framework 的縮寫,也就是openstack框架測(cè)試,其實(shí)是Fuel-OSTF,看的出來了吧,其實(shí)是FUEL的一個(gè)項(xiàng)目,但是如果不用fuel的話通過寫改造還是很容易和自己的環(huán)境配合的,這個(gè)找時(shí)間再系統(tǒng)整理下吧。

OSTF 優(yōu)缺點(diǎn)

缺點(diǎn)

  • 與fuel集成
    fuel沒有用過,ostf是人家的一部分也無可厚非,不過好用的東西還是拿出來啊

  • 木有nose的attr
    這個(gè)嘛覺得不是很方便啊,本來也是基于nose的,不好用attr不是很方便啊

  • 一些值都寫死在用例里面,加到conf里面會(huì)方便些

優(yōu)點(diǎn)

  • RESTapi

代碼梳理

做東西總是逃不過代碼啊,簡(jiǎn)單梳理下吧

結(jié)構(gòu)

整體上OSTF由兩部分組成

  • fuel_health 主要是測(cè)試用例及其相關(guān)內(nèi)容
  • fuel_plugin OSTF本身的server,client等都在這里了,還有處理restapi

話說如果只是要使用測(cè)試用例來檢查openstack的話,基本可以不用fuel_plugin了,小調(diào)整下基本就能用nose直接跑fuel_health里面的用例了

還有一個(gè)Nailgun,這個(gè)不太熟悉是什么東西,看文檔感覺是OSTF中傳遞數(shù)據(jù)和配置的,反倒我自己環(huán)境的時(shí)候這個(gè)我基本給踢掉了(If you want run OSTF for non Fuel installation, change the initialization of NailgunConfig() to FileConfig())。不用fuel的話就用不到nailgun了應(yīng)該,配置文件可以通過FileConfig()來處理。

def FuelConfig():
    if 'CUSTOM_FUEL_CONFIG' in os.environ:
        return FileConfig()
    else:
        try:
            return NailgunConfig()
        except exceptions.SetProxy as e:
            raise unittest2.TestCase.failureException(str(e))

一個(gè)環(huán)境變量CUSTOM_FUEL_CONFIG=fuel_health/etc/test.conf就可以搞定了。配置文件主要是openstack各個(gè)組件的一些信息。

流程

ostf服務(wù)起來后可以通過restapi訪問了,OSTF是用pecan處理請(qǐng)求的。
fuel_plugin/ostf_adapter/wsgi/root.py中定義了三個(gè)controller分別負(fù)責(zé)tests,testsets和testruns的請(qǐng)求的分發(fā)。

from fuel_plugin.ostf_adapter.wsgi import controllers
from pecan import expose


class V1Controller(object):
    # TODO(???) Rewrite it with wsme expose
    tests = controllers.TestsController()
    testsets = controllers.TestsetsController()
    testruns = controllers.TestrunsController()

class RootController(object):
    v1 = V1Controller()

    @expose('json', generic=True)
    def index(self):
        return {}

fuel_plugin/ostf_adapter/wsgi/controllers.py文件中對(duì)各個(gè)controller做了相應(yīng)定義。
其中TestrunsController()中對(duì)post方法做了處理,因?yàn)橥ㄟ^這個(gè)方法要來出發(fā)測(cè)試代碼的執(zhí)行的。

st=>start: 接收post Request
op1=>operation: [TestrunsContorller.post()] - models.TestRun.start
op2=>operation: [ostf_adapter.storage.modles] - TestRun.start
op3=>operation: [fuel_plugin.ostf_adapter.nose_plugin] - nose_adapter.run
e=>end: [nose_adapter._run_tests] - nose_test_runner
st->op1->op2->op3->e

最終由nose_test_runner也就是nose的接口了來執(zhí)行測(cè)試代碼。

參考鏈接

ostf官方文檔
pecan文檔
http://segmentfault.com/a/1190000003810294

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評(píng)論 19 139
  • 第一章 OpenStack基礎(chǔ) OpenStack管理的資源及提供的服務(wù)OpenStack做為一個(gè)操作系統(tǒng),...
    sgt_tiger閱讀 13,241評(píng)論 4 72
  • Nova Nova,即計(jì)算服務(wù),是OpenStack計(jì)算的彈性控制器。Nova可以說是整個(gè)云平臺(tái)最重要的組件,Op...
    邵勝奧閱讀 4,384評(píng)論 0 8
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,308評(píng)論 25 708
  • 有一種孩子,從出生下來他就會(huì)表現(xiàn)的很乖,不哭不鬧,總是一個(gè)人安靜的在小車?yán)锩嫱嬷约旱耐婢撸?dāng)有陌生人抱他的時(shí)候,...
    斷翅飛鳥閱讀 1,544評(píng)論 0 1

友情鏈接更多精彩內(nèi)容