本文将介绍 Refstack 测试方法,该测试用于基于 OpenStack 的产品认证测试。它通过运行 OpenStack API 测试来验证供应商的 OpenStack 云产品的安装是否符合 OpenStack 社区定义的标准, 此标准是由 DefCore 制定的一些基本要求,包括能力、代码和必须通过的测试用例
  为什么需要 OpenStack 互操作性认证?
  OpenStack 为近来盛行的开放源码云计算系统,可用以部署公有云与私有云应用。不过,这些同样基于 OpenStack 的云端服务却不见得相容,或许更为糟糕的是,为其中某个云编写的应用无法在其他云上运行。为此,互操作性测试认证的推出是 OpenStack 愿景落地的重要步骤。通过互操作性测试认证,OpenStack 基金会向 OpenStack 生态圈的成员提出了一系列的要求,从而确保 OpenStack 市场中不同的产品和服务能够实现高水平的互操作性。对终用户而言,选择经过认证的云服务提供商,他们能够实现在不同 OpenStack 云计算之间的无成本的自由迁移。
  OpenStack 互操作性测试的内容
  DefCore(OpenStack CoreDefinition)是 OpenStack 董事会在 2014 年 11 月提出的一个项目,即认定厂商的部署为合法 OpenStack 的基本的功能。OpenStack 希望基于这一项目实现不同 OpenStack 商业解决方案之间的互操作性。OpenStack 的云计算运营商可以选择在其云计算部署许多其它部件,但它们都必须通过测试所需要的基本的功能。目前,基本的功能,包括计算和对象存储功能。 根据 OpenStack 官方网站显示,OpenStack 互操作性测试包括三项不同的官方许可程序,包含 OpenStack 软件的产品都可以申请运行这些程序,通过者可以获得“OpenStack Powered”官方标识。三项官方的许可程序分别是,OpenStack Powered Platform、OpenStack Powered Compute、OpenStack Powered Object Storage。其中,OpenStack Powered Platform 的测试结合了 OpenStack Powered Compute 和 OpenStack Powered Object Storage 的技术要求。
  互操作性测试工具 - Refstack
  Refstack 是一个工具集用于 OpenStack 云之间的互操作性测试。它由两部分组成:服务器和客户端。 Refstack 服务器通过 API 收集来自私有云和公有云供应商的互操作性的测试数据,使用 UI 展现用户上传的数据并查看前面提到的 DefCore 定义的基本功能的测试结果。 Refstack 客户端封装了 OpenStack Tempest 测试框架,将运行 Tempest API 测试,并会按照 Refstack API 的期望来格式化测试结果,将数据上传到 Refstack 服务器。


  图 1.Refstack 官方网站

  Refstack 官方网站
  Refstack 客户端安装
  refstack-client 可以被安装在 Ubuntu、Centos, RHEL 和 OpenSUSE 这些平台。安装步骤如下:
  □ 确保操作系统已经安装了 git 工具,如果没有,请先安装;
  □ 获取 refstack client;
  git clone https://github.com/stackforge/refstack-client
  □ 进入 refstack-client 目录;
  cd refstack-client
  □ 运行如下代码进行安装;
  ./setup_env
  云环境资源配置
  需要在待测云环境中创建如下资源用于测试:
  □ 用户:至少创建两个用户来自于不同的租户,例如名为 demo1、demo2 的用户和租户。
  □ 镜像:需要两个镜像的 id。推荐使用 cirros 镜像,这个镜像小而且可以提供你需要的所有功能。可以上传这个镜像两次来产生两个 id。
  □ 网络:创建一个共享网络可以被所有用户使用。
  □ 用户角色:创建一个非管理员的角色,并分配给所有的测试用户。
  □ 对象存储操作角色:如果要测试对象存储,需要创建一个角色可以用来创建 swift 的资源。
  Tempest 配置文件
  在运行 refstack-client 之前,需要针对你的云产品环境自定义一份 Tempest 配置文件,名字以及存放的位置任意,在此文当中假设文件命名为 tempest.conf。在文件默认配置的基础上关注如下配置:
  □ 使用两个不同的镜像 id 用来配置 image_ref 和 image_ref_alt。
  [compute]
  image_ref = 2eea58fe-6988-43f8-8183-da907c698211
  image_ref_alt = 05df5478-8204-4737-befa-455da64f2ba9
  □ 用户:配置三个用户,其中一个是管理员。
  [identity]
  admin_password = admin
  admin_tenant_name = admin
  admin_username = admin
  alt_password = demo2
  alt_tenant_name = demo2
  alt_username = demo2
  password = demo1
  tenant_name = demo1
  username = demo1