2

与 Apama 安装一起存在许多示例,但是我无法确定您是否只能比较事件中的某些参数,而不是整个事件。

例如,如果捕获以下内容:

com.eventA("abc",1234,true)

并期待

com.eventA("abc",*,true)

然后我只想比较参数 1 和 3,目前是否可以从 apama/pysys 框架中进行比较?

更进一步,与日志文件比较时是否可以使用相同的功能?

4

1 回答 1

2

您可能最好使用 assertOrderedGrep 来执行此操作。此验证例程允许您构建一组有序的正则表达式,这些正则表达式在输出文件中进行搜索,并且必须按照指定的顺序出现。例如,对以下捕获的输出的断言(我们称之为 output.log);

com.eventA("abc",1234,true)
com.eventA("def",1234,false)
com.eventA("abc",1234,false)

可以使用表单验证来执行;

def validate(self):
    exprList=[]
    exprList.append('com.eventA\("abc",.*,true\)')
    exprList.append('com.eventA\("abc",.*,false\)')
    self.assertOrderedGrep('output.log', exprList=exprList)

exprList 中使用的字符串是标准的正则表达式,因此您需要对特殊字符进行转义,例如括号。

如果您打算在参考文件中使用 assertDiff,则可以在正在验证的输出文件和参考文件中替换标记,但这同样是基于正则表达式。对于您的示例,您可以有一个表格的参考文件;

com.eventA("abc",1234,true)
com.eventA("def",4567,false)
com.eventA("abc",1234,false)

然后用空白字符串替换所有出现的“,。*”,以便正确区分。验证将采用以下形式;

    replace=((',.*,',''),)
    self.assertDiff(file1='output.log', file2='reference.log', replace=replace)

有关更多详细信息,请参阅 assertDiff 方法的 pydoc。需要注意的主要一点是,在基于事件的 apama 扩展中没有每个 say 的解析器;您需要使用正则表达式来验证任何输出日志。

于 2015-09-23T14:33:05.593 回答