- Added stub `shutdown()` method that is intended to be called by `Manager` (package-level accessible)

Unit tests

- Sleep for 4 seconds instead of 2 before the server sends the two tagged messages
- Send a messae tagged with tag `42` before that of the one tagged with `69`
- Register a queue with tag `42`
- Remove `WaitingThread`, we now receive both tagged messages (`42` and `69`) on the unittest thread
- Added assertion to ensure the tagged message of `69` is indeed received correctly (tag AND payload)
This commit is contained in:
Tristan B. Velloza Kildaire 2023-04-06 08:57:52 +02:00
parent 9f07c06e15
commit 62b16de596
1 changed files with 30 additions and 23 deletions

View File

@ -90,6 +90,11 @@ public class Watcher : Thread
// TODO: Implement me
}
}
package void shutdown()
{
}
}
@ -115,16 +120,27 @@ unittest
{
Socket clientSocket = server.accept();
Thread.sleep(dur!("seconds")(2));
Thread.sleep(dur!("seconds")(4));
writeln("Server start");
/**
* Create a tagged message to send
*
* tag 42 payload Hello
*/
TaggedMessage message = new TaggedMessage(42, cast(byte[])"Cucumber 😳️");
byte[] tEncoded = message.encode();
writeln("server send status: ", sendMessage(clientSocket, tEncoded));
writeln("server send [done]");
/**
* Create a tagged message to send
*
* tag 69 payload Hello
*/
TaggedMessage message = new TaggedMessage(69, cast(byte[])"Hello");
byte[] tEncoded = message.encode();
message = new TaggedMessage(69, cast(byte[])"Hello");
tEncoded = message.encode();
writeln("server send status: ", sendMessage(clientSocket, tEncoded));
writeln("server send [done]");
@ -143,33 +159,24 @@ unittest
Manager manager = new Manager(client);
Queue sixtyNine = new Queue(69);
Queue fortyTwo = new Queue(42);
class WaitingThread : Thread
{
private Queue testQueue;
this(Queue testQueue)
{
super(&worker);
this.testQueue = testQueue;
}
private void worker()
{
writeln("WaitingThread: Dequeue() blocking...");
TaggedMessage dequeuedMessage = testQueue.dequeue();
writeln("WaitingThread: Got '"~dequeuedMessage.toString()~"'");
}
}
WaitingThread waiting = new WaitingThread(sixtyNine);
waiting.start();
manager.registerQueue(sixtyNine);
manager.registerQueue(fortyTwo);
/* Connect our socket to the server */
client.connect(server.localAddress);
/* Start the manager and let it manage the socket */
manager.start();
/* Block on the unittest thread for a received message */
writeln("unittest thread: Dequeue() blocking...");
TaggedMessage dequeuedMessage = sixtyNine.dequeue();
writeln("unittest thread: Got '"~dequeuedMessage.toString()~"' decode payload to string '"~cast(string)dequeuedMessage.getPayload()~"'");
assert(dequeuedMessage.getTag() == 69);
assert(dequeuedMessage.getPayload() == "Hello");