与Apama安装一起存在许多示例,但是我无法确定您是否只能比较事件中的某些参数,而不能比较整个事件。
例如:
com.eventA("abc",1234,true)
和期待
com.eventA("abc",*,true)
那么我想只比较参数1和3,这是目前可能从apama/pysys框架吗?
等,当与日志文件比较时,是否可能具有相同的功能?
您可能最好使用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扩展中没有基于事件的解析器;您需要使用正则表达式来验证任何输出日志。