Pysys 与 Apama - 在将事件与参考进行比较时如何仅对某些参数进行验证?
Pysys with Apama - How to validate only on certain parameters when comparing events with reference?
安装 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 扩展中,每个 say 都没有解析器;您需要使用正则表达式来验证任何输出日志。
安装 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 扩展中,每个 say 都没有解析器;您需要使用正则表达式来验证任何输出日志。