2 * Copyright (C) 2011, BMW AG
4 * GeniviAudioMananger AudioManagerDaemon
6 * \file databasetest.cpp
8 * \date 20-Oct-2011 3:42:04 PM
9 * \author Christian Mueller (christian.ei.mueller@bmw.de)
12 * GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
13 * Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de
15 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
16 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
17 * You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
18 * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
19 * Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
20 * As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
21 * Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.
23 * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
26 #include "CAmRouterTest.h"
28 #include "shared/CAmDltWrapper.h"
31 using namespace testing;
33 CAmRouterTest::CAmRouterTest() :
34 plistRoutingPluginDirs(), //
35 plistCommandPluginDirs(), //
37 pDatabaseHandler(std::string(":memory:")), //
38 pControlSender(std::string("")), //
39 pRouter(&pDatabaseHandler, &pControlSender), //
40 pRoutingSender(plistRoutingPluginDirs), //
41 pCommandSender(plistCommandPluginDirs), //
43 pMockControlInterface(), //
44 pRoutingInterfaceBackdoor(), //
45 pCommandInterfaceBackdoor(), //
46 pControlInterfaceBackdoor(), //
47 pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender,&pSocketHandler, &pRouter), //
48 pObserver(&pCommandSender, &pRoutingSender, &pSocketHandler)
50 pDatabaseHandler.registerObserver(&pObserver);
51 pCommandInterfaceBackdoor.injectInterface(&pCommandSender, &pMockInterface);
52 pControlInterfaceBackdoor.replaceController(&pControlSender, &pMockControlInterface);
55 CAmRouterTest::~CAmRouterTest()
59 void CAmRouterTest::SetUp()
61 logInfo("Routing Test started ");
64 void CAmRouterTest::TearDown()
68 ACTION(returnConnectionFormat){
72 //test that checks just sinks and source in a domain but connectionformats do not match
73 TEST_F(CAmRouterTest,simpleRoute2withDomainNoMatchFormats)
75 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
77 //initialize 2 domains
79 am_domainID_t domainID1;
82 domain1.name = "domain1";
83 domain1.busname = "domain1bus";
84 domain1.state = DS_CONTROLLED;
86 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
89 am_sourceID_t sourceID;
91 source.domainID = domainID1;
92 source.name = "source1";
93 source.sourceState = SS_ON;
95 source.sourceClassID = 5;
96 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
98 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
103 sink.domainID = domainID1;
106 sink.sinkClassID = 5;
107 sink.muteState = MS_MUTED;
108 sink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
110 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
112 std::vector<am_Route_s> listRoutes;
113 std::vector<am_RoutingElement_s> listRoutingElements;
114 am_RoutingElement_s hopp1;
116 hopp1.sinkID = sinkID;
117 hopp1.sourceID = sourceID;
118 hopp1.domainID = domainID1;
119 hopp1.connectionFormat = source.listConnectionFormats[0];
121 listRoutingElements.push_back(hopp1);
123 am_Route_s compareRoute;
124 compareRoute.route = listRoutingElements;
125 compareRoute.sinkID = sinkID;
126 compareRoute.sourceID = sourceID;
128 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
129 ASSERT_EQ(0, listRoutes.size());
133 //test that checks just sinks and source in a domain
134 TEST_F(CAmRouterTest,simpleRoute2withDomain)
136 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
138 //initialize 2 domains
140 am_domainID_t domainID1;
142 domain1.domainID = 0;
143 domain1.name = "domain1";
144 domain1.busname = "domain1bus";
145 domain1.state = DS_CONTROLLED;
147 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
150 am_sourceID_t sourceID;
152 source.domainID = domainID1;
153 source.name = "source1";
154 source.sourceState = SS_ON;
156 source.sourceClassID = 5;
157 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
159 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
164 sink.domainID = domainID1;
167 sink.sinkClassID = 5;
168 sink.muteState = MS_MUTED;
169 sink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
171 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
173 std::vector<am_Route_s> listRoutes;
174 std::vector<am_RoutingElement_s> listRoutingElements;
175 am_RoutingElement_s hopp1;
177 hopp1.sinkID = sinkID;
178 hopp1.sourceID = sourceID;
179 hopp1.domainID = domainID1;
180 hopp1.connectionFormat = source.listConnectionFormats[0];
182 listRoutingElements.push_back(hopp1);
184 am_Route_s compareRoute;
185 compareRoute.route = listRoutingElements;
186 compareRoute.sinkID = sinkID;
187 compareRoute.sourceID = sourceID;
189 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
190 ASSERT_EQ(1, listRoutes.size());
191 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
195 //test that checks just 2 domains, one sink one source with only one connection format each
196 TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFree)
200 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
202 //initialize 2 domains
203 am_Domain_s domain1, domain2;
204 am_domainID_t domainID1, domainID2;
206 domain1.domainID = 0;
207 domain1.name = "domain1";
208 domain1.busname = "domain1bus";
209 domain1.state = DS_CONTROLLED;
210 domain2.domainID = 0;
211 domain2.name = "domain2";
212 domain2.busname = "domain2bus";
213 domain2.state = DS_CONTROLLED;
215 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
216 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
218 am_Source_s source, gwSource;
219 am_sourceID_t sourceID, gwSourceID;
221 source.domainID = domainID1;
222 source.name = "source1";
223 source.sourceState = SS_ON;
225 source.sourceClassID = 5;
226 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
228 gwSource.domainID = domainID2;
229 gwSource.name = "gwsource1";
230 gwSource.sourceState = SS_ON;
231 gwSource.sourceID = 0;
232 gwSource.sourceClassID = 5;
233 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
235 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
236 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
238 am_Sink_s sink, gwSink;
239 am_sinkID_t sinkID, gwSinkID;
241 sink.domainID = domainID2;
244 sink.sinkClassID = 5;
245 sink.muteState = MS_MUTED;
246 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
248 gwSink.domainID = domainID1;
249 gwSink.name = "gwSink";
251 gwSink.sinkClassID = 5;
252 gwSink.muteState = MS_MUTED;
253 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
255 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
256 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
258 am_Gateway_s gateway;
259 am_gatewayID_t gatewayID;
261 gateway.controlDomainID = domainID1;
262 gateway.gatewayID = 0;
263 gateway.sinkID = gwSinkID;
264 gateway.sourceID = gwSourceID;
265 gateway.domainSourceID = domainID2;
266 gateway.domainSinkID = domainID1;
267 gateway.listSinkFormats = gwSink.listConnectionFormats;
268 gateway.listSourceFormats = gwSource.listConnectionFormats;
269 gateway.convertionMatrix.push_back(true);
270 gateway.name = "gateway";
272 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
274 std::vector<am_Route_s> listRoutes;
275 std::vector<am_RoutingElement_s> listRoutingElements;
276 am_RoutingElement_s hopp1;
277 am_RoutingElement_s hopp2;
279 hopp1.sinkID = gwSinkID;
280 hopp1.sourceID = sourceID;
281 hopp1.domainID = domainID1;
282 hopp1.connectionFormat = source.listConnectionFormats[0];
284 hopp2.sinkID = sinkID;
285 hopp2.sourceID = gwSourceID;
286 hopp2.domainID = domainID2;
287 hopp2.connectionFormat = sink.listConnectionFormats[0];
289 listRoutingElements.push_back(hopp1);
290 listRoutingElements.push_back(hopp2);
292 am_Route_s compareRoute;
293 compareRoute.route = listRoutingElements;
294 compareRoute.sinkID = sinkID;
295 compareRoute.sourceID = sourceID;
297 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
298 ASSERT_EQ(1, listRoutes.size());
299 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
303 //test that checks just 2 domains, one sink one source with only one connection format each
304 TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFreeNotFree)
308 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
310 //initialize 2 domains
311 am_Domain_s domain1, domain2;
312 am_domainID_t domainID1, domainID2;
314 domain1.domainID = 0;
315 domain1.name = "domain1";
316 domain1.busname = "domain1bus";
317 domain1.state = DS_CONTROLLED;
318 domain2.domainID = 0;
319 domain2.name = "domain2";
320 domain2.busname = "domain2bus";
321 domain2.state = DS_CONTROLLED;
323 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
324 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
326 am_Source_s source, gwSource;
327 am_sourceID_t sourceID, gwSourceID;
329 source.domainID = domainID1;
330 source.name = "source1";
331 source.sourceState = SS_ON;
333 source.sourceClassID = 5;
334 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
336 gwSource.domainID = domainID2;
337 gwSource.name = "gwsource1";
338 gwSource.sourceState = SS_ON;
339 gwSource.sourceID = 0;
340 gwSource.sourceClassID = 5;
341 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
343 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
344 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
346 am_Sink_s sink, gwSink;
347 am_sinkID_t sinkID, gwSinkID;
349 sink.domainID = domainID2;
352 sink.sinkClassID = 5;
353 sink.muteState = MS_MUTED;
354 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
356 gwSink.domainID = domainID1;
357 gwSink.name = "gwSink";
359 gwSink.sinkClassID = 5;
360 gwSink.muteState = MS_MUTED;
361 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
363 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
364 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
366 am_Gateway_s gateway;
367 am_gatewayID_t gatewayID;
369 gateway.controlDomainID = domainID1;
370 gateway.gatewayID = 0;
371 gateway.sinkID = gwSinkID;
372 gateway.sourceID = gwSourceID;
373 gateway.domainSourceID = domainID2;
374 gateway.domainSinkID = domainID1;
375 gateway.listSinkFormats = gwSink.listConnectionFormats;
376 gateway.listSourceFormats = gwSource.listConnectionFormats;
377 gateway.convertionMatrix.push_back(true);
378 gateway.name = "gateway";
380 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
382 std::vector<am_Route_s> listRoutes;
383 std::vector<am_RoutingElement_s> listRoutingElements;
384 am_RoutingElement_s hopp1;
385 am_RoutingElement_s hopp2;
387 hopp1.sinkID = gwSinkID;
388 hopp1.sourceID = sourceID;
389 hopp1.domainID = domainID1;
390 hopp1.connectionFormat = source.listConnectionFormats[0];
392 hopp2.sinkID = sinkID;
393 hopp2.sourceID = gwSourceID;
394 hopp2.domainID = domainID2;
395 hopp2.connectionFormat = sink.listConnectionFormats[0];
397 listRoutingElements.push_back(hopp1);
398 listRoutingElements.push_back(hopp2);
400 am_Route_s compareRoute;
401 compareRoute.route = listRoutingElements;
402 compareRoute.sinkID = sinkID;
403 compareRoute.sourceID = sourceID;
405 am_Connection_s connection,connection1;
406 am_connectionID_t id1,id2;
407 connection.sourceID=sourceID;
408 connection.sinkID=gwSinkID;
409 connection.connectionFormat=CF_GENIVI_ANALOG;
410 connection.connectionID=0;
411 connection1.sourceID=gwSourceID;
412 connection1.sinkID=sinkID;
413 connection1.connectionFormat=CF_GENIVI_ANALOG;
414 connection1.connectionID=0;
416 ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection,id1));
417 ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection1,id2));
419 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
420 ASSERT_EQ(0, listRoutes.size());
422 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
423 ASSERT_EQ(1, listRoutes.size());
424 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
427 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
428 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_2)
431 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
433 //initialize 2 domains
434 am_Domain_s domain1, domain2, domain3;
435 am_domainID_t domainID1, domainID2, domainID3;
437 domain1.domainID = 0;
438 domain1.name = "domain1";
439 domain1.busname = "domain1bus";
440 domain1.state = DS_CONTROLLED;
441 domain2.domainID = 0;
442 domain2.name = "domain2";
443 domain2.busname = "domain2bus";
444 domain2.state = DS_CONTROLLED;
445 domain3.domainID = 0;
446 domain3.name = "domain3";
447 domain3.busname = "domain3bus";
448 domain3.state = DS_CONTROLLED;
450 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
451 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
452 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
454 am_Source_s source, gwSource, gwSource1;
455 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
457 source.domainID = domainID1;
458 source.name = "source1";
459 source.sourceState = SS_ON;
461 source.sourceClassID = 5;
462 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
463 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
465 gwSource.domainID = domainID2;
466 gwSource.name = "gwsource1";
467 gwSource.sourceState = SS_ON;
468 gwSource.sourceID = 0;
469 gwSource.sourceClassID = 5;
470 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
471 gwSource.listConnectionFormats.push_back(CF_GENIVI_STEREO);
472 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
474 gwSource1.domainID = domainID3;
475 gwSource1.name = "gwsource2";
476 gwSource1.sourceState = SS_ON;
477 gwSource1.sourceID = 0;
478 gwSource1.sourceClassID = 5;
479 gwSource1.listConnectionFormats.push_back(CF_GENIVI_STEREO);
480 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
482 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
483 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
484 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
486 am_Sink_s sink, gwSink, gwSink1;
487 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
489 sink.domainID = domainID3;
492 sink.sinkClassID = 5;
493 sink.muteState = MS_MUTED;
494 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
496 gwSink.domainID = domainID1;
497 gwSink.name = "gwSink";
499 gwSink.sinkClassID = 5;
500 gwSink.muteState = MS_MUTED;
501 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
502 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
504 gwSink1.domainID = domainID2;
505 gwSink1.name = "gwSink1";
507 gwSink1.sinkClassID = 5;
508 gwSink1.muteState = MS_MUTED;
509 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
510 gwSink1.listConnectionFormats.push_back(CF_GENIVI_STEREO);
512 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
513 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
514 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
516 am_Gateway_s gateway, gateway1;
517 am_gatewayID_t gatewayID, gatewayID1;
519 gateway.controlDomainID = domainID1;
520 gateway.gatewayID = 0;
521 gateway.sinkID = gwSinkID;
522 gateway.sourceID = gwSourceID;
523 gateway.domainSourceID = domainID2;
524 gateway.domainSinkID = domainID1;
525 gateway.listSinkFormats = gwSink.listConnectionFormats;
526 gateway.listSourceFormats = gwSource.listConnectionFormats;
527 gateway.convertionMatrix.push_back(false);
528 gateway.convertionMatrix.push_back(false);
529 gateway.convertionMatrix.push_back(false);
530 gateway.convertionMatrix.push_back(true);
531 gateway.convertionMatrix.push_back(true);
532 gateway.convertionMatrix.push_back(false);
533 gateway.name = "gateway";
535 gateway1.controlDomainID = domainID2;
536 gateway1.gatewayID = 0;
537 gateway1.sinkID = gwSinkID1;
538 gateway1.sourceID = gwSourceID1;
539 gateway1.domainSourceID = domainID3;
540 gateway1.domainSinkID = domainID2;
541 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
542 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
543 gateway1.convertionMatrix.push_back(false);
544 gateway1.convertionMatrix.push_back(false);
545 gateway1.convertionMatrix.push_back(false);
546 gateway1.convertionMatrix.push_back(true);
547 gateway1.name = "gateway1";
549 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
550 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
552 std::vector<am_Route_s> listRoutes;
553 std::vector<am_RoutingElement_s> listRoutingElements;
554 am_RoutingElement_s hopp1;
555 am_RoutingElement_s hopp2;
556 am_RoutingElement_s hopp3;
558 hopp1.sourceID = sourceID;
559 hopp1.sinkID = gwSinkID;
560 hopp1.domainID = domainID1;
561 hopp1.connectionFormat = source.listConnectionFormats[1];
563 hopp2.sourceID = gwSourceID;
564 hopp2.sinkID = gwSinkID1;
565 hopp2.domainID = domainID2;
566 hopp2.connectionFormat = gwSink1.listConnectionFormats[1];
568 hopp3.sourceID = gwSourceID1;
569 hopp3.sinkID = sinkID;
570 hopp3.domainID = domainID3;
571 hopp3.connectionFormat = sink.listConnectionFormats[0];
573 listRoutingElements.push_back(hopp1);
574 listRoutingElements.push_back(hopp2);
575 listRoutingElements.push_back(hopp3);
577 am_Route_s compareRoute;
578 compareRoute.route = listRoutingElements;
579 compareRoute.sinkID = sinkID;
580 compareRoute.sourceID = sourceID;
582 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
583 ASSERT_EQ(1, listRoutes.size());
584 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
587 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
588 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_1)
590 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
592 //initialize 2 domains
593 am_Domain_s domain1, domain2, domain3;
594 am_domainID_t domainID1, domainID2, domainID3;
596 domain1.domainID = 0;
597 domain1.name = "domain1";
598 domain1.busname = "domain1bus";
599 domain1.state = DS_CONTROLLED;
600 domain2.domainID = 0;
601 domain2.name = "domain2";
602 domain2.busname = "domain2bus";
603 domain2.state = DS_CONTROLLED;
604 domain3.domainID = 0;
605 domain3.name = "domain3";
606 domain3.busname = "domain3bus";
607 domain3.state = DS_CONTROLLED;
609 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
610 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
611 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
613 am_Source_s source, gwSource, gwSource1;
614 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
616 source.domainID = domainID1;
617 source.name = "source1";
618 source.sourceState = SS_ON;
620 source.sourceClassID = 5;
621 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
622 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
624 gwSource.domainID = domainID2;
625 gwSource.name = "gwsource1";
626 gwSource.sourceState = SS_ON;
627 gwSource.sourceID = 0;
628 gwSource.sourceClassID = 5;
629 gwSource.listConnectionFormats.push_back(CF_GENIVI_STEREO);
630 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
631 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
633 gwSource1.domainID = domainID3;
634 gwSource1.name = "gwsource2";
635 gwSource1.sourceState = SS_ON;
636 gwSource1.sourceID = 0;
637 gwSource1.sourceClassID = 5;
638 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
640 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
641 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
642 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
644 am_Sink_s sink, gwSink, gwSink1;
645 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
647 sink.domainID = domainID3;
650 sink.sinkClassID = 5;
651 sink.muteState = MS_MUTED;
652 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
654 gwSink.domainID = domainID1;
655 gwSink.name = "gwSink";
657 gwSink.sinkClassID = 5;
658 gwSink.muteState = MS_MUTED;
659 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
660 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
662 gwSink1.domainID = domainID2;
663 gwSink1.name = "gwSink1";
665 gwSink1.sinkClassID = 5;
666 gwSink1.muteState = MS_MUTED;
667 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
669 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
670 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
671 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
673 am_Gateway_s gateway, gateway1;
674 am_gatewayID_t gatewayID, gatewayID1;
676 gateway.controlDomainID = domainID1;
677 gateway.gatewayID = 0;
678 gateway.sinkID = gwSinkID;
679 gateway.sourceID = gwSourceID;
680 gateway.domainSourceID = domainID2;
681 gateway.domainSinkID = domainID1;
682 gateway.listSinkFormats = gwSink.listConnectionFormats;
683 gateway.listSourceFormats = gwSource.listConnectionFormats;
684 gateway.convertionMatrix.push_back(false);
685 gateway.convertionMatrix.push_back(false);
686 gateway.convertionMatrix.push_back(false);
687 gateway.convertionMatrix.push_back(false);
688 gateway.convertionMatrix.push_back(true);
689 gateway.convertionMatrix.push_back(false);
690 gateway.name = "gateway";
692 gateway1.controlDomainID = domainID2;
693 gateway1.gatewayID = 0;
694 gateway1.sinkID = gwSinkID1;
695 gateway1.sourceID = gwSourceID1;
696 gateway1.domainSourceID = domainID3;
697 gateway1.domainSinkID = domainID2;
698 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
699 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
700 gateway1.convertionMatrix.push_back(true);
701 gateway1.name = "gateway";
703 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
704 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
706 std::vector<am_Route_s> listRoutes;
707 std::vector<am_RoutingElement_s> listRoutingElements;
708 am_RoutingElement_s hopp1;
709 am_RoutingElement_s hopp2;
710 am_RoutingElement_s hopp3;
712 hopp1.sourceID = sourceID;
713 hopp1.sinkID = gwSinkID;
714 hopp1.domainID = domainID1;
715 hopp1.connectionFormat = source.listConnectionFormats[0];
717 hopp2.sourceID = gwSourceID;
718 hopp2.sinkID = gwSinkID1;
719 hopp2.domainID = domainID2;
720 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
722 hopp3.sourceID = gwSourceID1;
723 hopp3.sinkID = sinkID;
724 hopp3.domainID = domainID3;
725 hopp3.connectionFormat = sink.listConnectionFormats[0];
727 listRoutingElements.push_back(hopp1);
728 listRoutingElements.push_back(hopp2);
729 listRoutingElements.push_back(hopp3);
731 am_Route_s compareRoute;
732 compareRoute.route = listRoutingElements;
733 compareRoute.sinkID = sinkID;
734 compareRoute.sourceID = sourceID;
736 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
737 ASSERT_EQ(1, listRoutes.size());
738 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
742 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
743 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats)
745 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
747 //initialize 2 domains
748 am_Domain_s domain1, domain2, domain3;
749 am_domainID_t domainID1, domainID2, domainID3;
751 domain1.domainID = 0;
752 domain1.name = "domain1";
753 domain1.busname = "domain1bus";
754 domain1.state = DS_CONTROLLED;
755 domain2.domainID = 0;
756 domain2.name = "domain2";
757 domain2.busname = "domain2bus";
758 domain2.state = DS_CONTROLLED;
759 domain3.domainID = 0;
760 domain3.name = "domain3";
761 domain3.busname = "domain3bus";
762 domain3.state = DS_CONTROLLED;
764 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
765 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
766 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
768 am_Source_s source, gwSource, gwSource1;
769 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
771 source.domainID = domainID1;
772 source.name = "source1";
773 source.sourceState = SS_ON;
775 source.sourceClassID = 5;
776 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
777 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
779 gwSource.domainID = domainID2;
780 gwSource.name = "gwsource1";
781 gwSource.sourceState = SS_ON;
782 gwSource.sourceID = 0;
783 gwSource.sourceClassID = 5;
784 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
786 gwSource1.domainID = domainID3;
787 gwSource1.name = "gwsource2";
788 gwSource1.sourceState = SS_ON;
789 gwSource1.sourceID = 0;
790 gwSource1.sourceClassID = 5;
791 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
793 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
794 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
795 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
797 am_Sink_s sink, gwSink, gwSink1;
798 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
800 sink.domainID = domainID3;
803 sink.sinkClassID = 5;
804 sink.muteState = MS_MUTED;
805 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
807 gwSink.domainID = domainID1;
808 gwSink.name = "gwSink";
810 gwSink.sinkClassID = 5;
811 gwSink.muteState = MS_MUTED;
812 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
813 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
815 gwSink1.domainID = domainID2;
816 gwSink1.name = "gwSink1";
818 gwSink1.sinkClassID = 5;
819 gwSink1.muteState = MS_MUTED;
820 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
822 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
823 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
824 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
826 am_Gateway_s gateway, gateway1;
827 am_gatewayID_t gatewayID, gatewayID1;
829 gateway.controlDomainID = domainID1;
830 gateway.gatewayID = 0;
831 gateway.sinkID = gwSinkID;
832 gateway.sourceID = gwSourceID;
833 gateway.domainSourceID = domainID2;
834 gateway.domainSinkID = domainID1;
835 gateway.listSinkFormats = gwSink.listConnectionFormats;
836 gateway.listSourceFormats = gwSource.listConnectionFormats;
837 gateway.convertionMatrix.push_back(false);
838 gateway.convertionMatrix.push_back(true);
839 gateway.name = "gateway";
841 gateway1.controlDomainID = domainID2;
842 gateway1.gatewayID = 0;
843 gateway1.sinkID = gwSinkID1;
844 gateway1.sourceID = gwSourceID1;
845 gateway1.domainSourceID = domainID3;
846 gateway1.domainSinkID = domainID2;
847 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
848 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
849 gateway1.convertionMatrix.push_back(true);
850 gateway1.name = "gateway";
852 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
853 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
855 std::vector<am_Route_s> listRoutes;
856 std::vector<am_RoutingElement_s> listRoutingElements;
857 am_RoutingElement_s hopp1;
858 am_RoutingElement_s hopp2;
859 am_RoutingElement_s hopp3;
861 hopp1.sourceID = sourceID;
862 hopp1.sinkID = gwSinkID;
863 hopp1.domainID = domainID1;
864 hopp1.connectionFormat = source.listConnectionFormats[1];
866 hopp2.sourceID = gwSourceID;
867 hopp2.sinkID = gwSinkID1;
868 hopp2.domainID = domainID2;
869 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
871 hopp3.sourceID = gwSourceID1;
872 hopp3.sinkID = sinkID;
873 hopp3.domainID = domainID3;
874 hopp3.connectionFormat = sink.listConnectionFormats[0];
876 listRoutingElements.push_back(hopp1);
877 listRoutingElements.push_back(hopp2);
878 listRoutingElements.push_back(hopp3);
880 am_Route_s compareRoute;
881 compareRoute.route = listRoutingElements;
882 compareRoute.sinkID = sinkID;
883 compareRoute.sourceID = sourceID;
885 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
886 ASSERT_EQ(1, listRoutes.size());
887 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
891 //test that checks 4 domains, one sink and one source but there are 2 routes because there are 2 gateways
892 TEST_F(CAmRouterTest,simpleRoute4Domains2Routes)
894 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
896 //initialize 2 domains
897 am_Domain_s domain1, domain2, domain3, domain4;
898 am_domainID_t domainID1, domainID2, domainID3, domainID4;
900 domain1.domainID = 0;
901 domain1.name = "domain1";
902 domain1.busname = "domain1bus";
903 domain1.state = DS_CONTROLLED;
904 domain2.domainID = 0;
905 domain2.name = "domain2";
906 domain2.busname = "domain2bus";
907 domain2.state = DS_CONTROLLED;
908 domain3.domainID = 0;
909 domain3.name = "domain3";
910 domain3.busname = "domain3bus";
911 domain3.state = DS_CONTROLLED;
912 domain4.domainID = 0;
913 domain4.name = "domain4";
914 domain4.busname = "domain4bus";
915 domain4.state = DS_CONTROLLED;
917 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
918 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
919 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
920 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain4,domainID4));
922 am_Source_s source, gwSource, gwSource1, gwSource2, gwSource3;
923 am_sourceID_t sourceID, gwSourceID, gwSourceID1, gwSourceID2, gwSourceID3;
925 source.domainID = domainID1;
926 source.name = "source1";
927 source.sourceState = SS_ON;
929 source.sourceClassID = 5;
930 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
932 gwSource.domainID = domainID2;
933 gwSource.name = "gwsource1";
934 gwSource.sourceState = SS_ON;
935 gwSource.sourceID = 0;
936 gwSource.sourceClassID = 5;
937 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
939 gwSource1.domainID = domainID3;
940 gwSource1.name = "gwsource2";
941 gwSource1.sourceState = SS_ON;
942 gwSource1.sourceID = 0;
943 gwSource1.sourceClassID = 5;
944 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
946 gwSource2.domainID = domainID4;
947 gwSource2.name = "gwsource3";
948 gwSource2.sourceState = SS_OFF;
949 gwSource2.sourceID = 0;
950 gwSource2.sourceClassID = 5;
951 gwSource2.listConnectionFormats.push_back(CF_GENIVI_STEREO);
953 gwSource3.domainID = domainID3;
954 gwSource3.name = "gwsource4";
955 gwSource3.sourceState = SS_OFF;
956 gwSource3.sourceID = 0;
957 gwSource3.sourceClassID = 5;
958 gwSource3.listConnectionFormats.push_back(CF_GENIVI_MONO);
960 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
961 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
962 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
963 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource2,gwSourceID2));
964 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource3,gwSourceID3));
966 am_Sink_s sink, gwSink, gwSink1, gwSink2, gwSink3;
967 am_sinkID_t sinkID, gwSinkID, gwSinkID1, gwSinkID2, gwSinkID3;
969 gwSink.domainID = domainID1;
970 gwSink.name = "gwSink";
972 gwSink.sinkClassID = 5;
973 gwSink.muteState = MS_MUTED;
974 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
976 gwSink1.domainID = domainID2;
977 gwSink1.name = "gwSink1";
979 gwSink1.sinkClassID = 5;
980 gwSink1.muteState = MS_MUTED;
981 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
983 gwSink2.domainID = domainID3;
984 gwSink2.name = "gwSink2";
986 gwSink2.sinkClassID = 5;
987 gwSink2.muteState = MS_MUTED;
988 gwSink2.listConnectionFormats.push_back(CF_GENIVI_MONO);
990 gwSink3.domainID = domainID2;
991 gwSink3.name = "gwSink3";
993 gwSink3.sinkClassID = 5;
994 gwSink3.muteState = MS_MUTED;
995 gwSink3.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
997 sink.domainID = domainID4;
1000 sink.sinkClassID = 5;
1001 sink.muteState = MS_MUTED;
1002 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1004 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1005 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1006 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1007 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink2,gwSinkID2));
1008 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink3,gwSinkID3));
1010 am_Gateway_s gateway, gateway1, gateway2, gateway3;
1011 am_gatewayID_t gatewayID, gatewayID1, gatewayID2, gatewayID3;
1013 gateway.controlDomainID = domainID1;
1014 gateway.gatewayID = 0;
1015 gateway.sinkID = gwSinkID;
1016 gateway.sourceID = gwSourceID;
1017 gateway.domainSourceID = domainID2;
1018 gateway.domainSinkID = domainID1;
1019 gateway.listSinkFormats = gwSink.listConnectionFormats;
1020 gateway.listSourceFormats = gwSource.listConnectionFormats;
1021 gateway.convertionMatrix.push_back(true);
1022 gateway.name = "gateway";
1024 gateway1.controlDomainID = domainID2;
1025 gateway1.gatewayID = 0;
1026 gateway1.sinkID = gwSinkID1;
1027 gateway1.sourceID = gwSourceID1;
1028 gateway1.domainSourceID = domainID3;
1029 gateway1.domainSinkID = domainID2;
1030 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1031 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1032 gateway1.convertionMatrix.push_back(true);
1033 gateway1.name = "gateway1";
1035 gateway2.controlDomainID = domainID3;
1036 gateway2.gatewayID = 0;
1037 gateway2.sinkID = gwSinkID2;
1038 gateway2.sourceID = gwSourceID2;
1039 gateway2.domainSourceID = domainID4;
1040 gateway2.domainSinkID = domainID3;
1041 gateway2.listSinkFormats = gwSink2.listConnectionFormats;
1042 gateway2.listSourceFormats = gwSource2.listConnectionFormats;
1043 gateway2.convertionMatrix.push_back(true);
1044 gateway2.name = "gateway2";
1046 gateway3.controlDomainID = domainID2;
1047 gateway3.gatewayID = 0;
1048 gateway3.sinkID = gwSinkID3;
1049 gateway3.sourceID = gwSourceID3;
1050 gateway3.domainSourceID = domainID3;
1051 gateway3.domainSinkID = domainID2;
1052 gateway3.listSinkFormats = gwSink3.listConnectionFormats;
1053 gateway3.listSourceFormats = gwSource3.listConnectionFormats;
1054 gateway3.convertionMatrix.push_back(true);
1055 gateway3.name = "gateway3";
1057 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1058 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1059 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2));
1060 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway3,gatewayID3));
1062 std::vector<am_Route_s> listRoutes;
1063 std::vector<am_RoutingElement_s> listRoutingElements, listRoutingElements1;
1064 am_RoutingElement_s hopp1;
1065 am_RoutingElement_s hopp2;
1066 am_RoutingElement_s hopp3;
1067 am_RoutingElement_s hopp4;
1068 am_RoutingElement_s hopp2alt;
1069 am_RoutingElement_s hopp3alt;
1071 hopp1.sourceID = sourceID;
1072 hopp1.sinkID = gwSinkID;
1073 hopp1.domainID = domainID1;
1074 hopp1.connectionFormat = source.listConnectionFormats[0];
1076 hopp2.sourceID = gwSourceID;
1077 hopp2.sinkID = gwSinkID1;
1078 hopp2.domainID = domainID2;
1079 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1081 hopp3.sourceID = gwSourceID1;
1082 hopp3.sinkID = gwSinkID2;
1083 hopp3.domainID = domainID3;
1084 hopp3.connectionFormat = gwSink2.listConnectionFormats[0];
1086 hopp4.sourceID = gwSourceID2;
1087 hopp4.sinkID = sinkID;
1088 hopp4.domainID = domainID4;
1089 hopp4.connectionFormat = sink.listConnectionFormats[0];
1091 hopp2alt.sourceID = gwSourceID;
1092 hopp2alt.sinkID = gwSinkID3;
1093 hopp2alt.domainID = domainID2;
1094 hopp2alt.connectionFormat = gwSink3.listConnectionFormats[0];
1096 hopp3alt.sourceID = gwSourceID3;
1097 hopp3alt.sinkID = gwSinkID2;
1098 hopp3alt.domainID = domainID3;
1099 hopp3alt.connectionFormat = gwSink2.listConnectionFormats[0];
1101 listRoutingElements.push_back(hopp1);
1102 listRoutingElements.push_back(hopp2);
1103 listRoutingElements.push_back(hopp3);
1104 listRoutingElements.push_back(hopp4);
1105 listRoutingElements1.push_back(hopp1);
1106 listRoutingElements1.push_back(hopp2alt);
1107 listRoutingElements1.push_back(hopp3alt);
1108 listRoutingElements1.push_back(hopp4);
1110 am_Route_s compareRoute, compareRoute1;
1111 compareRoute.route = listRoutingElements;
1112 compareRoute.sinkID = sinkID;
1113 compareRoute.sourceID = sourceID;
1115 compareRoute1.route = listRoutingElements1;
1116 compareRoute1.sinkID = sinkID;
1117 compareRoute1.sourceID = sourceID;
1119 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1120 ASSERT_EQ(2, listRoutes.size());
1121 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1122 ASSERT_TRUE(pCF.compareRoute(compareRoute1,listRoutes[1]));
1125 //test that checks 3 domains, one sink one source but the connectionformat of third domains do not fit.
1126 TEST_F(CAmRouterTest,simpleRoute3DomainsNoConnection)
1129 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1131 //initialize 2 domains
1132 am_Domain_s domain1, domain2, domain3;
1133 am_domainID_t domainID1, domainID2, domainID3;
1135 domain1.domainID = 0;
1136 domain1.name = "domain1";
1137 domain1.busname = "domain1bus";
1138 domain1.state = DS_CONTROLLED;
1139 domain2.domainID = 0;
1140 domain2.name = "domain2";
1141 domain2.busname = "domain2bus";
1142 domain2.state = DS_CONTROLLED;
1143 domain3.domainID = 0;
1144 domain3.name = "domain3";
1145 domain3.busname = "domain3bus";
1146 domain3.state = DS_CONTROLLED;
1148 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1149 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1150 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1152 am_Source_s source, gwSource, gwSource1;
1153 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
1155 source.domainID = domainID1;
1156 source.name = "source1";
1157 source.sourceState = SS_ON;
1158 source.sourceID = 0;
1159 source.sourceClassID = 5;
1160 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1162 gwSource.domainID = domainID2;
1163 gwSource.name = "gwsource1";
1164 gwSource.sourceState = SS_ON;
1165 gwSource.sourceID = 0;
1166 gwSource.sourceClassID = 5;
1167 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1169 gwSource1.domainID = domainID3;
1170 gwSource1.name = "gwsource2";
1171 gwSource1.sourceState = SS_ON;
1172 gwSource1.sourceID = 0;
1173 gwSource1.sourceClassID = 5;
1174 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1176 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1177 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1178 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1180 am_Sink_s sink, gwSink, gwSink1;
1181 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
1183 sink.domainID = domainID3;
1184 sink.name = "sink1";
1186 sink.sinkClassID = 5;
1187 sink.muteState = MS_MUTED;
1188 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1190 gwSink.domainID = domainID1;
1191 gwSink.name = "gwSink";
1193 gwSink.sinkClassID = 5;
1194 gwSink.muteState = MS_MUTED;
1195 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1197 gwSink1.domainID = domainID2;
1198 gwSink1.name = "gwSink1";
1200 gwSink1.sinkClassID = 5;
1201 gwSink1.muteState = MS_MUTED;
1202 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1204 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1205 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1206 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1208 am_Gateway_s gateway, gateway1;
1209 am_gatewayID_t gatewayID, gatewayID1;
1211 gateway.controlDomainID = domainID1;
1212 gateway.gatewayID = 0;
1213 gateway.sinkID = gwSinkID;
1214 gateway.sourceID = gwSourceID;
1215 gateway.domainSourceID = domainID2;
1216 gateway.domainSinkID = domainID1;
1217 gateway.listSinkFormats = gwSink.listConnectionFormats;
1218 gateway.listSourceFormats = gwSource.listConnectionFormats;
1219 gateway.convertionMatrix.push_back(true);
1220 gateway.name = "gateway";
1222 gateway1.controlDomainID = domainID2;
1223 gateway1.gatewayID = 0;
1224 gateway1.sinkID = gwSinkID1;
1225 gateway1.sourceID = gwSourceID1;
1226 gateway1.domainSourceID = domainID3;
1227 gateway1.domainSinkID = domainID2;
1228 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1229 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1230 gateway1.convertionMatrix.push_back(true);
1231 gateway1.name = "gateway";
1233 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1234 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1236 std::vector<am_Route_s> listRoutes;
1237 std::vector<am_RoutingElement_s> listRoutingElements;
1238 am_RoutingElement_s hopp1;
1239 am_RoutingElement_s hopp2;
1240 am_RoutingElement_s hopp3;
1242 hopp1.sourceID = sourceID;
1243 hopp1.sinkID = gwSinkID;
1244 hopp1.domainID = domainID1;
1245 hopp1.connectionFormat = source.listConnectionFormats[0];
1247 hopp2.sourceID = gwSourceID;
1248 hopp2.sinkID = gwSinkID1;
1249 hopp2.domainID = domainID2;
1250 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1252 hopp3.sourceID = gwSourceID1;
1253 hopp3.sinkID = sinkID;
1254 hopp3.domainID = domainID3;
1255 hopp3.connectionFormat = sink.listConnectionFormats[0];
1257 listRoutingElements.push_back(hopp1);
1258 listRoutingElements.push_back(hopp2);
1259 listRoutingElements.push_back(hopp3);
1261 am_Route_s compareRoute;
1262 compareRoute.route = listRoutingElements;
1263 compareRoute.sinkID = sinkID;
1264 compareRoute.sourceID = sourceID;
1266 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1267 ASSERT_EQ(0, listRoutes.size());
1269 //test that checks just 2 domains, one sink one source with only one connection format each
1270 TEST_F(CAmRouterTest,simpleRoute2Domains)
1274 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1276 //initialize 2 domains
1277 am_Domain_s domain1, domain2;
1278 am_domainID_t domainID1, domainID2;
1280 domain1.domainID = 0;
1281 domain1.name = "domain1";
1282 domain1.busname = "domain1bus";
1283 domain1.state = DS_CONTROLLED;
1284 domain2.domainID = 0;
1285 domain2.name = "domain2";
1286 domain2.busname = "domain2bus";
1287 domain2.state = DS_CONTROLLED;
1289 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1290 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1292 am_Source_s source, gwSource;
1293 am_sourceID_t sourceID, gwSourceID;
1295 source.domainID = domainID1;
1296 source.name = "source1";
1297 source.sourceState = SS_ON;
1298 source.sourceID = 0;
1299 source.sourceClassID = 5;
1300 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1302 gwSource.domainID = domainID2;
1303 gwSource.name = "gwsource1";
1304 gwSource.sourceState = SS_ON;
1305 gwSource.sourceID = 0;
1306 gwSource.sourceClassID = 5;
1307 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
1309 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1310 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1312 am_Sink_s sink, gwSink;
1313 am_sinkID_t sinkID, gwSinkID;
1315 sink.domainID = domainID2;
1316 sink.name = "sink1";
1318 sink.sinkClassID = 5;
1319 sink.muteState = MS_MUTED;
1320 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1322 gwSink.domainID = domainID1;
1323 gwSink.name = "gwSink";
1325 gwSink.sinkClassID = 5;
1326 gwSink.muteState = MS_MUTED;
1327 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1329 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1330 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1332 am_Gateway_s gateway;
1333 am_gatewayID_t gatewayID;
1335 gateway.controlDomainID = domainID1;
1336 gateway.gatewayID = 0;
1337 gateway.sinkID = gwSinkID;
1338 gateway.sourceID = gwSourceID;
1339 gateway.domainSourceID = domainID2;
1340 gateway.domainSinkID = domainID1;
1341 gateway.listSinkFormats = gwSink.listConnectionFormats;
1342 gateway.listSourceFormats = gwSource.listConnectionFormats;
1343 gateway.convertionMatrix.push_back(true);
1344 gateway.name = "gateway";
1346 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1348 std::vector<am_Route_s> listRoutes;
1349 std::vector<am_RoutingElement_s> listRoutingElements;
1350 am_RoutingElement_s hopp1;
1351 am_RoutingElement_s hopp2;
1353 hopp1.sinkID = gwSinkID;
1354 hopp1.sourceID = sourceID;
1355 hopp1.domainID = domainID1;
1356 hopp1.connectionFormat = source.listConnectionFormats[0];
1358 hopp2.sinkID = sinkID;
1359 hopp2.sourceID = gwSourceID;
1360 hopp2.domainID = domainID2;
1361 hopp2.connectionFormat = sink.listConnectionFormats[0];
1363 listRoutingElements.push_back(hopp1);
1364 listRoutingElements.push_back(hopp2);
1366 am_Route_s compareRoute;
1367 compareRoute.route = listRoutingElements;
1368 compareRoute.sinkID = sinkID;
1369 compareRoute.sourceID = sourceID;
1371 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1372 ASSERT_EQ(1, listRoutes.size());
1373 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1377 //test that checks just 2 domains, one sink one source but the connectionformat of source
1378 TEST_F(CAmRouterTest,simpleRoute2DomainsNoMatchConnectionFormats)
1382 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1384 //initialize 2 domains
1385 am_Domain_s domain1, domain2;
1386 am_domainID_t domainID1, domainID2;
1388 domain1.domainID = 0;
1389 domain1.name = "domain1";
1390 domain1.busname = "domain1bus";
1391 domain1.state = DS_CONTROLLED;
1392 domain2.domainID = 0;
1393 domain2.name = "domain2";
1394 domain2.busname = "domain2bus";
1395 domain2.state = DS_CONTROLLED;
1397 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1398 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1400 am_Source_s source, gwSource;
1401 am_sourceID_t sourceID, gwSourceID;
1403 source.domainID = domainID1;
1404 source.name = "source1";
1405 source.sourceState = SS_ON;
1406 source.sourceID = 0;
1407 source.sourceClassID = 5;
1408 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1410 gwSource.domainID = domainID2;
1411 gwSource.name = "gwsource1";
1412 gwSource.sourceState = SS_ON;
1413 gwSource.sourceID = 0;
1414 gwSource.sourceClassID = 5;
1415 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
1417 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1418 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1420 am_Sink_s sink, gwSink;
1421 am_sinkID_t sinkID, gwSinkID;
1423 sink.domainID = domainID2;
1424 sink.name = "sink1";
1426 sink.sinkClassID = 5;
1427 sink.muteState = MS_MUTED;
1428 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1430 gwSink.domainID = domainID1;
1431 gwSink.name = "gwSink";
1433 gwSink.sinkClassID = 5;
1434 gwSink.muteState = MS_MUTED;
1435 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1437 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1438 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1440 am_Gateway_s gateway;
1441 am_gatewayID_t gatewayID;
1443 gateway.controlDomainID = domainID1;
1444 gateway.gatewayID = 0;
1445 gateway.sinkID = gwSinkID;
1446 gateway.sourceID = gwSourceID;
1447 gateway.domainSourceID = domainID2;
1448 gateway.domainSinkID = domainID1;
1449 gateway.listSinkFormats = gwSink.listConnectionFormats;
1450 gateway.listSourceFormats = gwSource.listConnectionFormats;
1451 gateway.convertionMatrix.push_back(true);
1452 gateway.name = "gateway";
1454 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1456 std::vector<am_Route_s> listRoutes;
1457 std::vector<am_RoutingElement_s> listRoutingElements;
1458 am_RoutingElement_s hopp1;
1459 am_RoutingElement_s hopp2;
1461 hopp1.sinkID = gwSinkID;
1462 hopp1.sourceID = sourceID;
1463 hopp1.domainID = domainID1;
1464 hopp1.connectionFormat = source.listConnectionFormats[0];
1466 hopp2.sinkID = sinkID;
1467 hopp2.sourceID = gwSourceID;
1468 hopp2.domainID = domainID2;
1469 hopp2.connectionFormat = sink.listConnectionFormats[0];
1471 listRoutingElements.push_back(hopp1);
1472 listRoutingElements.push_back(hopp2);
1474 am_Route_s compareRoute;
1475 compareRoute.route = listRoutingElements;
1476 compareRoute.sinkID = sinkID;
1477 compareRoute.sourceID = sourceID;
1479 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1480 ASSERT_EQ(0, listRoutes.size());
1483 //test that checks 3 domains, one sink one source.
1484 TEST_F(CAmRouterTest,simpleRoute3Domains)
1486 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1488 //initialize 2 domains
1489 am_Domain_s domain1, domain2, domain3;
1490 am_domainID_t domainID1, domainID2, domainID3;
1492 domain1.domainID = 0;
1493 domain1.name = "domain1";
1494 domain1.busname = "domain1bus";
1495 domain1.state = DS_CONTROLLED;
1496 domain2.domainID = 0;
1497 domain2.name = "domain2";
1498 domain2.busname = "domain2bus";
1499 domain2.state = DS_CONTROLLED;
1500 domain3.domainID = 0;
1501 domain3.name = "domain3";
1502 domain3.busname = "domain3bus";
1503 domain3.state = DS_CONTROLLED;
1505 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1506 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1507 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1509 am_Source_s source, gwSource, gwSource1;
1510 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
1512 source.domainID = domainID1;
1513 source.name = "source1";
1514 source.sourceState = SS_ON;
1515 source.sourceID = 0;
1516 source.sourceClassID = 5;
1517 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1519 gwSource.domainID = domainID2;
1520 gwSource.name = "gwsource1";
1521 gwSource.sourceState = SS_ON;
1522 gwSource.sourceID = 0;
1523 gwSource.sourceClassID = 5;
1524 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1526 gwSource1.domainID = domainID3;
1527 gwSource1.name = "gwsource2";
1528 gwSource1.sourceState = SS_ON;
1529 gwSource1.sourceID = 0;
1530 gwSource1.sourceClassID = 5;
1531 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1533 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1534 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1535 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1537 am_Sink_s sink, gwSink, gwSink1;
1538 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
1540 sink.domainID = domainID3;
1541 sink.name = "sink1";
1543 sink.sinkClassID = 5;
1544 sink.muteState = MS_MUTED;
1545 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1547 gwSink.domainID = domainID1;
1548 gwSink.name = "gwSink";
1550 gwSink.sinkClassID = 5;
1551 gwSink.muteState = MS_MUTED;
1552 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1554 gwSink1.domainID = domainID2;
1555 gwSink1.name = "gwSink1";
1557 gwSink1.sinkClassID = 5;
1558 gwSink1.muteState = MS_MUTED;
1559 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1561 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1562 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1563 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1565 am_Gateway_s gateway, gateway1;
1566 am_gatewayID_t gatewayID, gatewayID1;
1568 gateway.controlDomainID = domainID1;
1569 gateway.gatewayID = 0;
1570 gateway.sinkID = gwSinkID;
1571 gateway.sourceID = gwSourceID;
1572 gateway.domainSourceID = domainID2;
1573 gateway.domainSinkID = domainID1;
1574 gateway.listSinkFormats = gwSink.listConnectionFormats;
1575 gateway.listSourceFormats = gwSource.listConnectionFormats;
1576 gateway.convertionMatrix.push_back(true);
1577 gateway.name = "gateway";
1579 gateway1.controlDomainID = domainID2;
1580 gateway1.gatewayID = 0;
1581 gateway1.sinkID = gwSinkID1;
1582 gateway1.sourceID = gwSourceID1;
1583 gateway1.domainSourceID = domainID3;
1584 gateway1.domainSinkID = domainID2;
1585 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1586 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1587 gateway1.convertionMatrix.push_back(true);
1588 gateway1.name = "gateway";
1590 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1591 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1593 std::vector<am_Route_s> listRoutes;
1594 std::vector<am_RoutingElement_s> listRoutingElements;
1595 am_RoutingElement_s hopp1;
1596 am_RoutingElement_s hopp2;
1597 am_RoutingElement_s hopp3;
1599 hopp1.sourceID = sourceID;
1600 hopp1.sinkID = gwSinkID;
1601 hopp1.domainID = domainID1;
1602 hopp1.connectionFormat = source.listConnectionFormats[0];
1604 hopp2.sourceID = gwSourceID;
1605 hopp2.sinkID = gwSinkID1;
1606 hopp2.domainID = domainID2;
1607 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1609 hopp3.sourceID = gwSourceID1;
1610 hopp3.sinkID = sinkID;
1611 hopp3.domainID = domainID3;
1612 hopp3.connectionFormat = sink.listConnectionFormats[0];
1614 listRoutingElements.push_back(hopp1);
1615 listRoutingElements.push_back(hopp2);
1616 listRoutingElements.push_back(hopp3);
1618 am_Route_s compareRoute;
1619 compareRoute.route = listRoutingElements;
1620 compareRoute.sinkID = sinkID;
1621 compareRoute.sourceID = sourceID;
1623 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1624 ASSERT_EQ(1, listRoutes.size());
1625 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1628 //test that checks 4 domains, one sink and one source.
1629 TEST_F(CAmRouterTest,simpleRoute4Domains)
1631 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1633 //initialize 2 domains
1634 am_Domain_s domain1, domain2, domain3, domain4;
1635 am_domainID_t domainID1, domainID2, domainID3, domainID4;
1637 domain1.domainID = 0;
1638 domain1.name = "domain1";
1639 domain1.busname = "domain1bus";
1640 domain1.state = DS_CONTROLLED;
1641 domain2.domainID = 0;
1642 domain2.name = "domain2";
1643 domain2.busname = "domain2bus";
1644 domain2.state = DS_CONTROLLED;
1645 domain3.domainID = 0;
1646 domain3.name = "domain3";
1647 domain3.busname = "domain3bus";
1648 domain3.state = DS_CONTROLLED;
1649 domain4.domainID = 0;
1650 domain4.name = "domain4";
1651 domain4.busname = "domain4bus";
1652 domain4.state = DS_CONTROLLED;
1654 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1655 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1656 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1657 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain4,domainID4));
1659 am_Source_s source, gwSource, gwSource1, gwSource2;
1660 am_sourceID_t sourceID, gwSourceID, gwSourceID1, gwSourceID2;
1662 source.domainID = domainID1;
1663 source.name = "source1";
1664 source.sourceState = SS_ON;
1665 source.sourceID = 0;
1666 source.sourceClassID = 5;
1667 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1669 gwSource.domainID = domainID2;
1670 gwSource.name = "gwsource1";
1671 gwSource.sourceState = SS_ON;
1672 gwSource.sourceID = 0;
1673 gwSource.sourceClassID = 5;
1674 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1676 gwSource1.domainID = domainID3;
1677 gwSource1.name = "gwsource2";
1678 gwSource1.sourceState = SS_ON;
1679 gwSource1.sourceID = 0;
1680 gwSource1.sourceClassID = 5;
1681 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1683 gwSource2.domainID = domainID4;
1684 gwSource2.name = "gwsource3";
1685 gwSource2.sourceState = SS_OFF;
1686 gwSource2.sourceID = 0;
1687 gwSource2.sourceClassID = 5;
1688 gwSource2.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1690 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1691 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1692 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1693 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource2,gwSourceID2));
1695 am_Sink_s sink, gwSink, gwSink1, gwSink2;
1696 am_sinkID_t sinkID, gwSinkID, gwSinkID1, gwSinkID2;
1698 gwSink.domainID = domainID1;
1699 gwSink.name = "gwSink";
1701 gwSink.sinkClassID = 5;
1702 gwSink.muteState = MS_MUTED;
1703 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1705 gwSink1.domainID = domainID2;
1706 gwSink1.name = "gwSink1";
1708 gwSink1.sinkClassID = 5;
1709 gwSink1.muteState = MS_MUTED;
1710 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1712 gwSink2.domainID = domainID3;
1713 gwSink2.name = "gwSink2";
1715 gwSink2.sinkClassID = 5;
1716 gwSink2.muteState = MS_MUTED;
1717 gwSink2.listConnectionFormats.push_back(CF_GENIVI_MONO);
1719 sink.domainID = domainID4;
1720 sink.name = "sink1";
1722 sink.sinkClassID = 5;
1723 sink.muteState = MS_MUTED;
1724 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1726 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1727 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1728 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1729 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink2,gwSinkID2));
1731 am_Gateway_s gateway, gateway1, gateway2;
1732 am_gatewayID_t gatewayID, gatewayID1, gatewayID2;
1734 gateway.controlDomainID = domainID1;
1735 gateway.gatewayID = 0;
1736 gateway.sinkID = gwSinkID;
1737 gateway.sourceID = gwSourceID;
1738 gateway.domainSourceID = domainID2;
1739 gateway.domainSinkID = domainID1;
1740 gateway.listSinkFormats = gwSink.listConnectionFormats;
1741 gateway.listSourceFormats = gwSource.listConnectionFormats;
1742 gateway.convertionMatrix.push_back(true);
1743 gateway.name = "gateway";
1745 gateway1.controlDomainID = domainID2;
1746 gateway1.gatewayID = 0;
1747 gateway1.sinkID = gwSinkID1;
1748 gateway1.sourceID = gwSourceID1;
1749 gateway1.domainSourceID = domainID3;
1750 gateway1.domainSinkID = domainID2;
1751 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1752 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1753 gateway1.convertionMatrix.push_back(true);
1754 gateway1.name = "gateway1";
1756 gateway2.controlDomainID = domainID3;
1757 gateway2.gatewayID = 0;
1758 gateway2.sinkID = gwSinkID2;
1759 gateway2.sourceID = gwSourceID2;
1760 gateway2.domainSourceID = domainID4;
1761 gateway2.domainSinkID = domainID3;
1762 gateway2.listSinkFormats = gwSink2.listConnectionFormats;
1763 gateway2.listSourceFormats = gwSource2.listConnectionFormats;
1764 gateway2.convertionMatrix.push_back(true);
1765 gateway2.name = "gateway2";
1767 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1768 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1769 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2));
1771 std::vector<am_Route_s> listRoutes;
1772 std::vector<am_RoutingElement_s> listRoutingElements;
1773 am_RoutingElement_s hopp1;
1774 am_RoutingElement_s hopp2;
1775 am_RoutingElement_s hopp3;
1776 am_RoutingElement_s hopp4;
1778 hopp1.sourceID = sourceID;
1779 hopp1.sinkID = gwSinkID;
1780 hopp1.domainID = domainID1;
1781 hopp1.connectionFormat = source.listConnectionFormats[0];
1783 hopp2.sourceID = gwSourceID;
1784 hopp2.sinkID = gwSinkID1;
1785 hopp2.domainID = domainID2;
1786 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1788 hopp3.sourceID = gwSourceID1;
1789 hopp3.sinkID = gwSinkID2;
1790 hopp3.domainID = domainID3;
1791 hopp3.connectionFormat = gwSink2.listConnectionFormats[0];
1793 hopp4.sourceID = gwSourceID2;
1794 hopp4.sinkID = sinkID;
1795 hopp4.domainID = domainID4;
1796 hopp4.connectionFormat = sink.listConnectionFormats[0];
1798 listRoutingElements.push_back(hopp1);
1799 listRoutingElements.push_back(hopp2);
1800 listRoutingElements.push_back(hopp3);
1801 listRoutingElements.push_back(hopp4);
1803 am_Route_s compareRoute;
1804 compareRoute.route = listRoutingElements;
1805 compareRoute.sinkID = sinkID;
1806 compareRoute.sourceID = sourceID;
1808 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1809 ASSERT_EQ(1, listRoutes.size());
1810 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1813 int main(int argc, char **argv)
1815 CAmDltWrapper::instance()->registerApp("routing", "CAmRouterTest");
1816 logInfo("Routing Test started ");
1817 ::testing::InitGoogleTest(&argc, argv);
1818 return RUN_ALL_TESTS();