GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_GENERIC_MOCK_BACKEND/main.cpp
Date: 2025-12-02 14:33:23
Exec Total Coverage
Lines: 64 64 100.0%
Functions: 7 7 100.0%
Branches: 144 156 92.3%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include <fstream>
8 #include <iostream>
9 #include <thread>
10
11 #include "data_stream_assert.h"
12 #include "PGenericSocketManager.h"
13
14
15 typedef PGenericSocketManager<std::string, PEmptyBackend, PMockBackend> SocketManager;
16 typedef SocketManager::Backend Backend;
17 typedef SocketManager::Mock Mock;
18
19
20 ///Send messages on socket
21 /** @param mode : mode of the mock to be used
22 * @param nbMessage : number of message to be sent
23 * @param address : address of the socket
24 * @param port : connection port to be used
25 */
26 1 void threadSendData(PSocketMode::PSocketMode mode, size_t nbMessage, const std::string & address, size_t port){
27
1/1
✓ Branch 0 (2→3) taken 1 times.
1 SocketManager manager(mode); //Mock mode
28
11/14
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (121→122) not taken.
✗ Branch 23 (121→123) not taken.
10 data_stream_assert(manager.addServerSocket("Alice", PSocketParam{address, port}, Backend::server(), "", Mock::server()));
29
6/6
✓ Branch 0 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (47→48) taken 1 times.
✓ Branch 8 (48→49) taken 1 times.
✓ Branch 10 (49→50) taken 1 times.
8 data_stream_assert(manager.isConnected("Alice"));
30
7/7
✓ Branch 0 (60→61) taken 1 times.
✓ Branch 2 (63→64) taken 1 times.
✓ Branch 4 (66→67) taken 1 times.
✓ Branch 6 (69→70) taken 1 times.
✓ Branch 8 (70→71) taken 1 times.
✓ Branch 10 (71→72) taken 1 times.
✓ Branch 12 (72→73) taken 1 times.
7 data_stream_assert(manager.getSocket("Alice")->waitUntilConnection(100lu, 50lu)); // Wait until the client is connected
31
2/2
✓ Branch 0 (110→82) taken 10 times.
✓ Branch 1 (110→111) taken 1 times.
11 for(size_t i(0lu); i < nbMessage; ++i){
32
6/6
✓ Branch 0 (84→85) taken 10 times.
✓ Branch 2 (87→88) taken 10 times.
✓ Branch 4 (90→91) taken 10 times.
✓ Branch 6 (93→94) taken 10 times.
✓ Branch 8 (94→95) taken 10 times.
✓ Branch 10 (95→96) taken 10 times.
70 data_stream_assert(manager.sendData("Alice", i) == PSendStatus::OK);
33
5/5
✓ Branch 0 (104→105) taken 10 times.
✓ Branch 2 (105→106) taken 10 times.
✓ Branch 4 (106→107) taken 10 times.
✓ Branch 6 (107→108) taken 10 times.
✓ Branch 8 (108→109) taken 10 times.
10 std::cout << "message n°"<<i<<", Send value " << i << std::endl;
34 }
35 1 }
36
37 ///Received messages on socket
38 /** @param mode : mode of the mock to be used
39 * @param address : address of the socket
40 * @param nbMessage : number of message to be read
41 * @param port : connection port to be used
42 */
43 1 void threadReceivedData(PSocketMode::PSocketMode mode, const std::string & address, size_t nbMessage, size_t port){
44
1/1
✓ Branch 0 (2→3) taken 1 times.
1 SocketManager manager(mode); //Mock mode
45
11/14
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (94→95) not taken.
✗ Branch 23 (94→96) not taken.
10 data_stream_assert(manager.addClientSocket("Bob", PSocketParam{address, port}, Backend::client(), "", Mock::client()));
46
7/7
✓ Branch 0 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (47→48) taken 1 times.
✓ Branch 8 (48→49) taken 1 times.
✓ Branch 10 (49→50) taken 1 times.
✓ Branch 12 (50→51) taken 1 times.
7 data_stream_assert(manager.getSocket("Bob")->waitUntilConnection(100lu, 50lu));
47 1 size_t i(0lu);
48
2/2
✓ Branch 0 (83→60) taken 10 times.
✓ Branch 1 (83→84) taken 1 times.
11 while(i < nbMessage){
49 10 size_t value(0lu);
50
6/6
✓ Branch 0 (62→63) taken 10 times.
✓ Branch 2 (65→66) taken 10 times.
✓ Branch 4 (68→69) taken 10 times.
✓ Branch 6 (71→72) taken 10 times.
✓ Branch 8 (72→73) taken 10 times.
✓ Branch 10 (73→74) taken 10 times.
70 data_stream_assert(manager.recvData("Bob", value) == PRecvStatus::OK);
51 10 ++i;
52 }
53 1 }
54
55 ///Launch the process
56 1 void testMockSocket(){
57 1 size_t nbMessage(10lu), port(3390lu);
58
1/1
✓ Branch 0 (4→5) taken 1 times.
1 std::string hostName("localhost");
59
1/1
✓ Branch 0 (6→7) taken 1 times.
1 threadSendData(PSocketMode::MOCK_RECORD, nbMessage, hostName, port);
60
1/1
✓ Branch 0 (7→8) taken 1 times.
1 threadReceivedData(PSocketMode::MOCK, hostName, nbMessage, port);
61 1 }
62
63
64 ///Send messages on socket
65 /** @param mode : mode of the mock to be used
66 * @param nbMessage : number of message to be sent
67 * @param address : address of the socket
68 * @param port : connection port to be used
69 */
70 1 void threadSendMessage(PSocketMode::PSocketMode mode, size_t nbMessage, const std::string & address, size_t port){
71
1/1
✓ Branch 0 (2→3) taken 1 times.
1 SocketManager manager(mode); //Mock mode
72
1/1
✓ Branch 0 (3→4) taken 1 times.
1 manager.setMode(PSocketMode::MOCK_RECORD);
73
11/14
✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (9→10) taken 1 times.
✓ Branch 4 (12→13) taken 1 times.
✓ Branch 6 (13→14) taken 1 times.
✓ Branch 8 (16→17) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✓ Branch 14 (21→22) taken 1 times.
✓ Branch 16 (22→23) taken 1 times.
✓ Branch 18 (23→24) taken 1 times.
✗ Branch 20 (27→28) not taken.
✓ Branch 21 (27→29) taken 1 times.
✗ Branch 22 (104→105) not taken.
✗ Branch 23 (104→106) not taken.
10 data_stream_assert(manager.addServerSocket("Alice", PSocketParam{address, port}, Backend::server(), "./testMessage/", Mock::server()));
74
6/6
✓ Branch 0 (39→40) taken 1 times.
✓ Branch 2 (42→43) taken 1 times.
✓ Branch 4 (45→46) taken 1 times.
✓ Branch 6 (48→49) taken 1 times.
✓ Branch 8 (49→50) taken 1 times.
✓ Branch 10 (50→51) taken 1 times.
7 data_stream_assert(manager.isConnected("Alice"));
75
2/2
✓ Branch 0 (93→60) taken 10 times.
✓ Branch 1 (93→94) taken 1 times.
11 for(size_t i(0lu); i < nbMessage; ++i){
76 10 Backend::Message msg;
77
1/1
✓ Branch 0 (61→62) taken 10 times.
10 msg.push_back(i + 1);
78
1/1
✓ Branch 0 (62→63) taken 10 times.
10 msg.push_back(i + 2);
79
1/1
✓ Branch 0 (63→64) taken 10 times.
10 msg.push_back(i + 3);
80
81
6/6
✓ Branch 0 (66→67) taken 10 times.
✓ Branch 2 (69→70) taken 10 times.
✓ Branch 4 (72→73) taken 10 times.
✓ Branch 6 (75→76) taken 10 times.
✓ Branch 8 (76→77) taken 10 times.
✓ Branch 10 (77→78) taken 10 times.
70 data_stream_assert(manager.sendMsg("Alice", msg) == PSendStatus::OK);
82
5/5
✓ Branch 0 (86→87) taken 10 times.
✓ Branch 2 (87→88) taken 10 times.
✓ Branch 4 (88→89) taken 10 times.
✓ Branch 6 (89→90) taken 10 times.
✓ Branch 8 (90→91) taken 10 times.
10 std::cout << "message n°"<<i<<", Send message " << i << std::endl;
83 10 }
84 1 }
85
86 ///Received messages on socket
87 /** @param mode : mode of the mock to be used
88 * @param address : address of the socket
89 * @param nbMessage : number of message to be read
90 * @param port : connection port to be used
91 */
92 1 void threadReceivedMessage(PSocketMode::PSocketMode mode, const std::string & address, size_t nbMessage, size_t port){
93
1/1
✓ Branch 0 (2→3) taken 1 times.
1 SocketManager manager(mode); //Mock mode
94
11/14
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (139→140) not taken.
✗ Branch 23 (139→141) not taken.
9 data_stream_assert(manager.addClientSocket("Bob", PSocketParam{address, port}, Backend::client(), "./testMessage/", Mock::client()));
95 1 size_t i(0lu);
96
2/2
✓ Branch 0 (128→37) taken 10 times.
✓ Branch 1 (128→129) taken 1 times.
11 while(i < nbMessage){
97 10 Backend::Message msg;
98
6/6
✓ Branch 0 (40→41) taken 10 times.
✓ Branch 2 (43→44) taken 10 times.
✓ Branch 4 (46→47) taken 10 times.
✓ Branch 6 (49→50) taken 10 times.
✓ Branch 8 (50→51) taken 10 times.
✓ Branch 10 (51→52) taken 10 times.
80 data_stream_assert(manager.recvMsg("Bob", msg) == PRecvStatus::OK);
99
5/5
✓ Branch 0 (62→63) taken 10 times.
✓ Branch 2 (65→66) taken 10 times.
✓ Branch 4 (68→69) taken 10 times.
✓ Branch 6 (69→70) taken 10 times.
✓ Branch 8 (70→71) taken 10 times.
50 data_stream_assert(Backend::msgSize(msg) == 3lu);
100
101
1/1
✓ Branch 0 (77→78) taken 10 times.
10 DataStreamIter data = Backend::msgData(msg);
102
4/4
✓ Branch 0 (80→81) taken 10 times.
✓ Branch 2 (83→84) taken 10 times.
✓ Branch 4 (86→87) taken 10 times.
✓ Branch 6 (87→88) taken 10 times.
60 data_stream_assert(data[0] == (char)i + 1);
103
4/4
✓ Branch 0 (96→97) taken 10 times.
✓ Branch 2 (99→100) taken 10 times.
✓ Branch 4 (102→103) taken 10 times.
✓ Branch 6 (103→104) taken 10 times.
60 data_stream_assert(data[1] == (char)i + 2);
104
4/4
✓ Branch 0 (112→113) taken 10 times.
✓ Branch 2 (115→116) taken 10 times.
✓ Branch 4 (118→119) taken 10 times.
✓ Branch 6 (119→120) taken 10 times.
50 data_stream_assert(data[2] == (char)i + 3);
105 10 ++i;
106 10 }
107 1 }
108
109 ///Launch the process
110 1 void testMockSocketMessage(){
111 1 size_t nbMessage(10lu), port(3390lu);
112
1/1
✓ Branch 0 (4→5) taken 1 times.
1 std::string hostName("localhost");
113
1/1
✓ Branch 0 (6→7) taken 1 times.
1 threadSendMessage(PSocketMode::MOCK_RECORD, nbMessage, hostName, port);
114
1/1
✓ Branch 0 (7→8) taken 1 times.
1 threadReceivedMessage(PSocketMode::MOCK, hostName, nbMessage, port);
115 1 }
116
117 1 int main(int argc, char **argv){
118 1 testMockSocket();
119 1 testMockSocketMessage();
120 1 return 0;
121 }
122