GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_MOCK_BACKEND_FILE/main.cpp
Date: 2025-12-02 14:33:23
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 PMockBackendFile backend;
20
2/2
✓ Branch 0 (3→4) taken 1 times.
✓ Branch 2 (4→5) taken 1 times.
1 PMockBackendFile::Socket socket, otherSocket;
21
8/11
✓ Branch 0 (7→8) taken 1 times.
✓ Branch 2 (10→11) taken 1 times.
✓ Branch 4 (13→14) taken 1 times.
✓ Branch 6 (14→15) 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 (19→20) not taken.
✓ Branch 15 (19→21) taken 1 times.
✗ Branch 16 (112→113) not taken.
✗ Branch 17 (112→114) not taken.
5 data_stream_assert(backend.createServerSocket(socket, PSocketParam{hostName, port}, PMockBackendFile::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.
2 socket.setMockPrefix("file_");
24
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 (43→44) taken 1 times.
✓ Branch 8 (44→45) taken 1 times.
5 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 PMockBackendFile::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 (58→59) taken 10 times.
✓ Branch 2 (61→62) taken 10 times.
✓ Branch 4 (64→65) taken 10 times.
✓ Branch 6 (65→66) taken 10 times.
✓ Branch 8 (66→67) taken 10 times.
50 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 (85→86) taken 1 times.
✓ Branch 6 (88→89) taken 1 times.
✓ Branch 8 (91→92) taken 1 times.
✓ Branch 10 (92→93) taken 1 times.
✓ Branch 12 (93→94) taken 1 times.
✗ Branch 14 (95→96) not taken.
✓ Branch 15 (95→97) taken 1 times.
✗ Branch 16 (185→186) not taken.
✗ Branch 17 (185→187) not taken.
9 data_stream_assert(phoenix_createMockBackend(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(PMockBackendFile::Socket & socket){
41 11 PMockBackendFile::Message msg;
42
5/5
✓ Branch 0 (5→6) taken 11 times.
✓ Branch 2 (8→9) taken 11 times.
✓ Branch 4 (11→12) taken 11 times.
✓ Branch 6 (12→13) taken 11 times.
✓ Branch 8 (13→14) taken 11 times.
66 data_stream_assert(socket.recvMsg(msg, PRecvFlag::BLOCK) == PRecvStatus::OK);
43
6/6
✓ Branch 0 (22→23) taken 11 times.
✓ Branch 2 (25→26) taken 11 times.
✓ Branch 4 (28→29) taken 11 times.
✓ Branch 6 (32→33) 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 (48→49) taken 11 times.
✓ Branch 4 (51→52) taken 11 times.
✓ Branch 6 (55→56) 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], (PMockBackendFile::Message::value_type)1lu));
46
6/6
✓ Branch 0 (68→69) taken 11 times.
✓ Branch 2 (71→72) taken 11 times.
✓ Branch 4 (74→75) taken 11 times.
✓ Branch 6 (78→79) 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], (PMockBackendFile::Message::value_type)2lu));
47
6/6
✓ Branch 0 (91→92) taken 11 times.
✓ Branch 2 (94→95) taken 11 times.
✓ Branch 4 (97→98) taken 11 times.
✓ Branch 6 (101→102) 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], (PMockBackendFile::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 PMockBackendFile backend;
57
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::Socket socket;
58
8/11
✓ 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 (14→15) taken 1 times.
✓ Branch 10 (15→16) taken 1 times.
✓ Branch 12 (16→17) taken 1 times.
✗ Branch 14 (18→19) not taken.
✓ Branch 15 (18→20) taken 1 times.
✗ Branch 16 (61→62) not taken.
✗ Branch 17 (61→63) not taken.
5 data_stream_assert(backend.createClientSocket(socket, PSocketParam{hostName, port}, PMockBackendFile::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.
2 socket.setMockPrefix("file_");
61
5/5
✓ Branch 0 (35→36) taken 1 times.
✓ Branch 2 (38→39) taken 1 times.
✓ Branch 4 (41→42) taken 1 times.
✓ Branch 6 (42→43) taken 1 times.
✓ Branch 8 (43→44) taken 1 times.
5 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 PMockBackendFile backend;
72
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::Socket socket;
73 // Test with an invalid path
74
8/11
✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (58→59) not taken.
✗ Branch 17 (58→60) not taken.
8 data_stream_assert(backend.createClientSocket(socket, PSocketParam{"localhost", 8888}, PMockBackendFile::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 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (45→46) taken 1 times.
✓ Branch 8 (46→47) taken 1 times.
5 data_stream_assert(socket.isConnected());
80 1 }
81
82 ///Test the PMockBackendFile
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 PMockBackendFile backend;
94
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::Socket validSocket;
95
8/11
✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (80→81) not taken.
✗ Branch 17 (80→82) not taken.
8 data_stream_assert(backend.createClientSocket(validSocket, PSocketParam{"localhost", 5555}, PMockBackendFile::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 PMockBackendFile::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 (41→42) taken 1 times.
✓ Branch 2 (44→45) taken 1 times.
✓ Branch 4 (47→48) 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 (58→59) taken 1 times.
✓ Branch 2 (61→62) taken 1 times.
✓ Branch 4 (64→65) taken 1 times.
✓ Branch 6 (65→66) taken 1 times.
✓ Branch 8 (66→67) taken 1 times.
5 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 PMockBackendFile backend;
109
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::Socket readSocket;
110
8/11
✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (150→151) not taken.
✗ Branch 17 (150→152) not taken.
8 data_stream_assert(backend.createClientSocket(readSocket, PSocketParam{"localhost", 5555}, PMockBackendFile::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 PMockBackendFile::Message receivedMsg;
114
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 (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 (56→57) taken 1 times.
✓ Branch 2 (59→60) taken 1 times.
✓ Branch 4 (62→63) 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 (73→74) taken 1 times.
✓ Branch 2 (76→77) taken 1 times.
✓ Branch 4 (79→80) taken 1 times.
✓ Branch 6 (80→81) taken 1 times.
✓ Branch 8 (81→82) taken 1 times.
5 data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK);
118 // Test send with overflowing eventIndex (lines 110-115)
119 1 PMockBackendFile::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 (93→94) taken 1 times.
✓ Branch 2 (96→97) taken 1 times.
✓ Branch 4 (99→100) 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 (110→111) taken 1 times.
✓ Branch 2 (113→114) taken 1 times.
✓ Branch 4 (116→117) 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 (127→128) taken 1 times.
✓ Branch 2 (130→131) taken 1 times.
✓ Branch 4 (133→134) taken 1 times.
✓ Branch 6 (134→135) taken 1 times.
✓ Branch 8 (135→136) taken 1 times.
5 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