GCC Code Coverage Report


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