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 |