GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_MOCK_BACKEND_FILE/main.cpp
Date: 2026-04-14 18:36:32
Exec Total Coverage
Lines: 88 88 100.0%
Functions: 8 8 100.0%
Branches: 184 202 91.1%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include <iostream>
8
9 #include "data_stream_assert.h"
10 #include "data_stream_check_value.h"
11 #include "PMockBackendFile.h"
12
13 ///Create the mock with the server
14 /** @param hostName : name of the host to be used
15 * @param port : port to be used
16 * @param nbMessage : number of message to be sent
17 */
18 1 void createMockServer(const std::string & hostName, size_t port, size_t nbMessage){
19
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockSocketFileGenerator backend;
20
2/2
✓ Branch 0 (3→4) taken 1 times.
✓ Branch 2 (4→5) taken 1 times.
1 PMockSocketFileGenerator::Socket socket, otherSocket;
21
8/11
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (6→7) taken 1 times.
✓ Branch 4 (7→8) taken 1 times.
✓ Branch 6 (10→11) taken 1 times.
✓ Branch 8 (13→14) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 14 (25→26) not taken.
✓ Branch 15 (25→27) taken 1 times.
✗ Branch 16 (131→132) not taken.
✗ Branch 17 (131→133) not taken.
7 data_stream_assert(backend.createServerSocket(socket, PSocketParam{hostName, port}, PMockSocketFileGenerator::server()));
22
1/1
✓ Branch 0 (27→28) taken 1 times.
1 socket.setIsMockRecord(true);
23
2/2
✓ Branch 0 (30→31) taken 1 times.
✓ Branch 2 (31→32) taken 1 times.
1 socket.setMockPrefix("file_");
24
5/5
✓ Branch 0 (34→35) taken 1 times.
✓ Branch 2 (37→38) taken 1 times.
✓ Branch 4 (40→41) taken 1 times.
✓ Branch 6 (43→44) taken 1 times.
✓ Branch 8 (44→45) taken 1 times.
6 data_stream_assert(socket.isConnected());
25
2/2
✓ Branch 0 (75→52) taken 10 times.
✓ Branch 1 (75→76) taken 1 times.
11 for(size_t i(0lu); i < nbMessage; ++i){
26 10 PMockSocketFileGenerator::Message msg;
27
1/1
✓ Branch 0 (53→54) taken 10 times.
10 msg.push_back(1lu);
28
1/1
✓ Branch 0 (54→55) taken 10 times.
10 msg.push_back(2lu);
29
1/1
✓ Branch 0 (55→56) taken 10 times.
10 msg.push_back(3lu);
30
5/5
✓ Branch 0 (56→57) taken 10 times.
✓ Branch 2 (59→60) taken 10 times.
✓ Branch 4 (62→63) taken 10 times.
✓ Branch 6 (65→66) taken 10 times.
✓ Branch 8 (66→67) taken 10 times.
60 data_stream_assert(socket.sendMsg(msg, PSendFlag::BLOCK) == PSendStatus::OK);
31 10 }
32
1/1
✓ Branch 0 (76→77) taken 1 times.
1 socket.close();
33
34
8/11
✓ Branch 0 (79→80) taken 1 times.
✓ Branch 2 (82→83) taken 1 times.
✓ Branch 4 (83→84) taken 1 times.
✓ Branch 6 (86→87) taken 1 times.
✓ Branch 8 (89→90) taken 1 times.
✓ Branch 10 (92→93) taken 1 times.
✓ Branch 12 (93→94) taken 1 times.
✗ Branch 14 (103→104) not taken.
✓ Branch 15 (103→105) taken 1 times.
✗ Branch 16 (210→211) not taken.
✗ Branch 17 (210→212) not taken.
10 data_stream_assert(phoenix_initializeMockSocket(otherSocket, PSocketParam{"host", 4444}));
35 1 }
36
37 ///Check a recv message
38 /** @param[out] socket : Socket to be used
39 */
40 11 void checkRecvMessage(PMockSocketFileGenerator::Socket & socket){
41 11 PMockSocketFileGenerator::Message msg;
42
5/5
✓ Branch 0 (3→4) taken 11 times.
✓ Branch 2 (6→7) taken 11 times.
✓ Branch 4 (9→10) taken 11 times.
✓ Branch 6 (12→13) taken 11 times.
✓ Branch 8 (13→14) taken 11 times.
77 data_stream_assert(socket.recvMsg(msg, PRecvFlag::BLOCK) == PRecvStatus::OK);
43
6/6
✓ Branch 0 (22→23) taken 11 times.
✓ Branch 2 (24→25) taken 11 times.
✓ Branch 4 (27→28) taken 11 times.
✓ Branch 6 (30→31) taken 11 times.
✓ Branch 8 (33→34) taken 11 times.
✓ Branch 10 (34→35) taken 11 times.
88 data_stream_assert(checkValue("checkRecvMessage::message size", msg.size(), 3lu));
44
45
6/6
✓ Branch 0 (45→46) taken 11 times.
✓ Branch 2 (47→48) taken 11 times.
✓ Branch 4 (50→51) taken 11 times.
✓ Branch 6 (53→54) taken 11 times.
✓ Branch 8 (56→57) taken 11 times.
✓ Branch 10 (57→58) taken 11 times.
88 data_stream_assert(checkValue("checkRecvMessage::message[0]", msg[0], (PMockSocketFileGenerator::Message::value_type)1lu));
46
6/6
✓ Branch 0 (68→69) taken 11 times.
✓ Branch 2 (70→71) taken 11 times.
✓ Branch 4 (73→74) taken 11 times.
✓ Branch 6 (76→77) taken 11 times.
✓ Branch 8 (79→80) taken 11 times.
✓ Branch 10 (80→81) taken 11 times.
88 data_stream_assert(checkValue("checkRecvMessage::message[1]", msg[1], (PMockSocketFileGenerator::Message::value_type)2lu));
47
6/6
✓ Branch 0 (91→92) taken 11 times.
✓ Branch 2 (93→94) taken 11 times.
✓ Branch 4 (96→97) taken 11 times.
✓ Branch 6 (99→100) taken 11 times.
✓ Branch 8 (102→103) taken 11 times.
✓ Branch 10 (103→104) taken 11 times.
77 data_stream_assert(checkValue("checkRecvMessage::message[2]", msg[2], (PMockSocketFileGenerator::Message::value_type)3lu));
48 11 }
49
50 ///Create the mock with the client
51 /** @param hostName : name of the host to be used
52 * @param port : port to be used
53 * @param nbMessage : number of message to be sent
54 */
55 1 void createMockClient(const std::string & hostName, size_t port, size_t nbMessage){
56
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockSocketFileGenerator backend;
57
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockSocketFileGenerator::Socket socket;
58
8/11
✓ Branch 0 (4→5) taken 1 times.
✓ Branch 2 (5→6) taken 1 times.
✓ Branch 4 (6→7) taken 1 times.
✓ Branch 6 (9→10) taken 1 times.
✓ Branch 8 (12→13) taken 1 times.
✓ Branch 10 (15→16) taken 1 times.
✓ Branch 12 (16→17) taken 1 times.
✗ Branch 14 (24→25) not taken.
✓ Branch 15 (24→26) taken 1 times.
✗ Branch 16 (80→81) not taken.
✗ Branch 17 (80→82) not taken.
7 data_stream_assert(backend.createClientSocket(socket, PSocketParam{hostName, port}, PMockSocketFileGenerator::client()));
59
1/1
✓ Branch 0 (26→27) taken 1 times.
1 socket.setIsMockRecord(false);
60
2/2
✓ Branch 0 (29→30) taken 1 times.
✓ Branch 2 (30→31) taken 1 times.
1 socket.setMockPrefix("file_");
61
5/5
✓ Branch 0 (33→34) taken 1 times.
✓ Branch 2 (36→37) taken 1 times.
✓ Branch 4 (39→40) taken 1 times.
✓ Branch 6 (42→43) taken 1 times.
✓ Branch 8 (43→44) taken 1 times.
6 data_stream_assert(socket.isConnected());
62
2/2
✓ Branch 0 (53→51) taken 10 times.
✓ Branch 1 (53→54) taken 1 times.
11 for(size_t i(0lu); i < nbMessage; ++i){
63
1/1
✓ Branch 0 (51→52) taken 10 times.
10 checkRecvMessage(socket);
64 }
65
1/1
✓ Branch 0 (54→55) taken 1 times.
1 checkRecvMessage(socket); //Just to make it loop
66
1/1
✓ Branch 0 (55→56) taken 1 times.
1 socket.close();
67 1 }
68
69 ///Check file backend edges cases
70 1 void testFileBackendEdgeCases(){
71
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockSocketFileGenerator backend;
72
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockSocketFileGenerator::Socket socket;
73 // Test with an invalid path
74
8/11
✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (7→8) taken 1 times.
✓ Branch 4 (8→9) taken 1 times.
✓ Branch 6 (11→12) taken 1 times.
✓ Branch 8 (14→15) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✗ Branch 14 (26→27) not taken.
✓ Branch 15 (26→28) taken 1 times.
✗ Branch 16 (77→78) not taken.
✗ Branch 17 (77→79) not taken.
9 data_stream_assert(backend.createClientSocket(socket, PSocketParam{"localhost", 8888}, PMockSocketFileGenerator::client()));
75
2/2
✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
1 socket.setMockPrefix("invalid/path/");
76
1/1
✓ Branch 0 (35→36) taken 1 times.
1 socket.setIsMockRecord(true);
77
78 // Test isConnected with uninitialized socket
79
5/5
✓ Branch 0 (36→37) taken 1 times.
✓ Branch 2 (39→40) taken 1 times.
✓ Branch 4 (42→43) taken 1 times.
✓ Branch 6 (45→46) taken 1 times.
✓ Branch 8 (46→47) taken 1 times.
6 data_stream_assert(socket.isConnected());
80 1 }
81
82 ///Test the PMockSocketFileGenerator
83 1 void testMockBackendFile(){
84 1 size_t nbMessage(10lu), port(3390lu);
85
1/1
✓ Branch 0 (4→5) taken 1 times.
1 std::string hostName("localhost");
86
1/1
✓ Branch 0 (6→7) taken 1 times.
1 createMockServer(hostName, port, nbMessage);
87
1/1
✓ Branch 0 (7→8) taken 1 times.
1 createMockClient(hostName, port, nbMessage);
88
1/1
✓ Branch 0 (8→9) taken 1 times.
1 testFileBackendEdgeCases();
89 1 }
90
91 ///Test creating a valid socket and sending messages
92 1 void testCreateValidSocket(){
93
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockSocketFileGenerator backend;
94
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockSocketFileGenerator::Socket validSocket;
95
8/11
✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (7→8) taken 1 times.
✓ Branch 4 (8→9) taken 1 times.
✓ Branch 6 (11→12) taken 1 times.
✓ Branch 8 (14→15) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✗ Branch 14 (26→27) not taken.
✓ Branch 15 (26→28) taken 1 times.
✗ Branch 16 (99→100) not taken.
✗ Branch 17 (99→101) not taken.
9 data_stream_assert(backend.createClientSocket(validSocket, PSocketParam{"localhost", 5555}, PMockSocketFileGenerator::client()));
96
2/2
✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
1 validSocket.setMockPrefix("test_error_");
97
1/1
✓ Branch 0 (35→36) taken 1 times.
1 validSocket.setIsMockRecord(true);
98 1 PMockSocketFileGenerator::Message testMsg;
99
1/1
✓ Branch 0 (37→38) taken 1 times.
1 testMsg.push_back(1lu);
100
1/1
✓ Branch 0 (38→39) taken 1 times.
1 testMsg.push_back(2lu);
101
5/5
✓ 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.
6 data_stream_assert(validSocket.sendMsg(testMsg, PSendFlag::BLOCK) == PSendStatus::OK);
102
5/5
✓ Branch 0 (56→57) taken 1 times.
✓ Branch 2 (59→60) taken 1 times.
✓ Branch 4 (62→63) taken 1 times.
✓ Branch 6 (65→66) taken 1 times.
✓ Branch 8 (66→67) taken 1 times.
6 data_stream_assert(validSocket.sendMsg(testMsg, PSendFlag::BLOCK) == PSendStatus::OK);
103
1/1
✓ Branch 0 (73→74) taken 1 times.
1 validSocket.close();
104 1 }
105
106 ///Test creating a valid socket
107 1 void testCreateValidSocketEdgeCases(){
108
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockSocketFileGenerator backend;
109
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockSocketFileGenerator::Socket readSocket;
110
8/11
✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (7→8) taken 1 times.
✓ Branch 4 (8→9) taken 1 times.
✓ Branch 6 (11→12) taken 1 times.
✓ Branch 8 (14→15) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✗ Branch 14 (26→27) not taken.
✓ Branch 15 (26→28) taken 1 times.
✗ Branch 16 (169→170) not taken.
✗ Branch 17 (169→171) not taken.
9 data_stream_assert(backend.createClientSocket(readSocket, PSocketParam{"localhost", 5555}, PMockSocketFileGenerator::client()));
111
2/2
✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
1 readSocket.setMockPrefix("test_error_");
112
1/1
✓ Branch 0 (35→36) taken 1 times.
1 readSocket.setIsMockRecord(false);
113 1 PMockSocketFileGenerator::Message receivedMsg;
114
5/5
✓ Branch 0 (37→38) taken 1 times.
✓ Branch 2 (40→41) taken 1 times.
✓ Branch 4 (43→44) taken 1 times.
✓ Branch 6 (46→47) taken 1 times.
✓ Branch 8 (47→48) taken 1 times.
6 data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK);
115
5/5
✓ Branch 0 (54→55) taken 1 times.
✓ Branch 2 (57→58) taken 1 times.
✓ Branch 4 (60→61) taken 1 times.
✓ Branch 6 (63→64) taken 1 times.
✓ Branch 8 (64→65) taken 1 times.
6 data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK);
116 // Try to recv again to trigger the edge case (lines 101-104)
117
5/5
✓ Branch 0 (71→72) taken 1 times.
✓ Branch 2 (74→75) taken 1 times.
✓ Branch 4 (77→78) taken 1 times.
✓ Branch 6 (80→81) taken 1 times.
✓ Branch 8 (81→82) taken 1 times.
6 data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK);
118 // Test send with overflowing eventIndex (lines 110-115)
119 1 PMockSocketFileGenerator::Message sendMsg;
120
1/1
✓ Branch 0 (89→90) taken 1 times.
1 sendMsg.push_back(1lu);
121
1/1
✓ Branch 0 (90→91) taken 1 times.
1 sendMsg.push_back(2lu);
122
5/5
✓ Branch 0 (91→92) taken 1 times.
✓ Branch 2 (94→95) taken 1 times.
✓ Branch 4 (97→98) taken 1 times.
✓ Branch 6 (100→101) taken 1 times.
✓ Branch 8 (101→102) taken 1 times.
6 data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK);
123
5/5
✓ Branch 0 (108→109) taken 1 times.
✓ Branch 2 (111→112) taken 1 times.
✓ Branch 4 (114→115) taken 1 times.
✓ Branch 6 (117→118) taken 1 times.
✓ Branch 8 (118→119) taken 1 times.
6 data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK);
124
5/5
✓ Branch 0 (125→126) taken 1 times.
✓ Branch 2 (128→129) taken 1 times.
✓ Branch 4 (131→132) taken 1 times.
✓ Branch 6 (134→135) taken 1 times.
✓ Branch 8 (135→136) taken 1 times.
6 data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK);
125
1/1
✓ Branch 0 (142→143) taken 1 times.
1 readSocket.close();
126 1 }
127
128 1 int main(int argc, char **argv){
129 1 testMockBackendFile();
130 1 testCreateValidSocket();
131 1 testCreateValidSocketEdgeCases();
132 1 return 0;
133 }
134