示例#1
0
        public static void Run()
        {
            var url = "ws://localhost:5000";
            var concurrentCopies = 50;

            var webSocketsPool = ConnectionPool.Create(
                name: "webSocketsPool",
                connectionsCount: concurrentCopies,
                openConnection: (number) =>
            {
                var ws = new ClientWebSocket();
                ws.ConnectAsync(new Uri(url), CancellationToken.None).Wait();
                return(ws);
            },
                closeConnection: (connection) =>
            {
                connection.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None)
                .Wait();
            }
                );

            var pingStep = Step.Create("ping", webSocketsPool, async context =>
            {
                var msg = new WebSocketRequest
                {
                    CorrelationId = context.CorrelationId.Id,
                    RequestType   = RequestType.Ping
                };
                var bytes = MsgConverter.ToJsonByteArray(msg);
                await context.Connection.SendAsync(bytes, WebSocketMessageType.Text, true, context.CancellationToken);
                return(Response.Ok());
            });

            var pongStep = Step.Create("pong", webSocketsPool, async context =>
            {
                while (true)
                {
                    var(response, message) = await WebSocketsMiddleware.ReadFullMessage(context.Connection, context.CancellationToken);
                    var msg = MsgConverter.FromJsonByteArray <WebSocketResponse>(message);

                    if (msg.CorrelationId == context.CorrelationId.Id)
                    {
                        return(Response.Ok(msg));
                    }
                }
            });

            var scenario = ScenarioBuilder
                           .CreateScenario("web_socket test", new[] { pingStep, pongStep })
                           .WithOutWarmUp()
                           .WithLoadSimulations(new[]
            {
                Simulation.KeepConcurrentScenarios(concurrentCopies, during: TimeSpan.FromSeconds(10))
            });

            NBomberRunner.RegisterScenarios(scenario)
            .RunInConsole();
        }
示例#2
0
        public static void Run()
        {
            var url = "ws://localhost:53231";

            var webSocketsPool = ConnectionPool.Create("webSocketsPool",
                                                       openConnection: () =>
            {
                var ws = new ClientWebSocket();
                ws.ConnectAsync(new Uri(url), CancellationToken.None).Wait();
                return(ws);
            },
                                                       closeConnection: (connection) =>
            {
                connection.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None)
                .Wait();
            });
            //connectionsCount: 50);

            var pingStep = Step.Create("ping", async context =>
            {
                var msg = new WebSocketRequest
                {
                    CorrelationId = context.CorrelationId,
                    RequestType   = RequestType.Ping
                };
                var bytes = MsgConverter.ToJsonByteArray(msg);
                await context.Connection.SendAsync(bytes, WebSocketMessageType.Text, true, context.CancellationToken);
                return(Response.Ok());
            },
                                       pool: webSocketsPool);

            var pongStep = Step.Create("pong", async context =>
            {
                while (true)
                {
                    var(response, message) = await WebSocketsMiddleware.ReadFullMessage(context.Connection, context.CancellationToken);
                    var msg = MsgConverter.FromJsonByteArray <WebSocketResponse>(message);

                    if (msg.CorrelationId == context.CorrelationId)
                    {
                        return(Response.Ok(msg));
                    }
                }
            },
                                       pool: webSocketsPool);

            var scenario = ScenarioBuilder.CreateScenario("web_socket test", pingStep, pongStep);

            NBomberRunner.RegisterScenarios(scenario)
            .RunInConsole();
        }
示例#3
0
        public static Scenario BuildScenario()
        {
            var url = "ws://localhost:53231";

            var webSocketsPool = ConnectionPool.Create("webSocketsPool",
                                                       openConnection: () =>
            {
                var ws = new ClientWebSocket();
                ws.ConnectAsync(new Uri(url), CancellationToken.None).Wait();
                return(ws);
            },
                                                       closeConnection: (connection) =>
            {
                connection.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None)
                .Wait();
            });
            //connectionsCount: 50);

            var pingStep = Step.CreatePull("ping", webSocketsPool, async context =>
            {
                var msg = new WebSocketRequest
                {
                    CorrelationId = context.CorrelationId,
                    RequestType   = RequestType.Ping
                };
                var bytes = MsgConverter.ToJsonByteArray(msg);
                await context.Connection.SendAsync(bytes, WebSocketMessageType.Text, true, CancellationToken.None);
                return(Response.Ok());
            });

            var pongStep = Step.CreatePush("pong", webSocketsPool, async context =>
            {
                var(response, message) = await WebSocketsMiddleware.ReadFullMessage(context.Connection);
                var msg = MsgConverter.FromJsonByteArray <WebSocketResponse>(message);

                if (msg.CorrelationId == context.CorrelationId)
                {
                    context.UpdatesChannel.ReceivedUpdate(Response.Ok(msg));
                }
            });

            return(ScenarioBuilder.CreateScenario("web_socket test", pingStep, pongStep));
        }