@Parameters(name = "client[{0}] - server [{1}]")
public static Object[][] arguments() throws IOException {
WebSocketClient[] clients = new WebSocketClient[] {
new TomcatWebSocketClient(),
new JettyWebSocketClient(),
new ReactorNettyWebSocketClient(),
new UndertowWebSocketClient(Xnio.getInstance().createWorker(OptionMap.EMPTY))
};
Map<HttpServer, Class<?>> servers = new LinkedHashMap<>();
servers.put(new TomcatHttpServer(TMP_DIR.getAbsolutePath(), WsContextListener.class), TomcatConfig.class);
servers.put(new JettyHttpServer(), JettyConfig.class);
servers.put(new ReactorHttpServer(), ReactorNettyConfig.class);
servers.put(new UndertowHttpServer(), UndertowConfig.class);
Flux<WebSocketClient> f1 = Flux.fromArray(clients).concatMap(c -> Flux.just(c).repeat(servers.size()));
Flux<HttpServer> f2 = Flux.fromIterable(servers.keySet()).repeat(clients.length);
Flux<Class<?>> f3 = Flux.fromIterable(servers.values()).repeat(clients.length);
return Flux.zip(f1, f2, f3).map(Tuple3::toArray).collectList().block()
.toArray(new Object[clients.length * servers.size()][2]);
}