diff options
author | Aleksandar Donchev <Aleksander.Donchev@partner.bmw.de> | 2017-01-23 15:18:21 +0100 |
---|---|---|
committer | Christian Linke <christian.linke@bmw.de> | 2017-02-20 08:49:44 -0800 |
commit | 277a638bf1d27ba6c3da37ff82d2fd06e718e7ca (patch) | |
tree | 8a1e66b915bea8fca798afbe6cd8ef232612dad9 /AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp | |
parent | 17c439ae25beec19fba090faa360d6ef04336a4c (diff) | |
download | audiomanager-277a638bf1d27ba6c3da37ff82d2fd06e718e7ca.tar.gz |
* Max count of the returned routes and max allowed domain cycles
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Diffstat (limited to 'AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp')
-rw-r--r-- | AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp | 271 |
1 files changed, 212 insertions, 59 deletions
diff --git a/AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp b/AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp index 9dd23af..ad886f4 100644 --- a/AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp +++ b/AudioManagerCore/test/AmRouterMapTest/CAmRouterMapTest.cpp @@ -167,12 +167,16 @@ void CAmRouterMapTest::enterConverterDB(const std::string & gwName, ASSERT_EQ(E_OK, pDatabaseHandler.enterConverterDB(converter,converterID)); } -void CAmRouterMapTest::getRoute(const bool onlyfree, const am_Source_s & aSource, const am_Sink_s & aSink, std::vector<am_Route_s> & listRoutes) +void CAmRouterMapTest::getRoute(const bool onlyfree, const bool shouldReload, const am_Source_s & aSource, const am_Sink_s & aSink, std::vector<am_Route_s> & listRoutes, const unsigned countCycles, const unsigned pathsCount) { + pRouter.setMaxAllowedCycles(countCycles); + pRouter.setMaxPathCount(pathsCount); std::ios_base::fmtflags oldflags = std::cout.flags(); std::streamsize oldprecision = std::cout.precision(); auto t_start = std::chrono::high_resolution_clock::now(); - ASSERT_EQ(E_OK, pRouter.getRoute(onlyfree, aSource, aSink, listRoutes)); + if(shouldReload) + pRouter.load(onlyfree); + ASSERT_EQ(E_OK, pRouter.getRouteFromLoadedNodes(aSource, aSink, listRoutes)); auto t_end = std::chrono::high_resolution_clock::now(); std::cout << std::fixed << std::setprecision(2); std::cout << listRoutes.size() <<" routes from " << aSource.sourceID << " to " << aSink.sinkID; @@ -181,12 +185,16 @@ void CAmRouterMapTest::getRoute(const bool onlyfree, const am_Source_s & aSource std::cout.precision (oldprecision); } -void CAmRouterMapTest::getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList) +void CAmRouterMapTest::getRoute(const bool onlyfree, const bool shouldReload, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList, const unsigned countCycles, const unsigned pathsCount) { + pRouter.setMaxAllowedCycles(countCycles); + pRouter.setMaxPathCount(pathsCount); std::ios_base::fmtflags oldflags = std::cout.flags(); std::streamsize oldprecision = std::cout.precision(); auto t_start = std::chrono::high_resolution_clock::now(); - ASSERT_EQ(E_OK, pRouter.getRoute(onlyfree, sourceID, sinkID, returnList)); + if(shouldReload) + pRouter.load(onlyfree); + ASSERT_EQ(E_OK, pRouter.getRouteFromLoadedNodes(sourceID, sinkID, returnList)); auto t_end = std::chrono::high_resolution_clock::now(); std::cout << std::fixed << std::setprecision(2); std::cout << returnList.size() <<" routes from " << sourceID << " to " << sinkID; @@ -195,16 +203,14 @@ void CAmRouterMapTest::getRoute(const bool onlyfree, const am_sourceID_t sourceI std::cout.precision (oldprecision); } -void CAmRouterMapTest::getAllPaths(CAmRoutingNode & aSource, - CAmRoutingNode & aSink, - std::vector<am_Route_s> & resultPath, - std::vector<std::vector<CAmRoutingNode*>> & resultNodesPath, - const bool includeCycles) +void CAmRouterMapTest::getAllPaths(CAmRoutingNode & aSource, CAmRoutingNode & aSink, std::vector<am_Route_s> & resultPath, const unsigned countCycles, const unsigned pathsCount) { + pRouter.setMaxAllowedCycles(countCycles); + pRouter.setMaxPathCount(pathsCount); std::ios_base::fmtflags oldflags = std::cout.flags(); std::streamsize oldprecision = std::cout.precision(); auto t_start = std::chrono::high_resolution_clock::now(); - ASSERT_EQ(E_OK, pRouter.getAllPaths(aSource, aSink, resultPath, resultNodesPath, includeCycles)); + ASSERT_EQ(E_OK, pRouter.getFirstNShortestPaths(aSource, aSink, resultPath)); auto t_end = std::chrono::high_resolution_clock::now(); std::cout << std::fixed << std::setprecision(2); std::cout << resultPath.size() @@ -218,19 +224,19 @@ void CAmRouterMapTest::getAllPaths(CAmRoutingNode & aSource, TEST_F(CAmRouterMapTest,checkInsertedDomain) { std::vector<am_domainID_t> domains; - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22, 0)); domains.push_back(22); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22, 0)); domains.push_back(22); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22)); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 50)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 22, 0)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 50, 0)); domains.push_back(30); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 30)); - ASSERT_FALSE(CAmRouter::shouldGoInDomain(domains, 22)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 30, 0)); + ASSERT_FALSE(CAmRouter::shouldGoInDomain(domains, 22, 0)); domains.push_back(30); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 30)); - ASSERT_FALSE(CAmRouter::shouldGoInDomain(domains, 22)); - ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 60)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 30, 0)); + ASSERT_FALSE(CAmRouter::shouldGoInDomain(domains, 22, 0)); + ASSERT_TRUE(CAmRouter::shouldGoInDomain(domains, 60, 0)); } //test that checks just sinks and source in a domain but connectionformats do not match @@ -304,7 +310,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2withDomainNoMatchFormats) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(true, sourceDb, sinkDb, listRoutes); + getRoute(true, true, sourceDb, sinkDb, listRoutes); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); } @@ -379,7 +385,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2withDomain) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(true, sourceDb, sinkDb, listRoutes); + getRoute(true, true, sourceDb, sinkDb, listRoutes); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -498,7 +504,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2DomainsOnlyFree) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(true,sourceID,sinkID,listRoutes); + getRoute(true, true,sourceID,sinkID,listRoutes); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -633,11 +639,11 @@ TEST_F(CAmRouterMapTest,simpleRoute2DomainsOnlyFreeNotFree) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(true, sourceDb, sinkDb, listRoutes); + getRoute(true, true, sourceDb, sinkDb, listRoutes); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); listRoutes.clear(); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -784,7 +790,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2DomainsCircularGWOnlyFree) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(true, sourceDb, sinkDb, listRoutes); + getRoute(true, true, sourceDb, sinkDb, listRoutes); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -957,7 +963,7 @@ TEST_F(CAmRouterMapTest,simpleRoute3DomainsListConnectionFormats_2) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -1124,12 +1130,11 @@ TEST_F(CAmRouterMapTest,simpleRoute3DomainsListConnectionFormats_1) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } - //test that checks 3 domains, one sink one source, longer lists of connectionformats. TEST_F(CAmRouterMapTest,simpleRoute3DomainsListConnectionFormats) { @@ -1287,12 +1292,11 @@ TEST_F(CAmRouterMapTest,simpleRoute3DomainsListConnectionFormats) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } - //test that checks 4 domains, one sink and one source but there are 2 routes because there are 2 gateways TEST_F(CAmRouterMapTest,simpleRoute4Domains2Routes) { @@ -1534,7 +1538,7 @@ TEST_F(CAmRouterMapTest,simpleRoute4Domains2Routes) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(2), listRoutes.size()); bool containsRoute1 = std::find_if(listRoutes.begin(), listRoutes.end(), [&](const am_Route_s & ref) { @@ -1702,9 +1706,10 @@ TEST_F(CAmRouterMapTest,simpleRoute3DomainsNoConnection) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); } + //test that checks just 2 domains, one sink one source with only one connection format each TEST_F(CAmRouterMapTest,simpleRoute2Domains) { @@ -1820,7 +1825,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2Domains) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -1917,7 +1922,7 @@ TEST_F(CAmRouterMapTest,simpleRoute2DomainsNoMatchConnectionFormats) am::am_Sink_s sinkDb; pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); } @@ -2076,7 +2081,7 @@ TEST_F(CAmRouterMapTest,simpleRoute3Domains) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -2275,7 +2280,7 @@ TEST_F(CAmRouterMapTest,simpleRoute4Domains) pDatabaseHandler.getSinkInfoDB(sinkID, sinkDb); pDatabaseHandler.getSourceInfoDB(sourceID, sourceDb); listRoutes.clear(); - getRoute(false, sourceDb, sinkDb, listRoutes); + getRoute(false, true, sourceDb, sinkDb, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -2400,7 +2405,7 @@ TEST_F(CAmRouterMapTest,route1Domain1Source1Sink) compareRoute.sinkID = sinkID; compareRoute.sourceID = sourceID; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -2485,7 +2490,7 @@ TEST_F(CAmRouterMapTest,route1Domain1Source1Converter1Sink) compareRoute.sinkID = sinkID1; compareRoute.sourceID = sourceID; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); } @@ -2600,7 +2605,7 @@ TEST_F(CAmRouterMapTest,route1Domain1Source3Converters1Sink) compareRoute1.sinkID = sinkID; compareRoute1.sourceID = sourceID; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(2), listRoutes.size()); ASSERT_TRUE(pCF.compareRoute(compareRoute1,listRoutes[0])||pCF.compareRoute(compareRoute1,listRoutes[1])); @@ -2665,7 +2670,7 @@ TEST_F(CAmRouterMapTest,route2Domains1Source1Sink) pDatabaseHandler.getSourceInfoDB(sourceID, source); std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); am_Route_s compareRoute1; @@ -2741,7 +2746,7 @@ TEST_F(CAmRouterMapTest,route3Domains1Source1Sink) std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); am_Route_s compareRoute1; @@ -2822,7 +2827,7 @@ TEST_F(CAmRouterMapTest,routeSource1Sink2PathThroughConv1Gate1) std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink1, listRoutes); + getRoute(false, true, source, sink1, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); am_Route_s compareRoute1; @@ -2834,7 +2839,7 @@ TEST_F(CAmRouterMapTest,routeSource1Sink2PathThroughConv1Gate1) ASSERT_TRUE(pCF.compareRoute(compareRoute1,listRoutes[0])); listRoutes.clear(); - getRoute(false, source, sink2, listRoutes); + getRoute(false, true, source, sink2, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); } @@ -2900,13 +2905,13 @@ TEST_F(CAmRouterMapTest, routeSource1Sink1PathThroughDomain2) pDatabaseHandler.getSinkInfoDB(sink1ID, sink1); pDatabaseHandler.getSourceInfoDB(sourceID, source); - getRoute(false, source, sink1, listRoutes); + getRoute(false, true, source, sink1, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); am::am_Sink_s sink2; pDatabaseHandler.getSinkInfoDB(sink2ID, sink2); - getRoute(false, source, sink2, listRoutes); + getRoute(false, true, source, sink2, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); am_Route_s compareRoute1; @@ -2993,12 +2998,12 @@ TEST_F(CAmRouterMapTest, routeSource1Sink1PathThroughGate1Conv2Gate2) std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); am::am_Sink_s sink1; pDatabaseHandler.getSinkInfoDB(sink2ID, sink1); - getRoute(false, source, sink1, listRoutes); + getRoute(false, true, source, sink1, listRoutes, 0); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); am_Route_s compareRoute1; @@ -3107,12 +3112,12 @@ TEST_F(CAmRouterMapTest, routeSource1Sink1PathThroughConv1Gate1Conv2Gate2) std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes, 0); ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); am::am_Sink_s sink2; pDatabaseHandler.getSinkInfoDB(coSinkID21, sink2); - pRouter.getRoute(false, source, sink2, listRoutes); + getRoute(false, true, source, sink2, listRoutes, 0); ASSERT_EQ(static_cast<uint>(2), listRoutes.size()); am_Route_s compareRoute1; @@ -3217,7 +3222,6 @@ TEST_F(CAmRouterMapTest,route3Domains1Source1SinkGwCycles) ASSERT_TRUE(sinkNode); std::vector<am_Route_s> listRoutes; - std::vector<std::vector<CAmRoutingNode*>> resultNodesPath; am_Route_s compareRoute1; compareRoute1.sinkID = sink1ID; @@ -3231,8 +3235,7 @@ TEST_F(CAmRouterMapTest,route3Domains1Source1SinkGwCycles) ASSERT_TRUE(didMatch); \ } -#ifdef ROUTING_BUILD_CONNECTIONS - getAllPaths(*sourceNode, *sinkNode, listRoutes, resultNodesPath, true); + getAllPaths(*sourceNode, *sinkNode, listRoutes, UINT_MAX, 10); ASSERT_EQ(static_cast<uint>(9), listRoutes.size()); compareRoute1.route.clear(); @@ -3303,19 +3306,169 @@ TEST_F(CAmRouterMapTest,route3Domains1Source1SinkGwCycles) compareRoute1.route.push_back({source1ID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); DO_ASSERT() -#else + + listRoutes.clear(); + + getAllPaths(*sourceNode, *sinkNode, listRoutes, 1, 10); + ASSERT_EQ(static_cast<uint>(5), listRoutes.size()); + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw2SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw2SourceID, gw4SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw4SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); + DO_ASSERT() + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw1SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw1SourceID, gw3SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw3SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); + DO_ASSERT() + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw2SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw2SourceID, gw3SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw3SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); + DO_ASSERT() + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw1SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw1SourceID, gw4SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw4SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); + DO_ASSERT() + compareRoute1.route.clear(); compareRoute1.route.push_back({source1ID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_STEREO}); -#endif + DO_ASSERT() listRoutes.clear(); - resultNodesPath.clear(); - getAllPaths(*sourceNode, *sinkNode, listRoutes, resultNodesPath, false); + + getAllPaths(*sourceNode, *sinkNode, listRoutes); ASSERT_EQ(static_cast<uint>(1), listRoutes.size()); DO_ASSERT() } +TEST_F(CAmRouterMapTest,route3Domains1Source1SinkGwCycles2) +{ + EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK))); + + am_SourceClass_s sourceclass; + + sourceclass.name="sClass"; + sourceclass.sourceClassID=5; + + ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceclass.sourceClassID,sourceclass)); + + am_SinkClass_s sinkclass; + sinkclass.sinkClassID=5; + sinkclass.name="sname"; + + + ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkclass,sinkclass.sinkClassID)); + + am_domainID_t domain1ID, domain2ID, domain3ID; + enterDomainDB("domain1", domain1ID); + enterDomainDB("domain2", domain2ID); + enterDomainDB("domain3", domain3ID); + + //just make so many cycles as possible + std::vector<am_CustomConnectionFormat_t> cfStereo; + cfStereo.push_back(CF_GENIVI_STEREO); + std::vector<am_CustomConnectionFormat_t> cfOther; + cfOther.push_back(CF_GENIVI_AUTO); + std::vector<am_CustomConnectionFormat_t> cfMono; + cfMono.push_back(CF_GENIVI_MONO); + + am_sourceID_t source1ID; + enterSourceDB("source1", domain1ID, cfMono, source1ID); + am_sinkID_t gw1SinkID; + enterSinkDB("gw1Sink", domain1ID, cfStereo, gw1SinkID); + am_sinkID_t gw2SinkID; + enterSinkDB("gw2Sink", domain1ID, cfMono, gw2SinkID); + am_sourceID_t gw3SourceID; + enterSourceDB("gw3Source", domain1ID, cfStereo, gw3SourceID); + am_sourceID_t gw4SourceID; + enterSourceDB("gw4Source", domain1ID, cfStereo, gw4SourceID); + am_sinkID_t gw5SinkID; + enterSinkDB("gw5Sink", domain1ID, cfStereo, gw5SinkID); + + am_sourceID_t gw1SourceID; + enterSourceDB("gw1Source", domain2ID, cfStereo, gw1SourceID); + am_sourceID_t gw2SourceID; + enterSourceDB("gw2Source", domain2ID, cfStereo, gw2SourceID); + am_sinkID_t gw3SinkID; + enterSinkDB("gw3Sink", domain2ID, cfStereo, gw3SinkID); + am_sinkID_t gw4SinkID; + enterSinkDB("gw4Sink", domain2ID, cfStereo, gw4SinkID); + + am_sourceID_t gw5SourceID; + enterSourceDB("gw5Source", domain3ID, cfOther, gw5SourceID); + am_sinkID_t sink1ID; + enterSinkDB("sink1", domain3ID, cfOther, sink1ID); + + std::vector<bool> matrixT; + matrixT.push_back(true); + std::vector<bool> matrixF; + matrixF.push_back(false); + + am_gatewayID_t gateway1ID; + enterGatewayDB("gateway1", domain2ID, domain1ID, cfStereo, cfStereo, matrixT, gw1SourceID, gw1SinkID, gateway1ID); + am_gatewayID_t gateway2ID; + enterGatewayDB("gateway2", domain2ID, domain1ID, cfStereo, cfMono, matrixT, gw2SourceID, gw2SinkID, gateway2ID); + am_gatewayID_t gateway3ID; + enterGatewayDB("gateway3", domain1ID, domain2ID, cfStereo, cfStereo, matrixT, gw3SourceID, gw3SinkID, gateway3ID); + am_gatewayID_t gateway4ID; + enterGatewayDB("gateway4", domain1ID, domain2ID, cfStereo, cfStereo, matrixT, gw4SourceID, gw4SinkID, gateway4ID); + am_gatewayID_t gateway5ID; + enterGatewayDB("gateway5", domain3ID, domain1ID, cfOther, cfStereo, matrixT, gw5SourceID, gw5SinkID, gateway5ID); + + pRouter.load(false); + + CAmRoutingNode* sourceNode = pRouter.sourceNodeWithID(source1ID); + CAmRoutingNode* sinkNode = pRouter.sinkNodeWithID(sink1ID); + + ASSERT_TRUE(sourceNode); + ASSERT_TRUE(sinkNode); + + std::vector<am_Route_s> listRoutes; + + am_Route_s compareRoute1; + compareRoute1.sinkID = sink1ID; + compareRoute1.sourceID = source1ID; + +#define DO_ASSERT() \ + {\ + bool didMatch = false; \ + for(auto it = listRoutes.begin(); it!=listRoutes.end(); it++) \ + didMatch|=pCF.compareRoute(compareRoute1,*it); \ + ASSERT_TRUE(didMatch); \ + } + + getRoute(false, false, source1ID, sink1ID, listRoutes, 0, 10); + ASSERT_EQ(static_cast<uint>(0), listRoutes.size()); + + getRoute(false, false, source1ID, sink1ID, listRoutes, 1, 10); + ASSERT_EQ(static_cast<uint>(2), listRoutes.size()); + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw2SinkID, domain1ID, CF_GENIVI_MONO}); + compareRoute1.route.push_back({gw2SourceID, gw4SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw4SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_AUTO}); + DO_ASSERT() + + compareRoute1.route.clear(); + compareRoute1.route.push_back({source1ID, gw2SinkID, domain1ID, CF_GENIVI_MONO}); + compareRoute1.route.push_back({gw2SourceID, gw3SinkID, domain2ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw3SourceID, gw5SinkID, domain1ID, CF_GENIVI_STEREO}); + compareRoute1.route.push_back({gw5SourceID, sink1ID, domain3ID, CF_GENIVI_AUTO}); + DO_ASSERT() +} + TEST_F(CAmRouterMapTest,route3Domains1Source3Gateways3Convertres1Sink) { EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK))); @@ -3403,7 +3556,7 @@ TEST_F(CAmRouterMapTest,route3Domains1Source3Gateways3Convertres1Sink) std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes); ASSERT_EQ(static_cast<uint>(4), listRoutes.size()); am_Route_s compareRoute1; @@ -3519,7 +3672,7 @@ TEST_F(CAmRouterMapTest, routeTunerHeadphonePathThroughGWPlus2OtherSinks) pDatabaseHandler.getSourceInfoDB(tunerID, source); std::vector<am_Route_s> listRoutes; - getRoute(false, source, sink, listRoutes); + getRoute(false, true, source, sink, listRoutes); ASSERT_EQ(listRoutes.size(), static_cast<uint>(1)); am_Route_s compareRoute1; @@ -3536,7 +3689,7 @@ TEST_F(CAmRouterMapTest, routeTunerHeadphonePathThroughGWPlus2OtherSinks) am::am_Sink_s sink2; pDatabaseHandler.getSinkInfoDB(rseHeadphoneID, sink2); pDatabaseHandler.getSourceInfoDB(gwSourceID1, gwSource); - getRoute(false, gwSource, sink2, listRoutes); + getRoute(false, true, gwSource, sink2, listRoutes); ASSERT_GT(listRoutes.size(), static_cast<uint>(0)); am_Route_s compareRoute2; |