嵌入式自动化测试框架Fuego:添加一个测试主板

周翼
2023-12-01

概述:

要将自己的测试主板添加到Fuego,需要执行以下五个主要步骤:

  • 确保可以通过ssh,串口线或其他连接方式访问测试主板
  • 确定是使用现有的用户帐户,还是创建专门用于测试的用户帐户
  • 在目标板上创建测试目录
  • 创建一个板文件(在主机上)
  • 将你的板添加为Jenkins界面中的节点

1-设置与目标板的通信

为了让Fuego测试目标板子,它需要从Fuego运行所在的主机与之通信。最常见的方法是通过网络连接ssh访问。目标板需要运行ssh服务器,主机使用ssh客户端连接至它。
在主板上设置ssh服务器的方法因系统而异,但此处提供了在树莓派上设置 ssh服务器的示例说明:Raspberry Pi Fuego设置
另一种可行的方法是在主机和主板的串行控制台之间使用串口线连接。如何进行设置超出了当前文档的范围,但是Fuego使用serio包来完成此操作。

2-确定要测试的用户帐户(如果需要,请创建一个)

在目标板上,需要一个用户帐户才能运行测试。
Fuego使用的用户帐户由你的电路板文件确定,你将在第4步中手动配置该文件。你需要确定要使用哪个帐户。共有三个选项:

  • 使用root帐户
  • 使用现有帐户
  • 使用专门用于测试的新帐户
    每种方法都各有利弊。

我个人的喜好是使用root帐户。Fuego中的一些测试需要root特权。如果你使用的是测试板,则可以轻松地重新安装,使用root帐户可以运行最多数量的测试。但是,不应将其用于测试生产中的机器。Fuego测试可以运行各种命令,你不应该相信测试不会破坏你的计算机(无论是偶然还是出于某种恶意)。

如果你不使用root,则可以使用现有帐户,也可以创建一个新帐户。在大多数情况下,值得创建一个专用于测试的新帐户。但是,你可能没有足够的权限来执行此操作。

无论如何,此时,请确定你将使用哪个帐户进行Fuego测试,并注意将其包括在板文件中,稍后将进行介绍。

3-在目标板上创建测试目录

首先,登录到目标板,并创建一个可以运行测试的目录。通常,你以root身份执行此操作,并且此操作的常用目录是/home/fuego。为此,请执行以下操作:
对于具有网络连接的目标:

 $ ssh root@your_target
 <target>$ mkdir /home/fuego
 <target>$ exit

对于具有串行连接的目标:

使用minicom或任何其他串行终端工具。输入用户名和密码登录到目标。创建目录fuego,如下所示:

<target>$ mkdir /home/fuego

4-创建板文件

现在,创建你的电路板文件。板文件位于<fuego-source-dir>/fuego-ro/boards中,每个文件都有一个文件名,带有文件名,扩展名为.board
创建电路板文件的最简单方法是复制现有文件,然后编辑变量以使其与电路板匹配。以下说明适用于具有网络访问权限,在目标上运行的ssh守护程序以及ARM体系结构的名为myboard的板。

请执行下列操作:

 $ cd fuego-ro/boards
 $ cp template-dev.board myboard.board
 $ vi myboard.board

修改板级参数

电路板文件中的参数定义了Fuego如何与您的电路板进行交互。有很多不同的参数,但快速入门(也是最常用的修改)最重要的是:

传输参数

每个板子都需要指定Fuego将如何与其通信。通过指定TRANSPORT和与该传输类型关联的一些变量来完成此操作。

  • TRANSPORT-指定与目标一起使用的运输方式
    • 当前支持三种传输类型:“ssh”,“serial”,“ttc
    • 大多数板将使用“ssh”或“serial”传输类型
    • 例如:TRANSPORT="ssh"

大多数目标需要满足以下条件:

  • LOGIN-指定用于Fuego操作的用户帐户
  • PASSWORD-指定该帐户的密码(如果有)

有一些特定于个别传输的参数
对于使用ssh的目标:

  • IPADDR
  • SSH_PORT
  • SSH_KEY

IPADDR是主板的网络地址。SSH_PORTssh守护程序用来监听连接的端口。默认情况下,此值为22,但你可将其设置为目标板使用的任何值。SSH_KEY是可以在其中找到SSH密钥文件的绝对路径(以允许无密码访问目标计算机)。一个例子是:

  • SSH_KEY="/fuego-ro/boards/myboard_id_rsa"

SSH_PORTSSH_KEY是可选的。
对于使用串行的目标:

  • SERIAL
  • BAUD
  • IO_TIME_SERIAL

SERIAL是用于从主机访问目标的串行端口名称。这是主机上(或容器中)的串行设备节点的名称。指定时不带/dev/前缀。一些例子是:

  • ttyACM0
  • ttyACM1
  • ttyUSB0

BAUD是用于串行通信的波特率,例如115200

IO_TIME_SERIAL是从目标捕获命令响应所需的时间。指定为秒的十进制分数,通常很短。通常有效的时间是“0.1”秒。

  • 例如: IO_TIME_SERIAL="0.1"
    该值直接影响串行端口上的操作速度,因此应谨慎调整。但是,如果你发现某些操作无法通过串行端口进行操作,请尝试增加此值(以较小的增量-0.15、0.2等)。

注意:如果是TRANSPORT="serial",请确保docker容器和Fuego具有足够的权限来访问指定的串行端口。你可能需要在制作Docker映像之前先修改docker-create-usb-privileged-container.sh,以确保容器可以访问端口。另外,如果检查设备节点上的主机文件系统权限(例如/dev/ttyACM0允许访问。),你可以从容器内部尝试直接使用sershsercp命令来测试对目标的访问。

对于使用ttc的目标:

  • TTC_TARGET
    TTC_TARGET是与'ttc'命令一起使用的目标的名称。

其他参数

  • BOARD_TESTDIR
  • ARCHITECTURE
  • TOOLCHAIN
  • DISTRIB
  • BOARD_CONTROL

BOARD_TESTDIR目录是运行Fuego测试的目标板上文件系统中的绝对路径。通常,它设置为/home/fuego之类的东西,但是您可以将其设置为任何东西。您为LOGIN指定的用户应具有对该目录的访问权限。

ARCHITECTURE是描述工具链用来为目标构建测试的体系结构的字符串。

TOOLCHAIN变量指示用于构建目标测试的工具链。如果使用的是ARM目标,请将其设置为qemu-armv7hf。这是安装在docker容器中的默认ARM工具链,适用于大多数ARM板。

如果您不使用ARM,或者由于某种原因,预安装的arm工具链不适用于您板上安装的Linux发行版,那么您将需要安装自己的SDK或工具链。在这种情况下,请按照添加工具链中的步骤进行操作,然后返回到此步骤,并将TOOLCHAIN变量设置为用于该操作的名称。

有关电路板文件中的其他变量,请参见以下部分。

DISTRIB变量指定Fuego使用的板上运行的Linux发行版的属性。目前,这主要用于告诉Fuego主板上的操作系统是哪种系统记录程序。以下是一些可用的选项:

  • base.dist-实现syslogd样式的系统日志记录的“标准”分发。它应该具有以下命令:logreadlogger/var/log/messages
  • nologread.dist-没有'logread'命令的发行版,但是具有/var/log/messages
  • nosyslogd.dist-没有syslogd样式的系统日志记录的发行版。

如果未指定DISTRIB,则Fuego将默认使用nosyslogd.dist

BOARD_CONTROL变量指定用于控制板卡硬件操作的系统的名称。当Fuego与电路板控制硬件结合使用时,它可以自动执行更多测试功能。具体来说,它可以根据测试需要重新启动板,或重新配置板。从1.3版本开始,Fuego仅支持ttc板控制系统。随着时间的推移,将引入并支持其他板控制系统。

5-将节点添加到Jenkins界面

最后,在Jenkins界面中添加板。
Jenkins界面中,板被称为“节点”。

您可以查看Fuego知道的有关使用的板子的列表:

$ ftc list-boards

您可以使用以下命令查看已在Jenkins中安装的节点:

$ ftc list-nodes

要在Docker容器内实际将板添加为jenkins中的节点,请在shell提示符下运行以下命令:

$ ftc add-nodes -b <board_name>

特定于电路板的测试变量

以下其他变量也可以在电路板文件中定义:

  • MAX_REBOOT_RETRIES
  • FUEGO_TARGET_TMP
  • FUEGO_BUILD_FLAGS

变量,这些变量的定义和使用。

常规变量

文件系统测试变量(SATAUSBMMC

如果正在运行文件系统测试,则需要声明要测试的文件系统的Linux设备名称和安装点路径。根据您选择的测试计划,可以使用三种不同的设备/挂载点选项(SATAUSBMMC)。您的开发板可能具有所有这些类型的存储,或者只有一种。
要准备在sata设备上的文件系统上运行测试,请为您的主板定义SATA设备和安装点变量。

例如,如果您的SATA设备具有在设备/dev/sdb1上可访问的可挂载文件系统,并且在/mnt/sata目标上具有可用于挂载该设备的目录,则可以声明以下变量在您的板文件中。

  • SATA_DEV="/dev/sdb1"
  • SATA_MP="/mnt/sata"
    您可以为基于USB的文件系统或基于MMC的文件系统定义名称相似的变量(USB_DEVUSB_MPMMC_DEVMMC_MP)。

LTP测试变量

LTPLinux测试项目)测试套件是大量测试的集合,由于套件的复杂性和多样性,它们需要一些专门的处理。LTP有大量测试,其中一些测试可能无法在您的板上正确运行。一些LTP测试取决于内核配置或Linux发行版或配置的各个方面。
您可以通过指示期望对电路板进行正面和负面测试的次数来控制LTP posix测试是否成功。这些数字在电路板文件中的测试变量中指示:

  • LTP_OPEN_POSIX_SUBTEST_COUNT_POS
  • LTP_OPEN_POSIX_SUBTEST_COUNT_NEG

您应该自己运行一次LTP测试,以查看基线值,然后将其设置为板的正确值(配置和设置)。
然后,Fuego将报告与您接受的数字之间的任何偏差,以便在您的板上进行LTP测试。
LTP也可以使用在电路板文件中定义的以下其他测试变量:

  • FUNCTIONAL_LTP_HOMEDIR-如果设置此变量,则它指示板的文件系统中LTP的预安装版本所在的位置。这可以避免在每次执行LTP时花费很长时间。
  • FUNCTIONAL_LTP_BOARD_SKIPLIST-此变量具有要跳过的各个LTP测试程序的列表。

有关LTP测试以及它使用的测试变量的更多信息,请参见Functional.LTP

 类似资料: