当前位置: 首页 > 知识库问答 >
问题:

在spock测试期间未从f5跌落恢复

郎睿
2023-03-14

有没有人创建过针对f5断开连接的成功Spock测试?

在我的f5规则中,如果满足一种情况--比方说一个坏的cookie,我就会断开连接

if { [HTTP::cookie exists "badCookie"] } {
  if { not ([HTTP::cookie "badCookie"] matches_regex {^([A-Z0-9_\s]+)$}) } {
    drop
  }
}

在浏览器中手动测试,会导致缓慢但最终的超时,时间限制取决于浏览器。但是,我想将我的测试并入我们的Spock函数测试库,而不是针对f5规则的手动测试。

[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 0.50 seconds.
[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 1.00 seconds.
[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 2.00 seconds.
[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 4.00 seconds.
[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 8.00 seconds.
[spock.lang.Timeout] Method 'abc' has not yet returned - interrupting. Next try in 16.00 seconds.

使用http://fbflex.wordpress.com/2010/08/25/geb-and-grails-tips-ticks-and-gotchas/或https://github.com/hexacta/weet/blob/master/weet/src/groovy/com/hexacta/weet/pages/ajaxpage中的waitFor方法也没有使用5秒的规范结束该方法。

使用这些方法(timeout类、timeout方法和waitFor)的代码示例见https://gist.github.com/ledlogic/b152370b95e971b3992f

我的问题是有没有人找到一种方法来成功运行Spock测试来验证f5规则正在丢弃连接?

共有1个答案

宗政元青
2023-03-14

对于我来说,使用@threadinterrupt注释和@timeout注释是可行的:

@ThreadInterrupt
@Timeout(value = 100, unit = MILLISECONDS)
def 'timeout test'() {
    expect:
    while(1) {true}
}

您可以在这里找到完整的文档:http://docs.groovy-lang.org/docs/next/html/documentation/#groovyconsole-interrupt

但是,这可能不足以中断一个脚本:点击按钮会中断执行线程,但是如果您的代码没有处理中断标志,脚本很可能在您无法有效阻止的情况下继续运行。为了避免这种情况,您必须确保Script>Allow Interrupation菜单项被标记。这将自动将AST转换应用到脚本,该脚本将负责检查中断标志(@ThreadInterrupt)。通过这种方式,您可以保证即使不显式处理中断,脚本也可以被中断,代价是额外的执行时间。

 类似资料:
  • 我有一个调用管道步骤方法(带有凭据)的共享库。我正在尝试测试withCredentials方法在调用myMethodToTest时是否被sh脚本正确调用,但在withCredentials闭包中迭代时遇到错误: 测试方法 嘲笑 测试用例 错误(it变量在闭包中变为null)

  • 恢复测试通常可以用来监控训练与恢复之间的平衡度。您可以跟踪身体对训练的反应。除了训练引起的变化外,还有许多其他因素会影响您的恢复测试结果,例如精神压力、睡眠、潜伏疾病和环境变化(温度、海拔高度)等等。 测试基于测得的心率和心率变异。心率和心率变异的改变会反映心脏自主调节的变化。 进行测试 对于恢复测试,您需要使用 Polar H9/H10 心率传感器(如果您有 H6 或 H7,也可以使用)。测试持

  • 我正在使用一个用Groovy编写的Spock测试来测试一些Java代码。我使用JMockit来模拟java代码中的方法,因为Spock只处理模拟Groovy类。我遇到了一个问题,在测试之间存在一个JMockit。这样的模拟实例应该只存在于测试中(根据JMockit文档),但这不起作用,我想这是因为它没有使用JMockit测试运行器,而是使用了Spock测试运行器。 问题 有什么方法可以手动移除JM

  • 我一直在使用CDIUnit和其他各种形式的CDI/SE解决方案来实现测试(junit),这些测试可以减少模拟,并更多地使用我的应用程序堆栈(我想是集成测试)。 无论如何,我也非常喜欢Spock进行测试,我认为应该抓紧时间从CDI/SE空间和Spock中混合一些东西,以便能够制定能够访问大部分CDI内容的规范。 许多CDI的单元运行程序(CDIUnit、WeldjUnit、deltaspike、为S

  • 我在开始使用spock测试java代码时遇到了一个问题。运行测试时出现错误: 我使用Intellij和Maven,将依赖项放入pom文件: 创建了我的简单类:(在java中) 和测试(它是spock类): 我的项目树如下所示: 我试着跟随一些教程,但可能我错过了一些东西。我的项目有什么问题,为什么测试不起作用?