Pysys with Apama -如何在比较事件和引用时仅对某些参数进行验证



与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扩展中没有基于事件的解析器;您需要使用正则表达式来验证任何输出日志。

最新更新