这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 tesh,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
tesh - 测试外壳
概要
网格 [OPTION]……[文件] ...
商品描述
这是 TESH 工具。 它构成了一个测试外壳,即一种专门用于
运行测试。 要采取的操作列表是从名为 testsuite 的文件中解析出来的。
配置
--cd some/directory : 之前要求tesh切换工作目录
启动测试
--setenv var=value : 设置一个特定的环境变量
--cfg arg : 将参数 --cfg=arg 添加到每个命令行
--enable-coverage :忽略以“分析:”开头的输出行
TESH 文件 句法
以下是这些文件的语法:
每行的种类由第一个字符给出(第二个字符应该是空白的,并且是
忽略):
`$' 命令在前台运行
`&'命令在后台运行
`<' 输入传递给命令
`>' 命令的预期输出
'! 元命令,可以是以下之一:
‘超时’ |没有
‘期待信号’
‘期待回报’
‘输出’
`setenv = '
`p' 一个要打印的字符串
`P' 一个要在 CRITICAL 级别打印的字符串(方便记录 grepping)
如果预期输出与命令吐出的不匹配,TESH 将产生错误
显示差异(参见下面的输出)。
IO 订单
< 和 > 行将 IO 添加到当前块中定义的命令中(块分隔
由空行)。 可以将这些行放在命令之后或之前。
以下两个块之间的区别主要是在您的测试套件中,
TESH 不在乎。 (参见 IO-orders.tesh)
$猫
< 多多
> 多多
> 多多
$猫
< 多多
尽管如此,在同一个块中可以有多个命令,但没有一个
可以有任何输出。 它可能看起来有点限制,因为可以说命令得到
直到下一个命令的所有 IO,但我害怕出现如下错误:
$ cd 多多
> 多多
$ mkfile 文件
TOTO 将被传递给 cd 命令,在那里用户显然想将它传递给
mkfile 内置命令(见下文)。
流 重定向
流重定向(“>”、“<”和“|”结构在 sh 中)尚未在 tesh 中实现。
这有点限制,但好吧,补丁欢迎......
主要出现问题的情况是创建一个临时文件。 这
解决方案是使用“mkfile”内置命令,如下例所示: $ mkfile
myFile > 一些内容 > 到文件
这将创建一个名为 myFile 的文件(mkfile 命令的第一个参数)。 其内容
将是提供给命令的所有输入。
返回 守则
当孩子不返回 0 作为返回代码时,TESH 会吐出适当的错误消息(参见
catch-return.tesh),并返回代码+40 本身。
还可以指定给定命令必须返回另一个值。 为了这,
使用“expect return”元命令,它接受一个整数作为参数。 变化而已
应用于下一个命令(参见 set-return.tesh)。
讯号
TESH 检测孩子何时被信号杀死(如段错误),并吐出一个
适当的错误消息(参见 catch-signal.tesh)。
也可以指定一个给定的命令必须发出一个给定的信号。 为了这,
使用“预期信号”元命令。 它将信号名称作为参数。 变化而已
应用于下一个命令(参见 set-signal.tesh)。
超时
默认情况下,所有命令都有 5 秒的执行时间(参见 catch-timeout.tesh)。 你可以
使用“超时”来更改它,它以整数作为参数。 更改仅适用
到下一个命令(参见 set-timeout.tesh)。 如果将“no”作为参数传递,则命令
不能超时。
OUTPUT
默认情况下,命令输出与预期匹配,错误是
提出的差异。 改变这一点的元命令:
“输出忽略”-> 输出完全丢弃
“输出显示”-> 显示输出(但未验证)
“输出排序”-> 在验证之前对显示进行排序(见下文)
排序 OUTPUT
对输出进行排序似乎是一个奇怪的想法,但它在 SimGrid 中是强制性的,因为
进程在任何调度点都无序运行(即,每个进程准备在
模拟时间 t 并行运行)。 为了确保模拟器输出仍然匹配,我们
在比较之前必须对输出进行排序。
我们希望模拟器使用该日志格式参数运行:
--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n 然后,tesh 在前 19 个字符上对字符串进行排序
仅当行开始相等时稳定。 这应确保:
(1) tesh有效(无假阳性,无假阴性)
(2)调度点相互分离
(3)在每个调度点,进程相互分离
(4) 给定进程在给定调度中所说的顺序
点被保留。
这当然是非常面向 SimGrid 的,打破了 tesh 的一般性,但谁在乎,
其实?
如果要更改用于排序的前缀的长度,只需在后面指定它
输出排序指令,如下所示:
! 输出排序 22
环境
您可以使用 setenv 元命令向测试的进程环境添加一些内容。
它按预期工作。 例如:
“设置环境路径=/箱"
使用 onworks.net 服务在线使用 tesh