GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_GENERIC_MOCK_BACKEND/main.cpp
Date: 2025-09-10 13:03:48
Exec Total Coverage
Lines: 64 66 97.0%
Functions: 7 7 100.0%
Branches: 124 138 89.9%

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