我正在努力扩大已经存在的基于硒的Web应用程序测试系统的功能。该系统当前只能一次执行测试。我想通过添加一些并行性来测试执行来增加系统的吞吐量。
为此,我一直在研究不同的技术,并对微软的奥尔良感兴趣。但是,在使用Orlean的文档度过一天之后,我找不到该技术是否支持我需要在一台计算机上运行特定可伸缩演员的情况。
在我的情况下,这将是执行测试的演员。通常,使用硒,测试执行需要创建WebDriver对象,然后打开并控制Web浏览器实例。这些Web浏览器都必须作为单独的流程开放,而不仅仅是相同过程的新窗口。没有上限,可以说一个群集由3个节点组成,并且由60个测试的测试计划我会在每台机器上同时打开20个网络浏览器,这可能会导致性能大大降低或完全崩溃。我希望该系统的上限为每台机器的3个测试执行者,并将其余的测试存储在队列中,只有在另一个工人演员完成其测试后才运行它们。
我将如何使用奥尔良技术实施它?
对于奥尔良来说,正确的解决方案不是用maxactivethreads弄乱。您几乎不应该真正改变这一点。取而代之的是,您要么只有9个常规谷物,只需使用9个不同的谷物ID(0 ... 8)即可使用它们,并且系统将它们随机传播到3个服务器中,当您发送新的测试请求时,只需发送它是从这9。
中的随机谷物中另外,您只有一种无状态工作者谷物,只有一种谷物,但将其最大激活(每服务器)设置为3,这样您就可以完全具有每台服务器的3个激活(9个),并且系统将自动负载余额。
http://dotnet.github.io/orleans/documentation/advanced-concepts/statelessworker.html
在奥尔良的持续排队中没有构建。您要么必须在客户端/发件人侧排队,要么一次发送所有60个请求,并且每个谷物都可以将请求存储在其内部内存队列中,并在上一个工作完成时开始下一个请求。
奥尔良将在开箱即用。与您在筒仓中的配置一样,它会产生如此多的谷物(默认为CPU内核,请参见MaxActivEthReads)。所有其他请求将由奥尔良排队。
您可以在Orleans config-File中进行配置:
<Scheduler MaxActiveThreads="3"/>
您的问题:您想并行化测试执行。
解决方案是使用硒和节点。您不需要奥尔良。