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

Python Pysys with Apama-在将事件与引用进行比较时,如何仅对某些参数进行验证?,python,apama,pysys,Python,Apama,Pysys,Apama安装中有许多示例,但是我无法确定您是否只能比较某个事件中的某些参数,而不能比较整个事件 例如,如果捕获以下内容: com.eventA("abc",1234,true) 期待 com.eventA("abc",*,true) 然后,我只想比较参数1和3,这在apama/pysys框架中是可能的吗 此外,与日志文件相比,是否可以使用相同的功能?您可能最好使用assertOrderedGrep来实现这一点。此验证例程允许您建立一组有序正则表达式,这些正则表达式在输出文件中搜索,并且必须

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

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

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

com.eventA("abc",*,true)
然后,我只想比较参数1和3,这在apama/pysys框架中是可能的吗


此外,与日志文件相比,是否可以使用相同的功能?

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

可以使用表格验证来执行

def validate(self):
    exprList=[]
    exprList.append('com.eventA\("abc",.*,true\)')
    exprList.append('com.eventA\("abc",.*,false\)')
    self.assertOrderedGrep('output.log', exprList=exprList)
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)
exprList中使用的字符串是标准正则表达式,因此需要转义特殊字符,如括号

如果要使用参考文件使用assertDiff,则可以替换正在验证的输出文件和参考文件中的令牌,但这也是基于正则表达式的。例如,您可以有一个表单的参考文件

def validate(self):
    exprList=[]
    exprList.append('com.eventA\("abc",.*,true\)')
    exprList.append('com.eventA\("abc",.*,false\)')
    self.assertOrderedGrep('output.log', exprList=exprList)
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)
然后用空白字符串替换所有出现的“,*”,以便正确区分。然后,验证将采用以下形式:

def validate(self):
    exprList=[]
    exprList.append('com.eventA\("abc",.*,true\)')
    exprList.append('com.eventA\("abc",.*,false\)')
    self.assertOrderedGrep('output.log', exprList=exprList)
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扩展中没有基于事件的解析器;您需要使用正则表达式来验证任何输出日志

你好,马里。谢谢你的回答。我可以在简单事件中看到这种方法,但是当事件包含字典和多维度列表时,它们可能很快变得相当麻烦。谢谢你的澄清。@StefanE嗨Stefan-是的,我明白了。Apama扩展中没有事件解析器。。。一种方法是连接另一个相关器来接收输出,编写一些监视器来监听感兴趣的事件,提取感兴趣的字段并发送到另一个接收器。。。这是一个解决方法,但肯定很容易(使用correlator helper类上的connect()方法将两个相关器连接在一起)。注意:您可以从相关器中发出字符串,因此可以根据需要格式化提取的字段。