在一些复杂的测试中,有必要将测试执行推迟一段时间。也许我们需要等待几个小时或几天..如果不阻塞Actor的资源,有机会在服务器级别上暂停执行,那就太好了。这是有计划的吗,或者可能已经以某种方式实现了?
发布于 2018-10-03 07:11:17
一旦测试会话开始,就会获取(保留)执行会话中所有测试所需的所有测试参与者。参与者只有在会话完成时才会被释放(无论成功与否),因此它们可以被其他测试会话重用。特定的测试参与者在测试中调用$sleep JavaScript应用程序接口时可能会“延迟”一段时间,您可能已经知道这一点。但是,我无法提出一个合理的逻辑来说明暂停OpenTest服务器是如何工作的。我理解您希望能够重用那些被阻塞的测试参与者,但我不认为这是一个好主意,因为它们可能(并且最有可能)为它们被暂停时正在运行的测试存储一些状态。一种更好的方法是在CI服务器(或启动测试会话的任何进程)中设置一些逻辑,并在可能的情况下执行任何验证,以查看在启动会话之前是否拥有所需的资源。如果你描述了一个具体的用例,我可以试着提供更多的帮助。
编辑:解决您描述的用例的正确方法是找到一种方法来确定正在执行订单处理的上游系统,以按需触发执行,而不必等待一天来执行测试(也许可以要求开发人员实现一个您可以调用的简单API )。如果这不是一个选项,你必须等待,解决这个问题的正确方法是有足够的测试参与者来处理你想要并行执行的测试数量。测试参与者消耗大约150到200MB的内存,因此这将是限制您可以在一台机器上同时运行的参与者数量的唯一因素。在未来,OpenTest将能够在同一进程中剥离多个参与者,因此这将成为一个不成问题的问题。
一旦测试参与者开始执行测试,让它做任何其他工作都是不安全的,因为测试通常必须存储一些状态(例如,您创建了一个变量来存储您刚刚下的订单的订单号)。如果同一参与者同时执行两个测试,则这些测试可能会覆盖彼此的状态,并且您会遇到很难解决的问题。
https://stackoverflow.com/questions/52576749
复制相似问题