一、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的安装,然后在实际运行环境中进行代码的测试!)

openstack开发环境与代码测试的更多相关文章

  1. DevStack部署OpenStack开发环境 - 问题总结

    建议在使用DevStack搭建OpenStack开发环境前,先安装好开发工具包组.特别是gcc,主要一定是在yum update -y 之前,否则更新完系统后,在安装开发工具包会出现很多依赖包因为版本 ...

  2. Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试

    由于最近需要使用OpenCV,本人需要在自己的PC上使用OpenCV,因此最近一直在研究如何使用Visual Studio编译OpenCV源代码并搭建开发环境,折腾了很长时间,查阅了很多相关资料,终于 ...

  3. 使用开源my-deploy工具实现开发环境的代码自动化部署

    @编者按: 由于公司内部存在的开发系统:内网开发--外网预发布--外网生产环境,程序员频繁的更新代码造成运维人员大量时间被占用,于是有了使用该开源工具的部署测试环节.在这里感谢该开源工具的作者,也希望 ...

  4. 最新 obs-studio vs2019 开发环境搭建 代码编译

    距离上一篇文章很久了,重新开始记录 OBS 开发相关情况,第一步就是环境搭建,第二步是构建 OBS-Studio VS 2019 开发环境搭建 下载软件和资源 软件安装没有特别说明的,下载安装即可. ...

  5. ae(ArcEngine) java swing开发入门系列(1):开发环境和代码部署

    前言:做ae开发大部分人都是用C#版,很少用到java版,本系列文章主要介绍java版ae开发的入门,对于ae接口的高级应用,可以看C#版相关文章 开发环境软件: Intellij IDEA 2018 ...

  6. .NET Core windows开发环境 + Git代码控管 + Docker 部署环境搭建

    开发环境准备 下载vs code,.NET Core sdk: https://www.microsoft.com/net/core#windowscmd 目前最新版为code 1.8.1,.NET ...

  7. 1、搭建springMVC开发环境以及HelloWorld测试

    一.下载spring-framework,采用简单的方式: http://repo.springsource.org/libs-release-local/org/springframework/sp ...

  8. XE10 塔建 Android 开发环境 (已测试通过)

    XE10 塔建 Android 开发环境 1. E:\DevCSS\Android\adt-bundle-windows-x86-20131030\adt-bundle-windows-x86-201 ...

  9. 内部开发环境 git代码托管说明

    前言 随着员工的增加 代码的开发版本管理 提上了日程.初步计划: 1 一台机器 192.168.1.240 git代码版本管理 2 运行环境 192.168.1.241 内部开发运行环境 软件工程师 ...

随机推荐

  1. Java大数——快速矩阵幂

    Java大数——快速矩阵幂 今天做了一道水题,尽管是水题,但是也没做出来.最后问了一下ChenJ大佬,才慢慢的改对,生无可恋了.... 题目描述: 给a,b,c三个数字,求a的b次幂对c取余. 数据范 ...

  2. Scrum团队 《构建之法》第6~7章

    Scrum团队成立 团队名称: 22# 团队目标:做好每次布置的任务 还有提升自己 团队口号:做好现在,展望未来 团队成员:陈楷淇,张裕发,陈泽展,彭一建 角色分配 产品负责人(决定开发内容和优先级排 ...

  3. Selenium_IDE的基本使用及脚本解析

    Selenium确实还是很强大的.根据我以往的经验,这个东西在web测试里的作用还是相当大的.经过近期研究,暂时对基本运作方式有了一定了 解,依旧找个实例记录一下.本段脚本实现的是网易返现个人中心登录 ...

  4. build.xml

    下载ant 解压ant 后设置ANT_HOME, PATH中添加ANT_HOME目录下的bin目录(如:ANT_HOME:,PATH:D:\apache-ant-1.9.2%ANT_HOME%\bin ...

  5. PHP中define和defined的区别

    PHP中define和defined的区别 对于初学者会混淆这两个函数 1.define用来定义一个常量,常量也是全局范围的.不用管作用域就可以在脚本的任何地方访问 常量.一个常量一旦被定义,就不能再 ...

  6. [学习]仿照cnblog 搭建 Oracle RAC 双节点 困.. 后续做不下去了..

    1. 学习地址: https://blog.csdn.net/yuzifen?t=1 2. 克隆之前创建好的虚拟机: 3. 给虚拟机增加新的硬盘. 注意事项 1) 必须是厚置备的磁盘才可以. 2) 必 ...

  7. Android Service执行unbind后再次执行bind的问题

    在执行了startService.bindService.unbindService之后,再次执行bindService.这时发现Service的onBind方法并没有执行,而是执行的onRebind ...

  8. how to disabled iframe page open new window / new tab

    how to disabled iframe page open new window / new tab 禁用 iframe 中的页面打开新页面 <!DOCTYPE html> < ...

  9. MySQL命令行导入.sql文件遇到的问题

    导入.sql文件的命令行只有一句.但因为.sql文件大,在把本地的.sql文件导入到阿里云服务器的MySQL数据库时遇到了两个问题导入.sql文件的命令(假设数据库名为mydb,用户名root,密码1 ...

  10. 【Java并发编程】之十一:线程间通信中notify通知的遗漏

    notify通知的遗漏很容易理解,即threadA还没开始wait的时候,threadB已经notify了,这样,threadB通知是没有任何响应的,当threadB退出synchronized代码块 ...