在一些复杂的测试中,有必要将测试执行推迟一段时间。可能是我们需要等待数小时或数天。如果不阻止Actor的资源,就有机会在服务器级别暂停执行。 这是一个计划好的还是已经可以以某种方式实现的?
测试会话启动后,获取(保留(执行会话中所有测试所需的所有测试参与者。只有在会话完成(成功与否(时,才会释放参与者,因此其他测试会话可以重用它们。在测试中调用$sleep JavaScript API 时,特定的测试参与者可能会"延迟"一段时间,您可能已经知道这一点。但是,我无法就暂停 OpenTest 服务器的工作方式提出合理的逻辑。我知道您希望能够重用那些被阻止的测试参与者,但我认为这不是一个好主意,因为它们可能(并且很可能(存储它们在暂停时正在运行的测试的某些状态。更好的方法是在 CI 服务器(或启动测试会话的任何进程(中有一些逻辑,并在启动会话之前执行任何验证以查看您是否拥有所需的资源(如果可能(。如果您描述一个特定的用例,我可以尝试提供更多帮助。
编辑:解决您描述的用例的正确方法是找到一种方法来确定正在执行订单处理的上游系统,以按需触发执行,而不必等待一天等待测试执行(也许要求开发人员实现您可以调用的简单 API(。如果这不是一个选项,并且您绝对必须等待,那么解决此问题的正确方法是拥有足够的测试参与者来处理您想要并行执行的测试数量。测试Actor消耗大约150到200MB的内存,因此这是限制您可以在一台计算机上同时运行的Actor数量的唯一因素。在未来,OpenTest将有能力在同一过程中剥离多个参与者,因此这将成为一个不成问题的问题。
一旦测试参与者开始执行测试的工作,让它做任何其他工作是不安全的,因为测试通常必须存储一些状态(例如,你创建一个变量来存储你刚刚下达的订单的订单号(。如果同一参与者同时执行两个测试,则测试可能会覆盖彼此的状态,并且您会遇到很难排除故障的问题。