GCC Code Coverage Report


Directory: ./
File: src/phoenix_mockControlBackend.cpp
Date: 2024-12-09 11:00:39
Exec Total Coverage
Lines: 79 104 76.0%
Branches: 58 125 46.4%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "phoenix_assert.h"
8 #include "data_stream_check_value.h"
9 #include "convertToString.h"
10
11 #include "phoenix_createMockControl.h"
12
13 #include "phoenix_mockControlBackend.h"
14
15
16 ///Append a value in a PMockConnectorVar
17 /** @param[out] connector : connector to be used
18 * @param[out] var : PMockConnectorVar to be modified
19 * @param varName : name of the variable which is used
20 * @param value : value to be append
21 */
22 71 void phoenix_connectorVarAppend(PMockControlBackend::Connector & connector, PMockConnectorVar & var, const std::string & varName, const PMockControlBackend::Message & value){
23 71 PLog & logger = *connector.logger;
24 71 phoenix_mockVarAppend(connector.eventId, var.getVecEvent(), value);
25 71 logger.getLogDebug() << "Push('"<<connector.hostname<<"', '"<<varName<<"') Write event " << connector.eventId << std::endl;
26 71 }
27
28 ///Append a value in a PMockConnectorVar
29 /** @param[out] manager : Manager to be used
30 * @param[out] var : PMockConnectorVar to be modified
31 * @param varName : name of the variable which is used
32 * @param value : value to be append
33 */
34 30 void phoenix_managerVarAppend(PMockControlBackend::Manager & manager, PMockConnectorVar & var, const std::string & varName, const PMockControlBackend::Message & value){
35 30 PLog & logger = manager.logger;
36 30 phoenix_mockVarAppend(manager.eventId, var.getVecEvent(), value);
37 30 logger.getLogDebug() << "ManagerVarAppend('"<<manager.name<<"', '"<<varName<<"') Write event " << manager.eventId << std::endl;
38 30 }
39
40 ///Check a value in a PMockConnectorVar
41 /** @param[out] connector : connector ot be used
42 * @param[out] var : PMockConnectorVar to be modified
43 * @param varName : name of the variable which is used
44 * @param value : value to be append
45 */
46 50 void phoenix_connectorVarCheck(PMockControlBackend::Connector & connector, PMockConnectorVar & var, const std::string & varName, const PMockControlBackend::Message & value){
47 50 PLog & logger = *connector.logger;
48 50 logger.getLogDebug() << "Push(host='"<<connector.hostname<<"', var='"<<varName<<"') Check event " << connector.eventId << std::endl;
49
50 50 std::vector< PMockEventVar > & vecEvent = var.getVecEvent();
51 50 size_t currentEventIndex = var.getCurrentInputMessageIndex();
52
1/2
✓ Branch 1 taken 50 times.
✗ Branch 2 not taken.
50 if(currentEventIndex < vecEvent.size()){
53 //Let's get the corresponding data of the event
54 50 PMockEventVar & tmpEvent = vecEvent[currentEventIndex];
55 50 PMockControlBackend::Message & expectedValue = tmpEvent.getVecData();
56 50 logger.getLogDebug() << "Check Push(host='"<<connector.hostname<<"', var='"<<varName<<"'), event " << connector.eventId << std::endl;
57 //Let's check if the event id are the same between the mock file and the connector
58
5/5
✓ Branch 2 taken 50 times.
✓ Branch 6 taken 50 times.
✓ Branch 10 taken 50 times.
✓ Branch 13 taken 50 times.
✓ Branch 16 taken 50 times.
50 phoenix_assert(tmpEvent.getEventId() == connector.eventId);
59
12/12
✓ Branch 2 taken 50 times.
✓ Branch 6 taken 50 times.
✓ Branch 10 taken 50 times.
✓ Branch 13 taken 50 times.
✓ Branch 16 taken 50 times.
✓ Branch 19 taken 50 times.
✓ Branch 22 taken 50 times.
✓ Branch 25 taken 50 times.
✓ Branch 28 taken 50 times.
✓ Branch 31 taken 50 times.
✓ Branch 34 taken 50 times.
✓ Branch 37 taken 50 times.
50 phoenix_assert(checkValue("Check Push(host='"+connector.hostname+"', var='"+varName+"'), event "+convertToString(connector.eventId)+ " ", value, expectedValue));
60 }else{
61 logger.getLogCritical() << "Push(host='"<<connector.hostname<<"', var='"<<varName<<"') Check event " << connector.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
62 phoenix_assert(currentEventIndex < vecEvent.size());
63 }
64 //Let's increment the index of the data to be used for the next time
65 50 var.setCurrentInputMessageIndex(var.getCurrentInputMessageIndex() + 1lu);
66 50 }
67
68 ///Check a value in a PMockConnectorVar
69 /** @param[out] manager : Manager ot be used
70 * @param[out] var : PMockConnectorVar to be modified
71 * @param varName : name of the variable which is used
72 * @param value : value to be append
73 */
74 10 void phoenix_managerVarCheck(PMockControlBackend::Manager & manager, PMockConnectorVar & var, const std::string & varName, const PMockControlBackend::Message & value){
75 10 PLog & logger = manager.logger;
76 10 logger.getLogDebug() << "ManagerVarCheck(host='"<<manager.name<<"', var='"<<varName<<"') Check event " << manager.eventId << std::endl;
77
78 10 std::vector< PMockEventVar > & vecEvent = var.getVecEvent();
79 10 size_t currentEventIndex = var.getCurrentInputMessageIndex();
80
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 if(currentEventIndex < vecEvent.size()){
81 //Let's get the corresponding data of the event
82 10 PMockEventVar & tmpEvent = vecEvent[currentEventIndex];
83 10 PMockControlBackend::Message & expectedValue = tmpEvent.getVecData();
84 10 logger.getLogDebug() << "Check ManagerVarCheck(host='"<<manager.name<<"', var='"<<varName<<"'), event " << manager.eventId << std::endl;
85 //Let's check if the event id are the same between the mock file and the manager
86
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 phoenix_assert(tmpEvent.getEventId() == manager.eventId);
87
12/12
✓ 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.
✓ Branch 19 taken 10 times.
✓ Branch 22 taken 10 times.
✓ Branch 25 taken 10 times.
✓ Branch 28 taken 10 times.
✓ Branch 31 taken 10 times.
✓ Branch 34 taken 10 times.
✓ Branch 37 taken 10 times.
10 phoenix_assert(checkValue("Check ManagerVarCheck(host='"+manager.name+"', var='"+varName+"'), event "+convertToString(manager.eventId)+ " ", value, expectedValue));
88 }else{
89 logger.getLogCritical() << "ManagerVarCheck(host='"<<manager.name<<"', var='"<<varName<<"') Check event " << manager.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
90 phoenix_assert(currentEventIndex < vecEvent.size());
91 }
92 //Let's increment the index of the data to be used for the next time
93 10 var.setCurrentInputMessageIndex(var.getCurrentInputMessageIndex() + 1lu);
94 10 }
95
96 ///Read a value in a PMockConnectorVar
97 /** @param[out] connector : connector ot be used
98 * @param[out] var : PMockConnectorVar to be modified
99 * @param varName : name of the variable which is used
100 * @param[out] value : value to be read
101 */
102 18 void phoenix_connectorVarRead(PMockControlBackend::Connector & connector, PMockConnectorVar & var, const std::string & varName, PMockControlBackend::Message & value){
103 18 PLog & logger = *connector.logger;
104 18 logger.getLogDebug() << "Pull(host='"<<connector.hostname<<"', var='"<<varName<<"') Event " << connector.eventId << std::endl;
105
106 18 std::vector< PMockEventVar > & vecEvent = var.getVecEvent();
107 18 size_t currentEventIndex = var.getCurrentInputMessageIndex();
108
1/2
✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
18 if(currentEventIndex < vecEvent.size()){
109 //Let's get the corresponding data of the event
110 18 PMockEventVar & tmpEvent = vecEvent[currentEventIndex];
111 18 value = tmpEvent.getVecData();
112 18 logger.getLogDebug() << "Pull(host='"<<connector.hostname<<"', var='"<<varName<<"'), event " << connector.eventId << std::endl;
113 }else{
114 logger.getLogCritical() << "Pull(host='"<<connector.hostname<<"', var='"<<varName<<"') Event " << connector.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
115 phoenix_assert(currentEventIndex < vecEvent.size());
116 }
117 //Let's increment the index of the data to be used for the next time
118 18 var.setCurrentInputMessageIndex(var.getCurrentInputMessageIndex() + 1lu);
119 18 }
120
121 ///Read a value in a PMockConnectorVar
122 /** @param[out] manager : manager ot be used
123 * @param[out] var : PMockConnectorVar to be modified
124 * @param varName : name of the variable which is used
125 * @param[out] value : value to be read
126 */
127 18 void phoenix_managerVarRead(PMockControlBackend::Manager & manager, PMockConnectorVar & var, const std::string & varName, PMockControlBackend::Message & value){
128 18 PLog & logger = manager.logger;
129 18 logger.getLogDebug() << "ManagerVarRead(manager='"<<manager.name<<"', var='"<<varName<<"') Event " << manager.eventId << std::endl;
130
131 18 std::vector< PMockEventVar > & vecEvent = var.getVecEvent();
132 18 size_t currentEventIndex = var.getCurrentInputMessageIndex();
133
1/2
✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
18 if(currentEventIndex < vecEvent.size()){
134 //Let's get the corresponding data of the event
135 18 PMockEventVar & tmpEvent = vecEvent[currentEventIndex];
136 18 value = tmpEvent.getVecData();
137 18 logger.getLogDebug() << "ManagerVarRead(manager='"<<manager.name<<"', var='"<<varName<<"'), event " << manager.eventId << std::endl;
138 }else{
139 logger.getLogCritical() << "ManagerVarRead(manager='"<<manager.name<<"', var='"<<varName<<"') Event " << manager.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
140 phoenix_assert(currentEventIndex < vecEvent.size());
141 }
142 //Let's increment the index of the data to be used for the next time
143 18 var.setCurrentInputMessageIndex(var.getCurrentInputMessageIndex() + 1lu);
144 18 }
145
146 ///Append a method call in the PMockConnectorCall
147 /** @param[out] connector : Connector to be used
148 * @param call : mock of method call
149 * @param functionName : name of the method
150 * @param vecParam : vector of parameters used for the call
151 */
152 void phoenix_connectorCallAppend(PMockControlBackend::Connector & connector, PMockConnectorCall & call,
153 const std::string & functionName, const std::vector<PMockControlBackend::Message> & vecParam)
154 {
155 std::vector<PMockControlBackend::Message> vecResult;
156 phoenix_connectorCallAppend(connector, call, vecResult, functionName, vecParam);
157 }
158
159 ///Append a method call in the PMockConnectorCall
160 /** @param[out] connector : Connector to be used
161 * @param call : mock of method call
162 * @param[out] vecResult : vector of results
163 * @param functionName : name of the method
164 * @param vecParam : vector of parameters used for the call
165 */
166 10 void phoenix_connectorCallAppend(PMockControlBackend::Connector & connector, PMockConnectorCall & call,
167 std::vector<PMockControlBackend::Message> & vecResult, const std::string & functionName, const std::vector<PMockControlBackend::Message> & vecParam)
168 {
169 10 PLog & logger = *connector.logger;
170
1/1
✓ Branch 1 taken 10 times.
10 PMockEventCall eventCall;
171
1/1
✓ Branch 1 taken 10 times.
10 eventCall.setEventId(connector.eventId);
172
1/1
✓ Branch 1 taken 10 times.
10 eventCall.setVecParam(vecParam);
173
1/1
✓ Branch 1 taken 10 times.
10 eventCall.setVecResult(vecResult);
174
2/2
✓ Branch 1 taken 10 times.
✓ Branch 4 taken 10 times.
10 call.getVecEvent().push_back(eventCall);
175
8/8
✓ Branch 1 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 13 taken 10 times.
✓ Branch 16 taken 10 times.
✓ Branch 19 taken 10 times.
✓ Branch 22 taken 10 times.
10 logger.getLogDebug() << "Call(host='"<<connector.hostname<<"', method='"<<functionName<<"') Write Event " << connector.eventId << std::endl;
176 10 }
177
178 ///Read a method call in the PMockConnectorCall
179 /** @param[out] connector : Connector to be used
180 * @param call : mock of method call
181 * @param[out] vecResult : vector of results
182 * @param functionName : name of the method
183 * @param vecParam : vector of parameters used for the call
184 */
185 20 void phoenix_connectorCallRead(PMockControlBackend::Connector & connector, PMockConnectorCall & call, std::vector<PMockControlBackend::Message> & vecResult, const std::string & functionName, const std::vector<PMockControlBackend::Message> & vecParam){
186 20 PLog & logger = *connector.logger;
187 20 logger.getLogDebug() << "Call(host='"<<connector.hostname<<"', method='"<<functionName<<"') Event " << connector.eventId << std::endl;
188
189 20 std::vector< PMockEventCall > & vecEvent = call.getVecEvent();
190 20 size_t currentEventIndex = call.getCurrentInputMessageIndex();
191
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 if(currentEventIndex < vecEvent.size()){
192 //Let's get the corresponding data of the event
193 20 PMockEventCall & tmpEvent = vecEvent[currentEventIndex];
194 20 logger.getLogDebug() << "Check Param Call(host='"<<connector.hostname<<"', method='"<<functionName<<"'), event " << connector.eventId << std::endl;
195
196
5/5
✓ Branch 2 taken 20 times.
✓ Branch 6 taken 20 times.
✓ Branch 10 taken 20 times.
✓ Branch 13 taken 20 times.
✓ Branch 16 taken 20 times.
20 phoenix_assert(tmpEvent.getEventId() == connector.eventId);
197 //TODO : improve the check value to avoid std::vector<std::vector<T> > compilation error because of pipe <<
198 // std::vector<PMockControlBackend::Message> & vecExpectedParam = tmpEvent.getVecParam();
199 // phoenix_assert(checkValue("Check Param Call(host='"+connector.hostname+"', method='"+functionName+"'), event "+convertToString(connector.eventId)+ " ", vecParam, vecExpectedParam));
200
201 20 vecResult = tmpEvent.getVecResult();
202
203 }else{
204 logger.getLogCritical() << "Call(host='"<<connector.hostname<<"', method='"<<functionName<<"') Event " << connector.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
205 phoenix_assert(currentEventIndex < vecEvent.size());
206 }
207 //Let's increment the index of the data to be used for the next time
208 20 call.setCurrentInputMessageIndex(call.getCurrentInputMessageIndex() + 1lu);
209 20 }
210
211 ///Check a method call in the PMockConnectorCall
212 /** @param[out] connector : Connector to be used
213 * @param call : mock of method call
214 * @param[out] vecResult : vector of results
215 * @param functionName : name of the method
216 * @param vecParam : vector of parameters used for the call
217 */
218 void phoenix_connectorCallCheck(PMockControlBackend::Connector & connector, PMockConnectorCall & call, std::vector<PMockControlBackend::Message> & vecResult, const std::string & functionName, const std::vector<PMockControlBackend::Message> & vecParam){
219 PLog & logger = *connector.logger;
220 logger.getLogDebug() << "Check Call(host='"<<connector.hostname<<"', method='"<<functionName<<"') Event " << connector.eventId << std::endl;
221
222 std::vector< PMockEventCall > & vecEvent = call.getVecEvent();
223 size_t currentEventIndex = call.getCurrentInputMessageIndex();
224 if(currentEventIndex < vecEvent.size()){
225 //Let's get the corresponding data of the event
226 PMockEventCall & tmpEvent = vecEvent[currentEventIndex];
227 logger.getLogDebug() << "Check Param Call(host='"<<connector.hostname<<"', method='"<<functionName<<"'), event " << connector.eventId << std::endl;
228
229 phoenix_assert(tmpEvent.getEventId() == connector.eventId);
230 //TODO : improve the check value to avoid std::vector<std::vector<T> > compilation error because of pipe <<
231 // std::vector<PMockControlBackend::Message> & vecExpectedParam = tmpEvent.getVecParam();
232 // phoenix_assert(checkValue("Check Param Call(host='"+connector.hostname+"', method='"+functionName+"'), event "+convertToString(connector.eventId)+ " ", vecParam, vecExpectedParam));
233
234 //TODO : improve the check value to avoid std::vector<std::vector<T> > compilation error because of pipe <<
235 // std::vector<PMockControlBackend::Message> & vecExpectedResult = tmpEvent.getVecResult();
236 // phoenix_assert(checkValue("Check Results Call(host='"+connector.hostname+"', method='"+functionName+"'), event "+convertToString(connector.eventId)+ " ", vecResult, vecExpectedResult));
237 // vecResult = tmpEvent.getVecResult();
238 }else{
239 logger.getLogCritical() << "Call(host='"<<connector.hostname<<"', method='"<<functionName<<"') Event " << connector.eventId << " index of current event("<<currentEventIndex<<") > number of events in mock file ("<<vecEvent.size()<<")" << std::endl;
240 phoenix_assert(currentEventIndex < vecEvent.size());
241 }
242 //Let's increment the index of the data to be used for the next time
243 call.setCurrentInputMessageIndex(call.getCurrentInputMessageIndex() + 1lu);
244 }
245