Directory: | ./ |
---|---|
File: | TESTS/TEST_MOCK_PUSH_PULL/main.cpp |
Date: | 2025-06-03 16:44:11 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 30 | 30 | 100.0% |
Branches: | 63 | 63 | 100.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /*************************************** | ||
2 | Auteur : Pierre Aubert | ||
3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
4 | Licence : CeCILL-C | ||
5 | ****************************************/ | ||
6 | |||
7 | #include <unistd.h> | ||
8 | |||
9 | #include <fstream> | ||
10 | #include <iostream> | ||
11 | #include <thread> | ||
12 | |||
13 | |||
14 | #include "data_stream_assert.h" | ||
15 | #include "PGenericSocketManager.h" | ||
16 | #include "PZmqBackend.h" | ||
17 | |||
18 | #define CONNECTION_PORT 3390 | ||
19 | |||
20 | typedef PGenericSocketManager<std::string, PZmqBackend, PMockBackend> SocketManager; | ||
21 | typedef SocketManager::Backend Backend; | ||
22 | typedef SocketManager::Mock Mock; | ||
23 | |||
24 | ///Send messages on socket | ||
25 | /** @param address : address to coonect to | ||
26 | * @param port : port to be used | ||
27 | * @param mode : mode of sockets | ||
28 | * @param nbMessage : number of message to be sent | ||
29 | * @return true on success, false otherwise | ||
30 | */ | ||
31 | 1 | void threadSendMessage(const std::string & address, size_t port, PSocketMode::PSocketMode mode, size_t nbMessage){ | |
32 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | std::cout << "threadSendMessage : send mock message" << std::endl; |
33 |
1/1✓ Branch 1 taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
34 | // b &= manager.addServerSocket("Alice", "localhost", CONNECTION_PORT, ZMQ_PUSH); | ||
35 |
9/9✓ Branch 2 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 14 taken 1 times.
✓ Branch 17 taken 1 times.
✓ Branch 20 taken 1 times.
✓ Branch 24 taken 1 times.
✓ Branch 27 taken 1 times.
✓ Branch 30 taken 1 times.
|
1 | data_stream_assert(manager.addServerSocket("Alice", |
36 | Backend::server(address, port), | ||
37 | Mock::server(address, port, true, "./"))); | ||
38 | |||
39 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
11 | for(size_t i(0lu); i < nbMessage; ++i){ |
40 |
6/6✓ Branch 2 taken 10 times.
✓ Branch 6 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 14 taken 10 times.
✓ Branch 17 taken 10 times.
✓ Branch 20 taken 10 times.
|
10 | data_stream_assert(manager.sendData("Alice", i)); |
41 |
5/5✓ Branch 1 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 13 taken 10 times.
|
10 | std::cout << "message n°"<<i<<", Send value " << i << std::endl; |
42 | } | ||
43 | 1 | } | |
44 | |||
45 | ///Recieved messages on socket | ||
46 | /** @param address : address of the socket | ||
47 | * @param threadId : id of the thread | ||
48 | * @param mode : mode of sockets | ||
49 | * @param nbMessage : number of message to be read | ||
50 | */ | ||
51 | 1 | void threadRecievedMessage(const std::string & address, size_t port, size_t threadId, PSocketMode::PSocketMode mode, size_t nbMessage){ | |
52 |
6/6✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
✓ Branch 16 taken 1 times.
|
1 | std::cout << "threadRecievedMessage "<<threadId<<" : read message to '"<<address<<"'" << std::endl; |
53 |
1/1✓ Branch 1 taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
54 | // b &= manager.addClientSocket("Bob", address, CONNECTION_PORT, ZMQ_PULL); | ||
55 |
9/9✓ Branch 2 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 14 taken 1 times.
✓ Branch 17 taken 1 times.
✓ Branch 20 taken 1 times.
✓ Branch 24 taken 1 times.
✓ Branch 27 taken 1 times.
✓ Branch 30 taken 1 times.
|
1 | data_stream_assert(manager.addClientSocket("Bob", |
56 | Backend::client(address, port), | ||
57 | Mock::client(address, port, false, "./"))); | ||
58 | 1 | size_t i(0lu); | |
59 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
11 | while(i < nbMessage){ |
60 | 10 | size_t value(0lu); | |
61 |
6/6✓ Branch 2 taken 10 times.
✓ Branch 6 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 14 taken 10 times.
✓ Branch 17 taken 10 times.
✓ Branch 20 taken 10 times.
|
10 | data_stream_assert(manager.recvData("Bob", value)); |
62 |
7/7✓ Branch 1 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 13 taken 10 times.
✓ Branch 16 taken 10 times.
✓ Branch 19 taken 10 times.
|
10 | std::cout << "Recv("<<threadId<<") message n°"<<i<<", value = " << value << std::endl; |
63 |
4/4✓ Branch 2 taken 10 times.
✓ Branch 6 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 13 taken 10 times.
|
10 | data_stream_assert(value == i); |
64 | 10 | ++i; | |
65 | } | ||
66 | 1 | } | |
67 | |||
68 | ///Launch the process | ||
69 | 1 | void testMockSocket(){ | |
70 | 1 | PSocketMode::PSocketMode mode = PSocketMode::MOCK; | |
71 | 1 | size_t nbMessage(10lu), port(3390lu); | |
72 |
1/1✓ Branch 2 taken 1 times.
|
1 | std::string hostName("localhost"); |
73 |
1/1✓ Branch 1 taken 1 times.
|
1 | threadSendMessage(hostName, port, mode, nbMessage); |
74 |
1/1✓ Branch 1 taken 1 times.
|
1 | threadRecievedMessage(hostName, port, 0lu, mode, nbMessage); |
75 | 1 | } | |
76 | |||
77 | 1 | int main(int argc, char **argv){ | |
78 | 1 | testMockSocket(); | |
79 | 1 | return 0; | |
80 | } | ||
81 |