2 * Copyright (C) 2012, BMW AG
4 * This file is part of GENIVI Project AudioManager.
6 * Contributions are licensed to the GENIVI Alliance under one or more
7 * Contribution License Agreements.
10 * This Source Code Form is subject to the terms of the
11 * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
12 * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
15 * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
17 * For further information see http://www.genivi.org/.
21 #include "CAmRouterTest.h"
23 #include "shared/CAmDltWrapper.h"
26 using namespace testing;
28 CAmRouterTest::CAmRouterTest() :
29 plistRoutingPluginDirs(), //
30 plistCommandPluginDirs(), //
33 pDatabaseHandler(std::string(":memory:")),
34 pRouter(&pDatabaseHandler, &pControlSender), //
35 pRoutingSender(plistRoutingPluginDirs), //
36 pCommandSender(plistCommandPluginDirs), //
38 pMockControlInterface(), //
39 pRoutingInterfaceBackdoor(), //
40 pCommandInterfaceBackdoor(), //
41 pControlInterfaceBackdoor(), //
42 pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender,&pSocketHandler, &pRouter), //
43 pObserver(&pCommandSender, &pRoutingSender, &pSocketHandler)
45 pDatabaseHandler.registerObserver(&pObserver);
46 pCommandInterfaceBackdoor.injectInterface(&pCommandSender, &pMockInterface);
47 pControlInterfaceBackdoor.replaceController(&pControlSender, &pMockControlInterface);
50 CAmRouterTest::~CAmRouterTest()
55 void CAmRouterTest::SetUp()
57 logInfo("Routing Test started ");
60 void CAmRouterTest::TearDown()
64 ACTION(returnConnectionFormat){
68 //test that checks just sinks and source in a domain but connectionformats do not match
69 TEST_F(CAmRouterTest,simpleRoute2withDomainNoMatchFormats)
71 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
73 //initialize 2 domains
75 am_domainID_t domainID1;
78 domain1.name = "domain1";
79 domain1.busname = "domain1bus";
80 domain1.state = DS_CONTROLLED;
82 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
85 am_sourceID_t sourceID;
87 source.domainID = domainID1;
88 source.name = "source1";
89 source.sourceState = SS_ON;
91 source.sourceClassID = 5;
92 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
94 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
99 sink.domainID = domainID1;
102 sink.sinkClassID = 5;
103 sink.muteState = MS_MUTED;
104 sink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
106 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
108 std::vector<am_Route_s> listRoutes;
109 std::vector<am_RoutingElement_s> listRoutingElements;
110 am_RoutingElement_s hopp1;
112 hopp1.sinkID = sinkID;
113 hopp1.sourceID = sourceID;
114 hopp1.domainID = domainID1;
115 hopp1.connectionFormat = source.listConnectionFormats[0];
117 listRoutingElements.push_back(hopp1);
119 am_Route_s compareRoute;
120 compareRoute.route = listRoutingElements;
121 compareRoute.sinkID = sinkID;
122 compareRoute.sourceID = sourceID;
124 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
125 ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
129 //test that checks just sinks and source in a domain
130 TEST_F(CAmRouterTest,simpleRoute2withDomain)
132 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
134 //initialize 2 domains
136 am_domainID_t domainID1;
138 domain1.domainID = 0;
139 domain1.name = "domain1";
140 domain1.busname = "domain1bus";
141 domain1.state = DS_CONTROLLED;
143 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
146 am_sourceID_t sourceID;
148 source.domainID = domainID1;
149 source.name = "source1";
150 source.sourceState = SS_ON;
152 source.sourceClassID = 5;
153 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
155 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
160 sink.domainID = domainID1;
163 sink.sinkClassID = 5;
164 sink.muteState = MS_MUTED;
165 sink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
167 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
169 std::vector<am_Route_s> listRoutes;
170 std::vector<am_RoutingElement_s> listRoutingElements;
171 am_RoutingElement_s hopp1;
173 hopp1.sinkID = sinkID;
174 hopp1.sourceID = sourceID;
175 hopp1.domainID = domainID1;
176 hopp1.connectionFormat = source.listConnectionFormats[0];
178 listRoutingElements.push_back(hopp1);
180 am_Route_s compareRoute;
181 compareRoute.route = listRoutingElements;
182 compareRoute.sinkID = sinkID;
183 compareRoute.sourceID = sourceID;
185 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
186 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
187 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
191 //test that checks just 2 domains, one sink one source with only one connection format each
192 TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFree)
196 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
198 //initialize 2 domains
199 am_Domain_s domain1, domain2;
200 am_domainID_t domainID1, domainID2;
202 domain1.domainID = 0;
203 domain1.name = "domain1";
204 domain1.busname = "domain1bus";
205 domain1.state = DS_CONTROLLED;
206 domain2.domainID = 0;
207 domain2.name = "domain2";
208 domain2.busname = "domain2bus";
209 domain2.state = DS_CONTROLLED;
211 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
212 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
214 am_Source_s source, gwSource;
215 am_sourceID_t sourceID, gwSourceID;
217 source.domainID = domainID1;
218 source.name = "source1";
219 source.sourceState = SS_ON;
221 source.sourceClassID = 5;
222 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
224 gwSource.domainID = domainID2;
225 gwSource.name = "gwsource1";
226 gwSource.sourceState = SS_ON;
227 gwSource.sourceID = 0;
228 gwSource.sourceClassID = 5;
229 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
231 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
232 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
234 am_Sink_s sink, gwSink;
235 am_sinkID_t sinkID, gwSinkID;
237 sink.domainID = domainID2;
240 sink.sinkClassID = 5;
241 sink.muteState = MS_MUTED;
242 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
244 gwSink.domainID = domainID1;
245 gwSink.name = "gwSink";
247 gwSink.sinkClassID = 5;
248 gwSink.muteState = MS_MUTED;
249 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
251 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
252 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
254 am_Gateway_s gateway;
255 am_gatewayID_t gatewayID;
257 gateway.controlDomainID = domainID1;
258 gateway.gatewayID = 0;
259 gateway.sinkID = gwSinkID;
260 gateway.sourceID = gwSourceID;
261 gateway.domainSourceID = domainID2;
262 gateway.domainSinkID = domainID1;
263 gateway.listSinkFormats = gwSink.listConnectionFormats;
264 gateway.listSourceFormats = gwSource.listConnectionFormats;
265 gateway.convertionMatrix.push_back(true);
266 gateway.name = "gateway";
268 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
270 std::vector<am_Route_s> listRoutes;
271 std::vector<am_RoutingElement_s> listRoutingElements;
272 am_RoutingElement_s hopp1;
273 am_RoutingElement_s hopp2;
275 hopp1.sinkID = gwSinkID;
276 hopp1.sourceID = sourceID;
277 hopp1.domainID = domainID1;
278 hopp1.connectionFormat = source.listConnectionFormats[0];
280 hopp2.sinkID = sinkID;
281 hopp2.sourceID = gwSourceID;
282 hopp2.domainID = domainID2;
283 hopp2.connectionFormat = sink.listConnectionFormats[0];
285 listRoutingElements.push_back(hopp1);
286 listRoutingElements.push_back(hopp2);
288 am_Route_s compareRoute;
289 compareRoute.route = listRoutingElements;
290 compareRoute.sinkID = sinkID;
291 compareRoute.sourceID = sourceID;
293 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
294 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
295 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
299 //test that checks just 2 domains, one sink one source with only one connection format each
300 TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFreeNotFree)
304 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
306 //initialize 2 domains
307 am_Domain_s domain1, domain2;
308 am_domainID_t domainID1, domainID2;
310 domain1.domainID = 0;
311 domain1.name = "domain1";
312 domain1.busname = "domain1bus";
313 domain1.state = DS_CONTROLLED;
314 domain2.domainID = 0;
315 domain2.name = "domain2";
316 domain2.busname = "domain2bus";
317 domain2.state = DS_CONTROLLED;
319 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
320 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
322 am_Source_s source, gwSource;
323 am_sourceID_t sourceID, gwSourceID;
325 source.domainID = domainID1;
326 source.name = "source1";
327 source.sourceState = SS_ON;
329 source.sourceClassID = 5;
330 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
332 gwSource.domainID = domainID2;
333 gwSource.name = "gwsource1";
334 gwSource.sourceState = SS_ON;
335 gwSource.sourceID = 0;
336 gwSource.sourceClassID = 5;
337 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
339 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
340 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
342 am_Sink_s sink, gwSink;
343 am_sinkID_t sinkID, gwSinkID;
345 sink.domainID = domainID2;
348 sink.sinkClassID = 5;
349 sink.muteState = MS_MUTED;
350 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
352 gwSink.domainID = domainID1;
353 gwSink.name = "gwSink";
355 gwSink.sinkClassID = 5;
356 gwSink.muteState = MS_MUTED;
357 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
359 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
360 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
362 am_Gateway_s gateway;
363 am_gatewayID_t gatewayID;
365 gateway.controlDomainID = domainID1;
366 gateway.gatewayID = 0;
367 gateway.sinkID = gwSinkID;
368 gateway.sourceID = gwSourceID;
369 gateway.domainSourceID = domainID2;
370 gateway.domainSinkID = domainID1;
371 gateway.listSinkFormats = gwSink.listConnectionFormats;
372 gateway.listSourceFormats = gwSource.listConnectionFormats;
373 gateway.convertionMatrix.push_back(true);
374 gateway.name = "gateway";
376 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
378 std::vector<am_Route_s> listRoutes;
379 std::vector<am_RoutingElement_s> listRoutingElements;
380 am_RoutingElement_s hopp1;
381 am_RoutingElement_s hopp2;
383 hopp1.sinkID = gwSinkID;
384 hopp1.sourceID = sourceID;
385 hopp1.domainID = domainID1;
386 hopp1.connectionFormat = source.listConnectionFormats[0];
388 hopp2.sinkID = sinkID;
389 hopp2.sourceID = gwSourceID;
390 hopp2.domainID = domainID2;
391 hopp2.connectionFormat = sink.listConnectionFormats[0];
393 listRoutingElements.push_back(hopp1);
394 listRoutingElements.push_back(hopp2);
396 am_Route_s compareRoute;
397 compareRoute.route = listRoutingElements;
398 compareRoute.sinkID = sinkID;
399 compareRoute.sourceID = sourceID;
401 am_Connection_s connection,connection1;
402 am_connectionID_t id1,id2;
403 connection.sourceID=sourceID;
404 connection.sinkID=gwSinkID;
405 connection.connectionFormat=CF_GENIVI_ANALOG;
406 connection.connectionID=0;
407 connection1.sourceID=gwSourceID;
408 connection1.sinkID=sinkID;
409 connection1.connectionFormat=CF_GENIVI_ANALOG;
410 connection1.connectionID=0;
412 ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection,id1));
413 ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection1,id2));
415 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
416 ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
418 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
419 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
420 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
423 //test that checks just 2 domains, with gateway for each direction (possible circular route)
424 TEST_F(CAmRouterTest,simpleRoute2DomainsCircularGWOnlyFree)
427 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
429 //initialize 2 domains
430 am_Domain_s domain1, domain2;
431 am_domainID_t domainID1, domainID2;
433 domain1.domainID = 0;
434 domain1.name = "domain1";
435 domain1.busname = "domain1bus";
436 domain1.state = DS_CONTROLLED;
437 domain2.domainID = 0;
438 domain2.name = "domain2";
439 domain2.busname = "domain2bus";
440 domain2.state = DS_CONTROLLED;
442 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
443 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
445 am_Source_s source, gwSource, gwSource2;
446 am_sourceID_t sourceID, gwSourceID, gwSourceID2;
448 source.domainID = domainID1;
449 source.name = "source1";
450 source.sourceState = SS_ON;
452 source.sourceClassID = 5;
453 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
455 gwSource.domainID = domainID2;
456 gwSource.name = "gwsource1";
457 gwSource.sourceState = SS_ON;
458 gwSource.sourceID = 0;
459 gwSource.sourceClassID = 5;
460 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
462 gwSource2.domainID = domainID1;
463 gwSource2.name = "gwsource2";
464 gwSource2.sourceState = SS_ON;
465 gwSource2.sourceID = 0;
466 gwSource2.sourceClassID = 5;
467 gwSource2.listConnectionFormats.push_back(CF_GENIVI_MONO);
469 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
470 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
471 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource2,gwSourceID2));
473 am_Sink_s sink, gwSink, gwSink2;
474 am_sinkID_t sinkID, gwSinkID, gwSinkID2;
476 sink.domainID = domainID2;
479 sink.sinkClassID = 5;
480 sink.muteState = MS_MUTED;
481 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
483 gwSink.domainID = domainID1;
484 gwSink.name = "gwSink";
486 gwSink.sinkClassID = 5;
487 gwSink.muteState = MS_MUTED;
488 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
490 gwSink2.domainID = domainID2;
491 gwSink2.name = "gwSink2";
493 gwSink2.sinkClassID = 5;
494 gwSink2.muteState = MS_MUTED;
495 gwSink2.listConnectionFormats.push_back(CF_GENIVI_MONO);
497 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
498 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
499 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink2,gwSinkID2));
501 am_Gateway_s gateway, gateway2;
502 am_gatewayID_t gatewayID, gatewayID2;
504 gateway.controlDomainID = domainID1;
505 gateway.gatewayID = 0;
506 gateway.sinkID = gwSinkID;
507 gateway.sourceID = gwSourceID;
508 gateway.domainSourceID = domainID2;
509 gateway.domainSinkID = domainID1;
510 gateway.listSinkFormats = gwSink.listConnectionFormats;
511 gateway.listSourceFormats = gwSource.listConnectionFormats;
512 gateway.convertionMatrix.push_back(true);
513 gateway.name = "gateway";
515 gateway2.controlDomainID = domainID1;
516 gateway2.gatewayID = 0;
517 gateway2.sinkID = gwSinkID2;
518 gateway2.sourceID = gwSourceID2;
519 gateway2.domainSourceID = domainID1;
520 gateway2.domainSinkID = domainID2;
521 gateway2.listSinkFormats = gwSink2.listConnectionFormats;
522 gateway2.listSourceFormats = gwSource2.listConnectionFormats;
523 gateway2.convertionMatrix.push_back(true);
524 gateway2.name = "gateway2";
526 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
527 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2));
529 std::vector<am_Route_s> listRoutes;
530 std::vector<am_RoutingElement_s> listRoutingElements;
531 am_RoutingElement_s hopp1;
532 am_RoutingElement_s hopp2;
534 hopp1.sinkID = gwSinkID;
535 hopp1.sourceID = sourceID;
536 hopp1.domainID = domainID1;
537 hopp1.connectionFormat = source.listConnectionFormats[0];
539 hopp2.sinkID = sinkID;
540 hopp2.sourceID = gwSourceID;
541 hopp2.domainID = domainID2;
542 hopp2.connectionFormat = sink.listConnectionFormats[0];
544 listRoutingElements.push_back(hopp1);
545 listRoutingElements.push_back(hopp2);
547 am_Route_s compareRoute;
548 compareRoute.route = listRoutingElements;
549 compareRoute.sinkID = sinkID;
550 compareRoute.sourceID = sourceID;
552 ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
553 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
554 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
557 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
558 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_2)
561 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
563 //initialize 2 domains
564 am_Domain_s domain1, domain2, domain3;
565 am_domainID_t domainID1, domainID2, domainID3;
567 domain1.domainID = 0;
568 domain1.name = "domain1";
569 domain1.busname = "domain1bus";
570 domain1.state = DS_CONTROLLED;
571 domain2.domainID = 0;
572 domain2.name = "domain2";
573 domain2.busname = "domain2bus";
574 domain2.state = DS_CONTROLLED;
575 domain3.domainID = 0;
576 domain3.name = "domain3";
577 domain3.busname = "domain3bus";
578 domain3.state = DS_CONTROLLED;
580 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
581 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
582 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
584 am_Source_s source, gwSource, gwSource1;
585 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
587 source.domainID = domainID1;
588 source.name = "source1";
589 source.sourceState = SS_ON;
591 source.sourceClassID = 5;
592 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
593 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
595 gwSource.domainID = domainID2;
596 gwSource.name = "gwsource1";
597 gwSource.sourceState = SS_ON;
598 gwSource.sourceID = 0;
599 gwSource.sourceClassID = 5;
600 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
601 gwSource.listConnectionFormats.push_back(CF_GENIVI_STEREO);
602 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
604 gwSource1.domainID = domainID3;
605 gwSource1.name = "gwsource2";
606 gwSource1.sourceState = SS_ON;
607 gwSource1.sourceID = 0;
608 gwSource1.sourceClassID = 5;
609 gwSource1.listConnectionFormats.push_back(CF_GENIVI_STEREO);
610 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
612 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
613 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
614 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
616 am_Sink_s sink, gwSink, gwSink1;
617 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
619 sink.domainID = domainID3;
622 sink.sinkClassID = 5;
623 sink.muteState = MS_MUTED;
624 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
626 gwSink.domainID = domainID1;
627 gwSink.name = "gwSink";
629 gwSink.sinkClassID = 5;
630 gwSink.muteState = MS_MUTED;
631 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
632 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
634 gwSink1.domainID = domainID2;
635 gwSink1.name = "gwSink1";
637 gwSink1.sinkClassID = 5;
638 gwSink1.muteState = MS_MUTED;
639 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
640 gwSink1.listConnectionFormats.push_back(CF_GENIVI_STEREO);
642 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
643 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
644 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
646 am_Gateway_s gateway, gateway1;
647 am_gatewayID_t gatewayID, gatewayID1;
649 gateway.controlDomainID = domainID1;
650 gateway.gatewayID = 0;
651 gateway.sinkID = gwSinkID;
652 gateway.sourceID = gwSourceID;
653 gateway.domainSourceID = domainID2;
654 gateway.domainSinkID = domainID1;
655 gateway.listSinkFormats = gwSink.listConnectionFormats;
656 gateway.listSourceFormats = gwSource.listConnectionFormats;
657 gateway.convertionMatrix.push_back(false);
658 gateway.convertionMatrix.push_back(false);
659 gateway.convertionMatrix.push_back(false);
660 gateway.convertionMatrix.push_back(true);
661 gateway.convertionMatrix.push_back(true);
662 gateway.convertionMatrix.push_back(false);
663 gateway.name = "gateway";
665 gateway1.controlDomainID = domainID2;
666 gateway1.gatewayID = 0;
667 gateway1.sinkID = gwSinkID1;
668 gateway1.sourceID = gwSourceID1;
669 gateway1.domainSourceID = domainID3;
670 gateway1.domainSinkID = domainID2;
671 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
672 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
673 gateway1.convertionMatrix.push_back(false);
674 gateway1.convertionMatrix.push_back(false);
675 gateway1.convertionMatrix.push_back(false);
676 gateway1.convertionMatrix.push_back(true);
677 gateway1.name = "gateway1";
679 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
680 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
682 std::vector<am_Route_s> listRoutes;
683 std::vector<am_RoutingElement_s> listRoutingElements;
684 am_RoutingElement_s hopp1;
685 am_RoutingElement_s hopp2;
686 am_RoutingElement_s hopp3;
688 hopp1.sourceID = sourceID;
689 hopp1.sinkID = gwSinkID;
690 hopp1.domainID = domainID1;
691 hopp1.connectionFormat = source.listConnectionFormats[1];
693 hopp2.sourceID = gwSourceID;
694 hopp2.sinkID = gwSinkID1;
695 hopp2.domainID = domainID2;
696 hopp2.connectionFormat = gwSink1.listConnectionFormats[1];
698 hopp3.sourceID = gwSourceID1;
699 hopp3.sinkID = sinkID;
700 hopp3.domainID = domainID3;
701 hopp3.connectionFormat = sink.listConnectionFormats[0];
703 listRoutingElements.push_back(hopp1);
704 listRoutingElements.push_back(hopp2);
705 listRoutingElements.push_back(hopp3);
707 am_Route_s compareRoute;
708 compareRoute.route = listRoutingElements;
709 compareRoute.sinkID = sinkID;
710 compareRoute.sourceID = sourceID;
712 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
713 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
714 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
717 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
718 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_1)
720 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
722 //initialize 2 domains
723 am_Domain_s domain1, domain2, domain3;
724 am_domainID_t domainID1, domainID2, domainID3;
726 domain1.domainID = 0;
727 domain1.name = "domain1";
728 domain1.busname = "domain1bus";
729 domain1.state = DS_CONTROLLED;
730 domain2.domainID = 0;
731 domain2.name = "domain2";
732 domain2.busname = "domain2bus";
733 domain2.state = DS_CONTROLLED;
734 domain3.domainID = 0;
735 domain3.name = "domain3";
736 domain3.busname = "domain3bus";
737 domain3.state = DS_CONTROLLED;
739 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
740 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
741 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
743 am_Source_s source, gwSource, gwSource1;
744 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
746 source.domainID = domainID1;
747 source.name = "source1";
748 source.sourceState = SS_ON;
750 source.sourceClassID = 5;
751 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
752 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
754 gwSource.domainID = domainID2;
755 gwSource.name = "gwsource1";
756 gwSource.sourceState = SS_ON;
757 gwSource.sourceID = 0;
758 gwSource.sourceClassID = 5;
759 gwSource.listConnectionFormats.push_back(CF_GENIVI_STEREO);
760 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
761 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
763 gwSource1.domainID = domainID3;
764 gwSource1.name = "gwsource2";
765 gwSource1.sourceState = SS_ON;
766 gwSource1.sourceID = 0;
767 gwSource1.sourceClassID = 5;
768 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
770 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
771 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
772 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
774 am_Sink_s sink, gwSink, gwSink1;
775 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
777 sink.domainID = domainID3;
780 sink.sinkClassID = 5;
781 sink.muteState = MS_MUTED;
782 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
784 gwSink.domainID = domainID1;
785 gwSink.name = "gwSink";
787 gwSink.sinkClassID = 5;
788 gwSink.muteState = MS_MUTED;
789 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
790 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
792 gwSink1.domainID = domainID2;
793 gwSink1.name = "gwSink1";
795 gwSink1.sinkClassID = 5;
796 gwSink1.muteState = MS_MUTED;
797 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
799 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
800 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
801 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
803 am_Gateway_s gateway, gateway1;
804 am_gatewayID_t gatewayID, gatewayID1;
806 gateway.controlDomainID = domainID1;
807 gateway.gatewayID = 0;
808 gateway.sinkID = gwSinkID;
809 gateway.sourceID = gwSourceID;
810 gateway.domainSourceID = domainID2;
811 gateway.domainSinkID = domainID1;
812 gateway.listSinkFormats = gwSink.listConnectionFormats;
813 gateway.listSourceFormats = gwSource.listConnectionFormats;
814 gateway.convertionMatrix.push_back(false);
815 gateway.convertionMatrix.push_back(false);
816 gateway.convertionMatrix.push_back(false);
817 gateway.convertionMatrix.push_back(false);
818 gateway.convertionMatrix.push_back(true);
819 gateway.convertionMatrix.push_back(false);
820 gateway.name = "gateway";
822 gateway1.controlDomainID = domainID2;
823 gateway1.gatewayID = 0;
824 gateway1.sinkID = gwSinkID1;
825 gateway1.sourceID = gwSourceID1;
826 gateway1.domainSourceID = domainID3;
827 gateway1.domainSinkID = domainID2;
828 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
829 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
830 gateway1.convertionMatrix.push_back(true);
831 gateway1.name = "gateway";
833 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
834 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
836 std::vector<am_Route_s> listRoutes;
837 std::vector<am_RoutingElement_s> listRoutingElements;
838 am_RoutingElement_s hopp1;
839 am_RoutingElement_s hopp2;
840 am_RoutingElement_s hopp3;
842 hopp1.sourceID = sourceID;
843 hopp1.sinkID = gwSinkID;
844 hopp1.domainID = domainID1;
845 hopp1.connectionFormat = source.listConnectionFormats[0];
847 hopp2.sourceID = gwSourceID;
848 hopp2.sinkID = gwSinkID1;
849 hopp2.domainID = domainID2;
850 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
852 hopp3.sourceID = gwSourceID1;
853 hopp3.sinkID = sinkID;
854 hopp3.domainID = domainID3;
855 hopp3.connectionFormat = sink.listConnectionFormats[0];
857 listRoutingElements.push_back(hopp1);
858 listRoutingElements.push_back(hopp2);
859 listRoutingElements.push_back(hopp3);
861 am_Route_s compareRoute;
862 compareRoute.route = listRoutingElements;
863 compareRoute.sinkID = sinkID;
864 compareRoute.sourceID = sourceID;
866 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
867 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
868 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
872 //test that checks 3 domains, one sink one source, longer lists of connectionformats.
873 TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats)
875 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
877 //initialize 2 domains
878 am_Domain_s domain1, domain2, domain3;
879 am_domainID_t domainID1, domainID2, domainID3;
881 domain1.domainID = 0;
882 domain1.name = "domain1";
883 domain1.busname = "domain1bus";
884 domain1.state = DS_CONTROLLED;
885 domain2.domainID = 0;
886 domain2.name = "domain2";
887 domain2.busname = "domain2bus";
888 domain2.state = DS_CONTROLLED;
889 domain3.domainID = 0;
890 domain3.name = "domain3";
891 domain3.busname = "domain3bus";
892 domain3.state = DS_CONTROLLED;
894 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
895 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
896 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
898 am_Source_s source, gwSource, gwSource1;
899 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
901 source.domainID = domainID1;
902 source.name = "source1";
903 source.sourceState = SS_ON;
905 source.sourceClassID = 5;
906 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
907 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
909 gwSource.domainID = domainID2;
910 gwSource.name = "gwsource1";
911 gwSource.sourceState = SS_ON;
912 gwSource.sourceID = 0;
913 gwSource.sourceClassID = 5;
914 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
916 gwSource1.domainID = domainID3;
917 gwSource1.name = "gwsource2";
918 gwSource1.sourceState = SS_ON;
919 gwSource1.sourceID = 0;
920 gwSource1.sourceClassID = 5;
921 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
923 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
924 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
925 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
927 am_Sink_s sink, gwSink, gwSink1;
928 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
930 sink.domainID = domainID3;
933 sink.sinkClassID = 5;
934 sink.muteState = MS_MUTED;
935 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
937 gwSink.domainID = domainID1;
938 gwSink.name = "gwSink";
940 gwSink.sinkClassID = 5;
941 gwSink.muteState = MS_MUTED;
942 gwSink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
943 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
945 gwSink1.domainID = domainID2;
946 gwSink1.name = "gwSink1";
948 gwSink1.sinkClassID = 5;
949 gwSink1.muteState = MS_MUTED;
950 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
952 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
953 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
954 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
956 am_Gateway_s gateway, gateway1;
957 am_gatewayID_t gatewayID, gatewayID1;
959 gateway.controlDomainID = domainID1;
960 gateway.gatewayID = 0;
961 gateway.sinkID = gwSinkID;
962 gateway.sourceID = gwSourceID;
963 gateway.domainSourceID = domainID2;
964 gateway.domainSinkID = domainID1;
965 gateway.listSinkFormats = gwSink.listConnectionFormats;
966 gateway.listSourceFormats = gwSource.listConnectionFormats;
967 gateway.convertionMatrix.push_back(false);
968 gateway.convertionMatrix.push_back(true);
969 gateway.name = "gateway";
971 gateway1.controlDomainID = domainID2;
972 gateway1.gatewayID = 0;
973 gateway1.sinkID = gwSinkID1;
974 gateway1.sourceID = gwSourceID1;
975 gateway1.domainSourceID = domainID3;
976 gateway1.domainSinkID = domainID2;
977 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
978 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
979 gateway1.convertionMatrix.push_back(true);
980 gateway1.name = "gateway";
982 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
983 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
985 std::vector<am_Route_s> listRoutes;
986 std::vector<am_RoutingElement_s> listRoutingElements;
987 am_RoutingElement_s hopp1;
988 am_RoutingElement_s hopp2;
989 am_RoutingElement_s hopp3;
991 hopp1.sourceID = sourceID;
992 hopp1.sinkID = gwSinkID;
993 hopp1.domainID = domainID1;
994 hopp1.connectionFormat = source.listConnectionFormats[1];
996 hopp2.sourceID = gwSourceID;
997 hopp2.sinkID = gwSinkID1;
998 hopp2.domainID = domainID2;
999 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1001 hopp3.sourceID = gwSourceID1;
1002 hopp3.sinkID = sinkID;
1003 hopp3.domainID = domainID3;
1004 hopp3.connectionFormat = sink.listConnectionFormats[0];
1006 listRoutingElements.push_back(hopp1);
1007 listRoutingElements.push_back(hopp2);
1008 listRoutingElements.push_back(hopp3);
1010 am_Route_s compareRoute;
1011 compareRoute.route = listRoutingElements;
1012 compareRoute.sinkID = sinkID;
1013 compareRoute.sourceID = sourceID;
1015 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1016 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
1017 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1021 //test that checks 4 domains, one sink and one source but there are 2 routes because there are 2 gateways
1022 TEST_F(CAmRouterTest,simpleRoute4Domains2Routes)
1024 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1026 //initialize 2 domains
1027 am_Domain_s domain1, domain2, domain3, domain4;
1028 am_domainID_t domainID1, domainID2, domainID3, domainID4;
1030 domain1.domainID = 0;
1031 domain1.name = "domain1";
1032 domain1.busname = "domain1bus";
1033 domain1.state = DS_CONTROLLED;
1034 domain2.domainID = 0;
1035 domain2.name = "domain2";
1036 domain2.busname = "domain2bus";
1037 domain2.state = DS_CONTROLLED;
1038 domain3.domainID = 0;
1039 domain3.name = "domain3";
1040 domain3.busname = "domain3bus";
1041 domain3.state = DS_CONTROLLED;
1042 domain4.domainID = 0;
1043 domain4.name = "domain4";
1044 domain4.busname = "domain4bus";
1045 domain4.state = DS_CONTROLLED;
1047 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1048 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1049 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1050 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain4,domainID4));
1052 am_Source_s source, gwSource, gwSource1, gwSource2, gwSource3;
1053 am_sourceID_t sourceID, gwSourceID, gwSourceID1, gwSourceID2, gwSourceID3;
1055 source.domainID = domainID1;
1056 source.name = "source1";
1057 source.sourceState = SS_ON;
1058 source.sourceID = 0;
1059 source.sourceClassID = 5;
1060 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1062 gwSource.domainID = domainID2;
1063 gwSource.name = "gwsource1";
1064 gwSource.sourceState = SS_ON;
1065 gwSource.sourceID = 0;
1066 gwSource.sourceClassID = 5;
1067 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1069 gwSource1.domainID = domainID3;
1070 gwSource1.name = "gwsource2";
1071 gwSource1.sourceState = SS_ON;
1072 gwSource1.sourceID = 0;
1073 gwSource1.sourceClassID = 5;
1074 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1076 gwSource2.domainID = domainID4;
1077 gwSource2.name = "gwsource3";
1078 gwSource2.sourceState = SS_OFF;
1079 gwSource2.sourceID = 0;
1080 gwSource2.sourceClassID = 5;
1081 gwSource2.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1083 gwSource3.domainID = domainID3;
1084 gwSource3.name = "gwsource4";
1085 gwSource3.sourceState = SS_OFF;
1086 gwSource3.sourceID = 0;
1087 gwSource3.sourceClassID = 5;
1088 gwSource3.listConnectionFormats.push_back(CF_GENIVI_MONO);
1090 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1091 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1092 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1093 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource2,gwSourceID2));
1094 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource3,gwSourceID3));
1096 am_Sink_s sink, gwSink, gwSink1, gwSink2, gwSink3;
1097 am_sinkID_t sinkID, gwSinkID, gwSinkID1, gwSinkID2, gwSinkID3;
1099 gwSink.domainID = domainID1;
1100 gwSink.name = "gwSink";
1102 gwSink.sinkClassID = 5;
1103 gwSink.muteState = MS_MUTED;
1104 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1106 gwSink1.domainID = domainID2;
1107 gwSink1.name = "gwSink1";
1109 gwSink1.sinkClassID = 5;
1110 gwSink1.muteState = MS_MUTED;
1111 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1113 gwSink2.domainID = domainID3;
1114 gwSink2.name = "gwSink2";
1116 gwSink2.sinkClassID = 5;
1117 gwSink2.muteState = MS_MUTED;
1118 gwSink2.listConnectionFormats.push_back(CF_GENIVI_MONO);
1120 gwSink3.domainID = domainID2;
1121 gwSink3.name = "gwSink3";
1123 gwSink3.sinkClassID = 5;
1124 gwSink3.muteState = MS_MUTED;
1125 gwSink3.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1127 sink.domainID = domainID4;
1128 sink.name = "sink1";
1130 sink.sinkClassID = 5;
1131 sink.muteState = MS_MUTED;
1132 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1134 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1135 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1136 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1137 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink2,gwSinkID2));
1138 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink3,gwSinkID3));
1140 am_Gateway_s gateway, gateway1, gateway2, gateway3;
1141 am_gatewayID_t gatewayID, gatewayID1, gatewayID2, gatewayID3;
1143 gateway.controlDomainID = domainID1;
1144 gateway.gatewayID = 0;
1145 gateway.sinkID = gwSinkID;
1146 gateway.sourceID = gwSourceID;
1147 gateway.domainSourceID = domainID2;
1148 gateway.domainSinkID = domainID1;
1149 gateway.listSinkFormats = gwSink.listConnectionFormats;
1150 gateway.listSourceFormats = gwSource.listConnectionFormats;
1151 gateway.convertionMatrix.push_back(true);
1152 gateway.name = "gateway";
1154 gateway1.controlDomainID = domainID2;
1155 gateway1.gatewayID = 0;
1156 gateway1.sinkID = gwSinkID1;
1157 gateway1.sourceID = gwSourceID1;
1158 gateway1.domainSourceID = domainID3;
1159 gateway1.domainSinkID = domainID2;
1160 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1161 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1162 gateway1.convertionMatrix.push_back(true);
1163 gateway1.name = "gateway1";
1165 gateway2.controlDomainID = domainID3;
1166 gateway2.gatewayID = 0;
1167 gateway2.sinkID = gwSinkID2;
1168 gateway2.sourceID = gwSourceID2;
1169 gateway2.domainSourceID = domainID4;
1170 gateway2.domainSinkID = domainID3;
1171 gateway2.listSinkFormats = gwSink2.listConnectionFormats;
1172 gateway2.listSourceFormats = gwSource2.listConnectionFormats;
1173 gateway2.convertionMatrix.push_back(true);
1174 gateway2.name = "gateway2";
1176 gateway3.controlDomainID = domainID2;
1177 gateway3.gatewayID = 0;
1178 gateway3.sinkID = gwSinkID3;
1179 gateway3.sourceID = gwSourceID3;
1180 gateway3.domainSourceID = domainID3;
1181 gateway3.domainSinkID = domainID2;
1182 gateway3.listSinkFormats = gwSink3.listConnectionFormats;
1183 gateway3.listSourceFormats = gwSource3.listConnectionFormats;
1184 gateway3.convertionMatrix.push_back(true);
1185 gateway3.name = "gateway3";
1187 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1188 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1189 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2));
1190 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway3,gatewayID3));
1192 std::vector<am_Route_s> listRoutes;
1193 std::vector<am_RoutingElement_s> listRoutingElements, listRoutingElements1;
1194 am_RoutingElement_s hopp1;
1195 am_RoutingElement_s hopp2;
1196 am_RoutingElement_s hopp3;
1197 am_RoutingElement_s hopp4;
1198 am_RoutingElement_s hopp2alt;
1199 am_RoutingElement_s hopp3alt;
1201 hopp1.sourceID = sourceID;
1202 hopp1.sinkID = gwSinkID;
1203 hopp1.domainID = domainID1;
1204 hopp1.connectionFormat = source.listConnectionFormats[0];
1206 hopp2.sourceID = gwSourceID;
1207 hopp2.sinkID = gwSinkID1;
1208 hopp2.domainID = domainID2;
1209 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1211 hopp3.sourceID = gwSourceID1;
1212 hopp3.sinkID = gwSinkID2;
1213 hopp3.domainID = domainID3;
1214 hopp3.connectionFormat = gwSink2.listConnectionFormats[0];
1216 hopp4.sourceID = gwSourceID2;
1217 hopp4.sinkID = sinkID;
1218 hopp4.domainID = domainID4;
1219 hopp4.connectionFormat = sink.listConnectionFormats[0];
1221 hopp2alt.sourceID = gwSourceID;
1222 hopp2alt.sinkID = gwSinkID3;
1223 hopp2alt.domainID = domainID2;
1224 hopp2alt.connectionFormat = gwSink3.listConnectionFormats[0];
1226 hopp3alt.sourceID = gwSourceID3;
1227 hopp3alt.sinkID = gwSinkID2;
1228 hopp3alt.domainID = domainID3;
1229 hopp3alt.connectionFormat = gwSink2.listConnectionFormats[0];
1231 listRoutingElements.push_back(hopp1);
1232 listRoutingElements.push_back(hopp2);
1233 listRoutingElements.push_back(hopp3);
1234 listRoutingElements.push_back(hopp4);
1235 listRoutingElements1.push_back(hopp1);
1236 listRoutingElements1.push_back(hopp2alt);
1237 listRoutingElements1.push_back(hopp3alt);
1238 listRoutingElements1.push_back(hopp4);
1240 am_Route_s compareRoute, compareRoute1;
1241 compareRoute.route = listRoutingElements;
1242 compareRoute.sinkID = sinkID;
1243 compareRoute.sourceID = sourceID;
1245 compareRoute1.route = listRoutingElements1;
1246 compareRoute1.sinkID = sinkID;
1247 compareRoute1.sourceID = sourceID;
1249 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1250 ASSERT_EQ(static_cast<uint>(2), listRoutes.size());
1251 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1252 ASSERT_TRUE(pCF.compareRoute(compareRoute1,listRoutes[1]));
1255 //test that checks 3 domains, one sink one source but the connectionformat of third domains do not fit.
1256 TEST_F(CAmRouterTest,simpleRoute3DomainsNoConnection)
1259 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1261 //initialize 2 domains
1262 am_Domain_s domain1, domain2, domain3;
1263 am_domainID_t domainID1, domainID2, domainID3;
1265 domain1.domainID = 0;
1266 domain1.name = "domain1";
1267 domain1.busname = "domain1bus";
1268 domain1.state = DS_CONTROLLED;
1269 domain2.domainID = 0;
1270 domain2.name = "domain2";
1271 domain2.busname = "domain2bus";
1272 domain2.state = DS_CONTROLLED;
1273 domain3.domainID = 0;
1274 domain3.name = "domain3";
1275 domain3.busname = "domain3bus";
1276 domain3.state = DS_CONTROLLED;
1278 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1279 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1280 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1282 am_Source_s source, gwSource, gwSource1;
1283 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
1285 source.domainID = domainID1;
1286 source.name = "source1";
1287 source.sourceState = SS_ON;
1288 source.sourceID = 0;
1289 source.sourceClassID = 5;
1290 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1292 gwSource.domainID = domainID2;
1293 gwSource.name = "gwsource1";
1294 gwSource.sourceState = SS_ON;
1295 gwSource.sourceID = 0;
1296 gwSource.sourceClassID = 5;
1297 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1299 gwSource1.domainID = domainID3;
1300 gwSource1.name = "gwsource2";
1301 gwSource1.sourceState = SS_ON;
1302 gwSource1.sourceID = 0;
1303 gwSource1.sourceClassID = 5;
1304 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1306 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1307 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1308 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1310 am_Sink_s sink, gwSink, gwSink1;
1311 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
1313 sink.domainID = domainID3;
1314 sink.name = "sink1";
1316 sink.sinkClassID = 5;
1317 sink.muteState = MS_MUTED;
1318 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1320 gwSink.domainID = domainID1;
1321 gwSink.name = "gwSink";
1323 gwSink.sinkClassID = 5;
1324 gwSink.muteState = MS_MUTED;
1325 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1327 gwSink1.domainID = domainID2;
1328 gwSink1.name = "gwSink1";
1330 gwSink1.sinkClassID = 5;
1331 gwSink1.muteState = MS_MUTED;
1332 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1334 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1335 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1336 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1338 am_Gateway_s gateway, gateway1;
1339 am_gatewayID_t gatewayID, gatewayID1;
1341 gateway.controlDomainID = domainID1;
1342 gateway.gatewayID = 0;
1343 gateway.sinkID = gwSinkID;
1344 gateway.sourceID = gwSourceID;
1345 gateway.domainSourceID = domainID2;
1346 gateway.domainSinkID = domainID1;
1347 gateway.listSinkFormats = gwSink.listConnectionFormats;
1348 gateway.listSourceFormats = gwSource.listConnectionFormats;
1349 gateway.convertionMatrix.push_back(true);
1350 gateway.name = "gateway";
1352 gateway1.controlDomainID = domainID2;
1353 gateway1.gatewayID = 0;
1354 gateway1.sinkID = gwSinkID1;
1355 gateway1.sourceID = gwSourceID1;
1356 gateway1.domainSourceID = domainID3;
1357 gateway1.domainSinkID = domainID2;
1358 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1359 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1360 gateway1.convertionMatrix.push_back(true);
1361 gateway1.name = "gateway";
1363 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1364 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1366 std::vector<am_Route_s> listRoutes;
1367 std::vector<am_RoutingElement_s> listRoutingElements;
1368 am_RoutingElement_s hopp1;
1369 am_RoutingElement_s hopp2;
1370 am_RoutingElement_s hopp3;
1372 hopp1.sourceID = sourceID;
1373 hopp1.sinkID = gwSinkID;
1374 hopp1.domainID = domainID1;
1375 hopp1.connectionFormat = source.listConnectionFormats[0];
1377 hopp2.sourceID = gwSourceID;
1378 hopp2.sinkID = gwSinkID1;
1379 hopp2.domainID = domainID2;
1380 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1382 hopp3.sourceID = gwSourceID1;
1383 hopp3.sinkID = sinkID;
1384 hopp3.domainID = domainID3;
1385 hopp3.connectionFormat = sink.listConnectionFormats[0];
1387 listRoutingElements.push_back(hopp1);
1388 listRoutingElements.push_back(hopp2);
1389 listRoutingElements.push_back(hopp3);
1391 am_Route_s compareRoute;
1392 compareRoute.route = listRoutingElements;
1393 compareRoute.sinkID = sinkID;
1394 compareRoute.sourceID = sourceID;
1396 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1397 ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
1399 //test that checks just 2 domains, one sink one source with only one connection format each
1400 TEST_F(CAmRouterTest,simpleRoute2Domains)
1404 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1406 //initialize 2 domains
1407 am_Domain_s domain1, domain2;
1408 am_domainID_t domainID1, domainID2;
1410 domain1.domainID = 0;
1411 domain1.name = "domain1";
1412 domain1.busname = "domain1bus";
1413 domain1.state = DS_CONTROLLED;
1414 domain2.domainID = 0;
1415 domain2.name = "domain2";
1416 domain2.busname = "domain2bus";
1417 domain2.state = DS_CONTROLLED;
1419 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1420 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1422 am_Source_s source, gwSource;
1423 am_sourceID_t sourceID, gwSourceID;
1425 source.domainID = domainID1;
1426 source.name = "source1";
1427 source.sourceState = SS_ON;
1428 source.sourceID = 0;
1429 source.sourceClassID = 5;
1430 source.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1432 gwSource.domainID = domainID2;
1433 gwSource.name = "gwsource1";
1434 gwSource.sourceState = SS_ON;
1435 gwSource.sourceID = 0;
1436 gwSource.sourceClassID = 5;
1437 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
1439 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1440 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1442 am_Sink_s sink, gwSink;
1443 am_sinkID_t sinkID, gwSinkID;
1445 sink.domainID = domainID2;
1446 sink.name = "sink1";
1448 sink.sinkClassID = 5;
1449 sink.muteState = MS_MUTED;
1450 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1452 gwSink.domainID = domainID1;
1453 gwSink.name = "gwSink";
1455 gwSink.sinkClassID = 5;
1456 gwSink.muteState = MS_MUTED;
1457 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1459 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1460 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1462 am_Gateway_s gateway;
1463 am_gatewayID_t gatewayID;
1465 gateway.controlDomainID = domainID1;
1466 gateway.gatewayID = 0;
1467 gateway.sinkID = gwSinkID;
1468 gateway.sourceID = gwSourceID;
1469 gateway.domainSourceID = domainID2;
1470 gateway.domainSinkID = domainID1;
1471 gateway.listSinkFormats = gwSink.listConnectionFormats;
1472 gateway.listSourceFormats = gwSource.listConnectionFormats;
1473 gateway.convertionMatrix.push_back(true);
1474 gateway.name = "gateway";
1476 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1478 std::vector<am_Route_s> listRoutes;
1479 std::vector<am_RoutingElement_s> listRoutingElements;
1480 am_RoutingElement_s hopp1;
1481 am_RoutingElement_s hopp2;
1483 hopp1.sinkID = gwSinkID;
1484 hopp1.sourceID = sourceID;
1485 hopp1.domainID = domainID1;
1486 hopp1.connectionFormat = source.listConnectionFormats[0];
1488 hopp2.sinkID = sinkID;
1489 hopp2.sourceID = gwSourceID;
1490 hopp2.domainID = domainID2;
1491 hopp2.connectionFormat = sink.listConnectionFormats[0];
1493 listRoutingElements.push_back(hopp1);
1494 listRoutingElements.push_back(hopp2);
1496 am_Route_s compareRoute;
1497 compareRoute.route = listRoutingElements;
1498 compareRoute.sinkID = sinkID;
1499 compareRoute.sourceID = sourceID;
1501 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1502 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
1503 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1507 //test that checks just 2 domains, one sink one source but the connectionformat of source
1508 TEST_F(CAmRouterTest,simpleRoute2DomainsNoMatchConnectionFormats)
1512 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1514 //initialize 2 domains
1515 am_Domain_s domain1, domain2;
1516 am_domainID_t domainID1, domainID2;
1518 domain1.domainID = 0;
1519 domain1.name = "domain1";
1520 domain1.busname = "domain1bus";
1521 domain1.state = DS_CONTROLLED;
1522 domain2.domainID = 0;
1523 domain2.name = "domain2";
1524 domain2.busname = "domain2bus";
1525 domain2.state = DS_CONTROLLED;
1527 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1528 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1530 am_Source_s source, gwSource;
1531 am_sourceID_t sourceID, gwSourceID;
1533 source.domainID = domainID1;
1534 source.name = "source1";
1535 source.sourceState = SS_ON;
1536 source.sourceID = 0;
1537 source.sourceClassID = 5;
1538 source.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1540 gwSource.domainID = domainID2;
1541 gwSource.name = "gwsource1";
1542 gwSource.sourceState = SS_ON;
1543 gwSource.sourceID = 0;
1544 gwSource.sourceClassID = 5;
1545 gwSource.listConnectionFormats.push_back(CF_GENIVI_MONO);
1547 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1548 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1550 am_Sink_s sink, gwSink;
1551 am_sinkID_t sinkID, gwSinkID;
1553 sink.domainID = domainID2;
1554 sink.name = "sink1";
1556 sink.sinkClassID = 5;
1557 sink.muteState = MS_MUTED;
1558 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1560 gwSink.domainID = domainID1;
1561 gwSink.name = "gwSink";
1563 gwSink.sinkClassID = 5;
1564 gwSink.muteState = MS_MUTED;
1565 gwSink.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1567 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1568 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1570 am_Gateway_s gateway;
1571 am_gatewayID_t gatewayID;
1573 gateway.controlDomainID = domainID1;
1574 gateway.gatewayID = 0;
1575 gateway.sinkID = gwSinkID;
1576 gateway.sourceID = gwSourceID;
1577 gateway.domainSourceID = domainID2;
1578 gateway.domainSinkID = domainID1;
1579 gateway.listSinkFormats = gwSink.listConnectionFormats;
1580 gateway.listSourceFormats = gwSource.listConnectionFormats;
1581 gateway.convertionMatrix.push_back(true);
1582 gateway.name = "gateway";
1584 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1586 std::vector<am_Route_s> listRoutes;
1587 std::vector<am_RoutingElement_s> listRoutingElements;
1588 am_RoutingElement_s hopp1;
1589 am_RoutingElement_s hopp2;
1591 hopp1.sinkID = gwSinkID;
1592 hopp1.sourceID = sourceID;
1593 hopp1.domainID = domainID1;
1594 hopp1.connectionFormat = source.listConnectionFormats[0];
1596 hopp2.sinkID = sinkID;
1597 hopp2.sourceID = gwSourceID;
1598 hopp2.domainID = domainID2;
1599 hopp2.connectionFormat = sink.listConnectionFormats[0];
1601 listRoutingElements.push_back(hopp1);
1602 listRoutingElements.push_back(hopp2);
1604 am_Route_s compareRoute;
1605 compareRoute.route = listRoutingElements;
1606 compareRoute.sinkID = sinkID;
1607 compareRoute.sourceID = sourceID;
1609 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1610 ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
1613 //test that checks 3 domains, one sink one source.
1614 TEST_F(CAmRouterTest,simpleRoute3Domains)
1616 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1618 //initialize 2 domains
1619 am_Domain_s domain1, domain2, domain3;
1620 am_domainID_t domainID1, domainID2, domainID3;
1622 domain1.domainID = 0;
1623 domain1.name = "domain1";
1624 domain1.busname = "domain1bus";
1625 domain1.state = DS_CONTROLLED;
1626 domain2.domainID = 0;
1627 domain2.name = "domain2";
1628 domain2.busname = "domain2bus";
1629 domain2.state = DS_CONTROLLED;
1630 domain3.domainID = 0;
1631 domain3.name = "domain3";
1632 domain3.busname = "domain3bus";
1633 domain3.state = DS_CONTROLLED;
1635 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1636 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1637 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1639 am_Source_s source, gwSource, gwSource1;
1640 am_sourceID_t sourceID, gwSourceID, gwSourceID1;
1642 source.domainID = domainID1;
1643 source.name = "source1";
1644 source.sourceState = SS_ON;
1645 source.sourceID = 0;
1646 source.sourceClassID = 5;
1647 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1649 gwSource.domainID = domainID2;
1650 gwSource.name = "gwsource1";
1651 gwSource.sourceState = SS_ON;
1652 gwSource.sourceID = 0;
1653 gwSource.sourceClassID = 5;
1654 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1656 gwSource1.domainID = domainID3;
1657 gwSource1.name = "gwsource2";
1658 gwSource1.sourceState = SS_ON;
1659 gwSource1.sourceID = 0;
1660 gwSource1.sourceClassID = 5;
1661 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1663 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1664 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1665 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1667 am_Sink_s sink, gwSink, gwSink1;
1668 am_sinkID_t sinkID, gwSinkID, gwSinkID1;
1670 sink.domainID = domainID3;
1671 sink.name = "sink1";
1673 sink.sinkClassID = 5;
1674 sink.muteState = MS_MUTED;
1675 sink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1677 gwSink.domainID = domainID1;
1678 gwSink.name = "gwSink";
1680 gwSink.sinkClassID = 5;
1681 gwSink.muteState = MS_MUTED;
1682 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1684 gwSink1.domainID = domainID2;
1685 gwSink1.name = "gwSink1";
1687 gwSink1.sinkClassID = 5;
1688 gwSink1.muteState = MS_MUTED;
1689 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1691 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1692 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1693 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1695 am_Gateway_s gateway, gateway1;
1696 am_gatewayID_t gatewayID, gatewayID1;
1698 gateway.controlDomainID = domainID1;
1699 gateway.gatewayID = 0;
1700 gateway.sinkID = gwSinkID;
1701 gateway.sourceID = gwSourceID;
1702 gateway.domainSourceID = domainID2;
1703 gateway.domainSinkID = domainID1;
1704 gateway.listSinkFormats = gwSink.listConnectionFormats;
1705 gateway.listSourceFormats = gwSource.listConnectionFormats;
1706 gateway.convertionMatrix.push_back(true);
1707 gateway.name = "gateway";
1709 gateway1.controlDomainID = domainID2;
1710 gateway1.gatewayID = 0;
1711 gateway1.sinkID = gwSinkID1;
1712 gateway1.sourceID = gwSourceID1;
1713 gateway1.domainSourceID = domainID3;
1714 gateway1.domainSinkID = domainID2;
1715 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1716 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1717 gateway1.convertionMatrix.push_back(true);
1718 gateway1.name = "gateway";
1720 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1721 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1723 std::vector<am_Route_s> listRoutes;
1724 std::vector<am_RoutingElement_s> listRoutingElements;
1725 am_RoutingElement_s hopp1;
1726 am_RoutingElement_s hopp2;
1727 am_RoutingElement_s hopp3;
1729 hopp1.sourceID = sourceID;
1730 hopp1.sinkID = gwSinkID;
1731 hopp1.domainID = domainID1;
1732 hopp1.connectionFormat = source.listConnectionFormats[0];
1734 hopp2.sourceID = gwSourceID;
1735 hopp2.sinkID = gwSinkID1;
1736 hopp2.domainID = domainID2;
1737 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1739 hopp3.sourceID = gwSourceID1;
1740 hopp3.sinkID = sinkID;
1741 hopp3.domainID = domainID3;
1742 hopp3.connectionFormat = sink.listConnectionFormats[0];
1744 listRoutingElements.push_back(hopp1);
1745 listRoutingElements.push_back(hopp2);
1746 listRoutingElements.push_back(hopp3);
1748 am_Route_s compareRoute;
1749 compareRoute.route = listRoutingElements;
1750 compareRoute.sinkID = sinkID;
1751 compareRoute.sourceID = sourceID;
1753 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1754 ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
1755 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1758 //test that checks 4 domains, one sink and one source.
1759 TEST_F(CAmRouterTest,simpleRoute4Domains)
1761 EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK)));
1763 //initialize 2 domains
1764 am_Domain_s domain1, domain2, domain3, domain4;
1765 am_domainID_t domainID1, domainID2, domainID3, domainID4;
1767 domain1.domainID = 0;
1768 domain1.name = "domain1";
1769 domain1.busname = "domain1bus";
1770 domain1.state = DS_CONTROLLED;
1771 domain2.domainID = 0;
1772 domain2.name = "domain2";
1773 domain2.busname = "domain2bus";
1774 domain2.state = DS_CONTROLLED;
1775 domain3.domainID = 0;
1776 domain3.name = "domain3";
1777 domain3.busname = "domain3bus";
1778 domain3.state = DS_CONTROLLED;
1779 domain4.domainID = 0;
1780 domain4.name = "domain4";
1781 domain4.busname = "domain4bus";
1782 domain4.state = DS_CONTROLLED;
1784 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1));
1785 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain2,domainID2));
1786 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain3,domainID3));
1787 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain4,domainID4));
1789 am_Source_s source, gwSource, gwSource1, gwSource2;
1790 am_sourceID_t sourceID, gwSourceID, gwSourceID1, gwSourceID2;
1792 source.domainID = domainID1;
1793 source.name = "source1";
1794 source.sourceState = SS_ON;
1795 source.sourceID = 0;
1796 source.sourceClassID = 5;
1797 source.listConnectionFormats.push_back(CF_GENIVI_MONO);
1799 gwSource.domainID = domainID2;
1800 gwSource.name = "gwsource1";
1801 gwSource.sourceState = SS_ON;
1802 gwSource.sourceID = 0;
1803 gwSource.sourceClassID = 5;
1804 gwSource.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1806 gwSource1.domainID = domainID3;
1807 gwSource1.name = "gwsource2";
1808 gwSource1.sourceState = SS_ON;
1809 gwSource1.sourceID = 0;
1810 gwSource1.sourceClassID = 5;
1811 gwSource1.listConnectionFormats.push_back(CF_GENIVI_MONO);
1813 gwSource2.domainID = domainID4;
1814 gwSource2.name = "gwsource3";
1815 gwSource2.sourceState = SS_OFF;
1816 gwSource2.sourceID = 0;
1817 gwSource2.sourceClassID = 5;
1818 gwSource2.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1820 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1821 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource,gwSourceID));
1822 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource1,gwSourceID1));
1823 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(gwSource2,gwSourceID2));
1825 am_Sink_s sink, gwSink, gwSink1, gwSink2;
1826 am_sinkID_t sinkID, gwSinkID, gwSinkID1, gwSinkID2;
1828 gwSink.domainID = domainID1;
1829 gwSink.name = "gwSink";
1831 gwSink.sinkClassID = 5;
1832 gwSink.muteState = MS_MUTED;
1833 gwSink.listConnectionFormats.push_back(CF_GENIVI_MONO);
1835 gwSink1.domainID = domainID2;
1836 gwSink1.name = "gwSink1";
1838 gwSink1.sinkClassID = 5;
1839 gwSink1.muteState = MS_MUTED;
1840 gwSink1.listConnectionFormats.push_back(CF_GENIVI_ANALOG);
1842 gwSink2.domainID = domainID3;
1843 gwSink2.name = "gwSink2";
1845 gwSink2.sinkClassID = 5;
1846 gwSink2.muteState = MS_MUTED;
1847 gwSink2.listConnectionFormats.push_back(CF_GENIVI_MONO);
1849 sink.domainID = domainID4;
1850 sink.name = "sink1";
1852 sink.sinkClassID = 5;
1853 sink.muteState = MS_MUTED;
1854 sink.listConnectionFormats.push_back(CF_GENIVI_STEREO);
1856 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1857 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink,gwSinkID));
1858 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink1,gwSinkID1));
1859 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(gwSink2,gwSinkID2));
1861 am_Gateway_s gateway, gateway1, gateway2;
1862 am_gatewayID_t gatewayID, gatewayID1, gatewayID2;
1864 gateway.controlDomainID = domainID1;
1865 gateway.gatewayID = 0;
1866 gateway.sinkID = gwSinkID;
1867 gateway.sourceID = gwSourceID;
1868 gateway.domainSourceID = domainID2;
1869 gateway.domainSinkID = domainID1;
1870 gateway.listSinkFormats = gwSink.listConnectionFormats;
1871 gateway.listSourceFormats = gwSource.listConnectionFormats;
1872 gateway.convertionMatrix.push_back(true);
1873 gateway.name = "gateway";
1875 gateway1.controlDomainID = domainID2;
1876 gateway1.gatewayID = 0;
1877 gateway1.sinkID = gwSinkID1;
1878 gateway1.sourceID = gwSourceID1;
1879 gateway1.domainSourceID = domainID3;
1880 gateway1.domainSinkID = domainID2;
1881 gateway1.listSinkFormats = gwSink1.listConnectionFormats;
1882 gateway1.listSourceFormats = gwSource1.listConnectionFormats;
1883 gateway1.convertionMatrix.push_back(true);
1884 gateway1.name = "gateway1";
1886 gateway2.controlDomainID = domainID3;
1887 gateway2.gatewayID = 0;
1888 gateway2.sinkID = gwSinkID2;
1889 gateway2.sourceID = gwSourceID2;
1890 gateway2.domainSourceID = domainID4;
1891 gateway2.domainSinkID = domainID3;
1892 gateway2.listSinkFormats = gwSink2.listConnectionFormats;
1893 gateway2.listSourceFormats = gwSource2.listConnectionFormats;
1894 gateway2.convertionMatrix.push_back(true);
1895 gateway2.name = "gateway2";
1897 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway,gatewayID));
1898 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1));
1899 ASSERT_EQ(E_OK, pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2));
1901 std::vector<am_Route_s> listRoutes;
1902 std::vector<am_RoutingElement_s> listRoutingElements;
1903 am_RoutingElement_s hopp1;
1904 am_RoutingElement_s hopp2;
1905 am_RoutingElement_s hopp3;
1906 am_RoutingElement_s hopp4;
1908 hopp1.sourceID = sourceID;
1909 hopp1.sinkID = gwSinkID;
1910 hopp1.domainID = domainID1;
1911 hopp1.connectionFormat = source.listConnectionFormats[0];
1913 hopp2.sourceID = gwSourceID;
1914 hopp2.sinkID = gwSinkID1;
1915 hopp2.domainID = domainID2;
1916 hopp2.connectionFormat = gwSink1.listConnectionFormats[0];
1918 hopp3.sourceID = gwSourceID1;
1919 hopp3.sinkID = gwSinkID2;
1920 hopp3.domainID = domainID3;
1921 hopp3.connectionFormat = gwSink2.listConnectionFormats[0];
1923 hopp4.sourceID = gwSourceID2;
1924 hopp4.sinkID = sinkID;
1925 hopp4.domainID = domainID4;
1926 hopp4.connectionFormat = sink.listConnectionFormats[0];
1928 listRoutingElements.push_back(hopp1);
1929 listRoutingElements.push_back(hopp2);
1930 listRoutingElements.push_back(hopp3);
1931 listRoutingElements.push_back(hopp4);
1933 am_Route_s compareRoute;
1934 compareRoute.route = listRoutingElements;
1935 compareRoute.sinkID = sinkID;
1936 compareRoute.sourceID = sourceID;
1938 ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
1940 ASSERT_EQ(size, listRoutes.size());
1941 ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
1944 int main(int argc, char **argv)
1947 CAmDltWrapper::instance()->registerApp("routing", "CAmRouterTest");
1949 CAmDltWrapper::instance(true)->registerApp("routing", "CAmRouterTest");
1951 logInfo("Routing Test started ");
1952 ::testing::InitGoogleTest(&argc, argv);
1953 return RUN_ALL_TESTS();