Skip to content

Stops working after first send / receive command #1

Description

@aidan-rypens

I'm having some trouble using this. It works very well for one request, but sending another command to the TCP server it throws an exception.

I did look at the followings tests:
https://github.com/MojtabaKiani/Rony.Net/blob/main/tests/Rony.FunctionalTests/MockTcpServerTests.cs

Should it be able to send the mock server multiple requests (like below) or is this not how it is intended to be used?

Example code:

        const int port = 4000;
        
        const string command1 = "ping";
        const string mockResponse1 = "pong";

        const string command2 = "pong";
        const string mockResponse2 = "ping";

        var tcpServer = new MockServer(new TcpServer(port));
        tcpServer.Mock.Send(command1).Receive(mockResponse1);
        tcpServer.Mock.Send(command2).Receive(mockResponse2);

        tcpServer.Start();

        var client = new SocketClient(IPAddress.Loopback.ToString(), port);
        await client.Connect();

        await client.Send(command1);
        var response = await client.ReceiveStringResponseAsync();

        await client.Send(command2);
        var response2 = await client.ReceiveStringResponseAsync();

        response.Should().Be(response);
        response2.Should().Be(response2);

Example code without wrapper for sending / receiving:

        var hostName = IPAddress.Loopback.ToString();
        const int port = 4000;

        const string command1 = "ping";
        const string mockResponse1 = "pong";

        const string command2 = "pong";
        const string mockResponse2 = "ping";

        var tcpServer = new MockServer(new TcpServer(port));
        tcpServer.Mock.Send(command1).Receive(mockResponse1);
        tcpServer.Mock.Send(command2).Receive(mockResponse2);

        tcpServer.Start();

        var client = new TcpClient(hostName, port);
        var stream = client.GetStream();

        // SEND 1
        var byteData = ASCII.GetBytes(command1);
        await stream.WriteAsync(byteData, 0, byteData.Length);

        var buffer = new byte[1024];
        int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        var response1 = ASCII.GetString(buffer, 0, bytesRead);

        // SEND 2
        byteData = ASCII.GetBytes(command2);
        await stream.WriteAsync(byteData, 0, byteData.Length);

        bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        var response2 = ASCII.GetString(buffer, 0, bytesRead);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions