• openstack开发环境与代码测试


    一、openstack单组件开发环境

    1、Python虚拟环境搭建

    主要参考文献:

    https://virtualenv.pypa.io/en/latest/virtualenv.html

    说明:Python虚拟环境主要是一个与系统中Python第三方库相对应的隔离环境,可以在这个虚拟环境中安装程序及依赖库而不会对系统中的库产生影响。所以,我们可以先搭建Python虚拟环境,然后将openstack的组件安装到虚拟环境中,在虚拟环境中进行开发和测试!

    安装:

    yum install python-virtualenv   #centos系统下

    pip install virtualenv #使用pip工具安装

    创建和使用虚拟环境:

    virtualenv virtenv              #创建虚拟环境,virtenv为虚拟环境目录
    source virtenv/bin/activate     #启动虚拟环境,命令行提示符会多出"(virtenv)"表示进入虚拟环境
    pip install ... #在虚拟环境中安装程序...
    deactivate #退出虚拟环境

    虚拟环境目录:

    共包含bin、include、lib、lib64,全部都是对/usr目录下对应文件夹的虚拟映射。

    注意事项:
    Python可执行文件头#!后如果列出具体的Python路径,则指明了某个环境,如果要让其可以跨虚拟环境,则可以指定为#!/usr/bin/env python  

    2、openstack单组件开发环境具体搭建步骤

    1)使用git clone 下载源码库

    2)在源码库目录中建立Python虚拟环境

    3)注意修改组件的配置文件,将可执行脚本拷贝到虚拟环境的bin目录中

    4)安装组件依赖及组件

    pip install -r requirements.txt
    pip install -r test-requirements.txt
    cp 源码库中组件源代码 虚拟环境site-packages目录 #或者使用python setup.py ...安装组件

    5)运行组件源代码中已有的单元测试案例,另外还可以自己编写测试案例

    python -m testtools.run xxx

    说明:以上步骤基本遵循openstack官方文档和代码的说明,具体细节有所差异,在openstack的每个组件的开发者文档(http://docs.openstack.org/developer/openstack-projects.html)中均有说明如何搭建开发环境和做测试,openstack实际上已经将以上步骤写成脚本,可以直接运行,但是考虑到网络下载的原因,所以采用以上分步进行的方式,方便差错。官方在这方面的主要说明文献:https://wiki.openstack.org/wiki/Testing#Unit_Tests (其中使用了tox测试工具,tox可以将工程和指定依赖包部署到虚拟环境中并运行你设置的所有测试案例,相当于模拟了工程实际部署后的测试情况,主要参考文献:https://testrun.org/tox/latest/index.html )

     

    二、openstack集成开发环境

    1、使用packstack或devstack部署完整的openstack平台环境

    2、openstack集成测试  

    2.1 推荐方法

    1)将待测试组件的可执行启动脚本拷贝到组件虚拟环境的bin目录下

    2)停掉平台中原来运行的待测试组件

    3)进入组件虚拟环境,执行待测组件的启动脚本,此时可以在终端运行虚拟环境中的待测组件程序

    4)在平台中进行操作和测试

    2.2 粗糙方法

      利用软连接将系统原来的模块替换成自己开发的模块。其中,后台服务模块如nova、cinder、glance等都可以直接使用,但是前端如xxxclient及openstack-dashboard则不能使用(本人亲测时出现模块导入问题!)。

    说明:基本参考了openstack官方的方案,官方文档中这部分主要说明: https://wiki.openstack.org/wiki/Testing#IntegrationTests ( 其中主要使用了DevStack进行openstack的安装,然后在实际运行环境中进行代码的测试!)

  • 相关阅读:
    JavaScript闭包
    JavaScript的作用域与作用域链
    运动曲线提升CSS动画效果
    设计一个应用或网站时的流程
    JavaScript 与函数式编程
    声明式编程与命令式编程
    call(),apply()和bind()
    linux-xargs
    linux -shell
    linux-awk
  • 原文地址:https://www.cnblogs.com/littlebugfish/p/4135930.html
Copyright © 2020-2023  润新知