使用Apama的Pysys - 如何在将事件与参考进行比较时仅对某些参数进行验证?

时间:2015-09-23 13:06:09

标签: python apama pysys

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

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

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

并期待

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

然后我想只比较参数1和3,目前可能来自apama / pysys框架吗?

以及更进一步,与日志文件比较时可能具有相同的功能吗?

1 个答案:

答案 0 :(得分: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)

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