本地开发

本地开发环境搭建

e2edev开发/测试环境介绍

e2edev(End to end Horizon developer test)是用来给Open Horizon开发人员测试X86设备和X86 Agbot, 因此也叫End to End test。

此开发环境会创建3个容器:

  • exchange-db :用于exchange-api的postgres容器
  • exchange-api :从openhorizon/amd64_exchange-api:latest中pull的exchange-api容器
  • agbot :最初是从openhorizon/anax源构建的运行anax (Horizon Agent控制系统)的容器。除非另有说明, 否则将使用源的本地副本,并且根据选择的PATTERN创建一系列工作负载容器。

虚拟机(VM)环境准备

建议您准备符合以下要求的虚拟机(VM):

  • 大于等于4GB内存
  • 至少20GB储存空间
  • Ubuntu Server 18.04 LTS

构建和运行

一步一步设置您的环境

安装docker:

curl https://get.docker.com/ | sh

安装make和jq:

apt update && apt install -y make jq build-essential

安装golang版本1.14.*:

curl https://dl.google.com/go/go1.14.linux-amd64.tar.gz | tar -xzf- -C /usr/local/
export PATH=$PATH:/usr/local/go/bin (and modify your ~/.bashrc file with the same)

配置GOPATH和ANAX_SOURCE路径,注意无法将GOPATH设置为与GOROOT相同的路径:

export GOPATH=</your/go/path> (typically $HOME/go)
export ANAX_SOURCE=</path/to/anax>

设置单个节点microk8s进行测试, 注意要通过1.18 channel安装microk8s。另请参阅https://microk8s.io/docs/setting-snap-channel升级microk8s:

sudo snap install microk8s --classic --channel=1.18/stable

克隆anax的git仓库:

git clone git@github.com:open-horizon/anax.git

构建anax二进制文件和agbot基本镜像,并提取exchange组件镜像:

(cd .. && make)

构建e2edev Docker镜像

make

开发迭代-基本操作

这是最全面的“基本”测试:

  • 它会创建agbot,Exchange-db和exchange-api容器,并复制所有anax / exchange配置和二进制文件。
  • 它将生成协议(agreement)并运行所有工作负载,确认已通过的协议,保留协议,成功取消协议并重新制定协议。
  • 它每次运行都是基于一个全新的环境
    make test
    

开发迭代-高级操作

您可以在make run-combined命令上指定几个环境变量,以决定e2edev环境中运行的测试用例。 在开发过程中运行环境的常见方法是:

make test TEST_VARS="NOLOOP=1 PATTERN=sloc"

轻量级测试:

make test TEST_VARS="NOLOOP=1 NOCANCEL=1 NOHZNREG=1 NORETRY=1 NOSVC_CONFIGSTATE=1 NOSURFERR=1 NOUPGRADE=1 NOPATTERNCHANGE=1 NOCOMPCHECK=1"

以下是所有测试变量的完整说明:

参数 说明
NOLOOP = 1 每10分钟关闭取消设备和agbot(交替)协议的循环。通常,在主动迭代代码时,您需要指定NOLOOP = 1。
NOCANCEL = 1 当设置为NOLOOP = 1时,仅对协议形成感兴趣时,跳过单轮取消测试,以减少日志混乱和时间。
UNCONFIG = 1 打开unconfig/reconfig循环测试。
PATTERN = name 指定您希望设备使用的配置模式的名称。内置模式为spws,sns,sloc,sgps,sall,cpu2msghub等。 如果指定PATTERN,但关闭了最重要服务所需的从属服务之一,则系统将无法正常工作。如果您未指定PATTERN,则将使用手动管理的策略文件来运行工作负载(除非您将其关闭)。
NOHZNREG = 1 使用hzn命令关闭用于注册/注销节点的测试。
NORETRY = 1 关闭服务重试测试。
NOSVC_CONFIGSTATE = 1 关闭服务配置状态测试。
NOSURFERR = 1 关闭节点表面错误测试。
NOUPGRADE = 1 关闭服务升级/降级测试。
NOPATTERNCHANGE = 1 关闭节点模式更改测试。
NOCOMPCHECK = 1 关闭策略兼容性测试。
NOSDO = 1 关闭SDO测试。
NONS = 1 不注册netspeed服务。
NOGPS = 1 不注册gpstest服务。
NOLOC = 1 不注册位置服务。
NOPWS = 1 不注册天气服务。这是迭代代码时要运行的一个很好的工作负载,因为它简单可靠,不会妨碍您的工作。
NOK8S = 1 不注册k8s-service1。
NOANAX = 1 anax已启动以进行API测试,但随后停止了,并且没有重新启动以运行工作负载。
NOAGBOT = 1 永远不会启动agbot。
HA = 1 将2台设备(和工作负载服务)注册为HA对。您将在容器中获得2个anax设备进程。
OLD_ANAX = 1 根据github中的当前提交运行anax设备,即在您进行更改之前运行该设备。这对于新agbot与先前设备的兼容性测试非常有用。
OLD_AGBOT = 1 在进行更改之前,基于github中的当前提交运行agbot,即agbot。这对于新设备与以前的agbot的兼容性测试很有帮助。

调试相关信息

进入agbot容器

docker exec -it agbot /bin/bash
  • 所有日志文件都位于agbot容器的/tmp目录下。 /tmp/anax.log用于记录设备有关日志,/tmp/agbot.log用于记录agbot相关日志。
  • 重要数据文件和脚本位于/root/,/root/.colonus/root/eth
  • 配置文件在/etc

在容器外

从设备的角度查看所有当前和已存档的协议(agreement):

curl http://localhost/agreement | jq -r '.agreements'

从agbot的角度向您显示所有当前和已存档的协议

curl http://localhost:81/agreement | jq -r '.agreements'

访问位于http://localhost:8080/v1的Exchange API文档

Clean选项/开发人员流程

删除工作负载,agbot/exchange-api/db容器,exchange中的所有数据以及所有过时的配置/脚本...所有在make test中自动运行的文件使用:

make clean

make clean一样删除所有内容并删除anax二进制文件(用于更改anax)

make mostlyclean

完成上述所有操作且删除agbot和exchange基本镜像,docker测试网络以及所有闲置的docker镜像\ 注意:这是唯一需要重新运行make的"clean"命令

make realclean

远程环境测试

TBD

results matching ""

    No results matching ""