要将自己的测试主板添加到Fuego
,需要执行以下五个主要步骤:
ssh
,串口线或其他连接方式访问测试主板Jenkins
界面中的节点为了让Fuego
测试目标板子,它需要从Fuego
运行所在的主机与之通信。最常见的方法是通过网络连接ssh
访问。目标板需要运行ssh
服务器,主机使用ssh
客户端连接至它。
在主板上设置ssh
服务器的方法因系统而异,但此处提供了在树莓派上设置 ssh
服务器的示例说明:Raspberry Pi Fuego设置
另一种可行的方法是在主机和主板的串行控制台之间使用串口线连接。如何进行设置超出了当前文档的范围,但是Fuego
使用serio
包来完成此操作。
在目标板上,需要一个用户帐户才能运行测试。
Fuego
使用的用户帐户由你的电路板文件确定,你将在第4步中手动配置该文件。你需要确定要使用哪个帐户。共有三个选项:
root
帐户我个人的喜好是使用root
帐户。Fuego
中的一些测试需要root
特权。如果你使用的是测试板,则可以轻松地重新安装,使用root
帐户可以运行最多数量的测试。但是,不应将其用于测试生产中的机器。Fuego
测试可以运行各种命令,你不应该相信测试不会破坏你的计算机(无论是偶然还是出于某种恶意)。
如果你不使用root
,则可以使用现有帐户,也可以创建一个新帐户。在大多数情况下,值得创建一个专用于测试的新帐户。但是,你可能没有足够的权限来执行此操作。
无论如何,此时,请确定你将使用哪个帐户进行Fuego
测试,并注意将其包括在板文件中,稍后将进行介绍。
首先,登录到目标板,并创建一个可以运行测试的目录。通常,你以root
身份执行此操作,并且此操作的常用目录是/home/fuego
。为此,请执行以下操作:
对于具有网络连接的目标:
$ ssh root@your_target
<target>$ mkdir /home/fuego
<target>$ exit
对于具有串行连接的目标:
使用minicom
或任何其他串行终端工具。输入用户名和密码登录到目标。创建目录fuego
,如下所示:
<target>$ mkdir /home/fuego
现在,创建你的电路板文件。板文件位于<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_PORT
是ssh
守护程序用来监听连接的端口。默认情况下,此值为22,但你可将其设置为目标板使用的任何值。SSH_KEY
是可以在其中找到SSH
密钥文件的绝对路径(以允许无密码访问目标计算机)。一个例子是:
SSH_KEY="/fuego-ro/boards/myboard_id_rsa"
SSH_PORT
和SSH_KEY
是可选的。
对于使用串行的目标:
SERIAL
BAUD
IO_TIME_SERIAL
SERIAL
是用于从主机访问目标的串行端口名称。这是主机上(或容器中)的串行设备节点的名称。指定时不带/dev/
前缀。一些例子是:
ttyACM0
ttyACM1
ttyUSB0
BAUD
是用于串行通信的波特率,例如115200
。
IO_TIME_SERIAL
是从目标捕获命令响应所需的时间。指定为秒的十进制分数,通常很短。通常有效的时间是“0.1”秒。
IO_TIME_SERIAL="0.1"
注意:如果是TRANSPORT="serial"
,请确保docker
容器和Fuego
具有足够的权限来访问指定的串行端口。你可能需要在制作Docker
映像之前先修改docker-create-usb-privileged-container.sh
,以确保容器可以访问端口。另外,如果检查设备节点上的主机文件系统权限(例如/dev/ttyACM0
允许访问。),你可以从容器内部尝试直接使用sersh
或sercp
命令来测试对目标的访问。
对于使用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
样式的系统日志记录的“标准”分发。它应该具有以下命令:logread
,logger
和/var/log/messages
nologread.dist
-没有'logread'
命令的发行版,但是具有/var/log/messages
nosyslogd.dist
-没有syslogd
样式的系统日志记录的发行版。如果未指定DISTRIB
,则Fuego
将默认使用nosyslogd.dist
。
BOARD_CONTROL
变量指定用于控制板卡硬件操作的系统的名称。当Fuego
与电路板控制硬件结合使用时,它可以自动执行更多测试功能。具体来说,它可以根据测试需要重新启动板,或重新配置板。从1.3
版本开始,Fuego
仅支持ttc
板控制系统。随着时间的推移,将引入并支持其他板控制系统。
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
见变量,这些变量的定义和使用。
SATA
,USB
,MMC
)如果正在运行文件系统测试,则需要声明要测试的文件系统的Linux
设备名称和安装点路径。根据您选择的测试计划,可以使用三种不同的设备/挂载点选项(SATA
,USB
或MMC
)。您的开发板可能具有所有这些类型的存储,或者只有一种。
要准备在sata
设备上的文件系统上运行测试,请为您的主板定义SATA
设备和安装点变量。
例如,如果您的SATA
设备具有在设备/dev/sdb1
上可访问的可挂载文件系统,并且在/mnt/sata
目标上具有可用于挂载该设备的目录,则可以声明以下变量在您的板文件中。
USB
的文件系统或基于MMC
的文件系统定义名称相似的变量(USB_DEV
和USB_MP
或MMC_DEV
和MMC_MP
)。LTP
测试变量LTP
(Linux
测试项目)测试套件是大量测试的集合,由于套件的复杂性和多样性,它们需要一些专门的处理。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。