IVGCVSW-3557 Return IProfilingConnection from ProfilingConnectionFactory
authorSadik Armagan <sadik.armagan@arm.com>
Thu, 26 Sep 2019 22:13:31 +0000 (23:13 +0100)
committerKevin May <kevin.may@arm.com>
Fri, 27 Sep 2019 07:01:48 +0000 (07:01 +0000)
    * Remove WaitingForAck test, test std::cerr instead

Signed-off-by: Kevin May <kevin.may@arm.com>
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I968c53dc005ff078ed08faf8818c83cb2a41528a

src/profiling/ProfilingConnectionFactory.cpp
src/profiling/ProfilingService.cpp
src/profiling/test/ProfilingTests.cpp

index 1b4924d..faecea7 100644 (file)
@@ -4,6 +4,7 @@
 //
 
 #include "ProfilingConnectionFactory.hpp"
+#include "SocketProfilingConnection.hpp"
 
 namespace armnn
 {
@@ -14,7 +15,7 @@ namespace profiling
 std::unique_ptr<IProfilingConnection> ProfilingConnectionFactory::GetProfilingConnection(
     const Runtime::CreationOptions::ExternalProfilingOptions& options) const
 {
-    return nullptr;
+    return std::make_unique<SocketProfilingConnection>();
 }
 
 } // namespace profiling
index 9f59788..786bfae 100644 (file)
@@ -57,14 +57,17 @@ void ProfilingService::Run()
 {
     if (m_State.GetCurrentState() == ProfilingState::NotConnected)
     {
-        //  Since GetProfilingConnection is not implemented, if !NULL,
-        //  then change to WaitingForAck. This will need to change once there is implementation
-        //  for the IProfilingConnection
-        if (!m_Factory.GetProfilingConnection(m_Options))
+        try
         {
+            m_Factory.GetProfilingConnection(m_Options);
             m_State.TransitionToState(ProfilingState::WaitingForAck);
         }
-    } else if (m_State.GetCurrentState() == ProfilingState::Uninitialised && m_Options.m_EnableProfiling == true)
+        catch (const armnn::Exception& e)
+        {
+            std::cerr << e.what() << std::endl;
+        }
+    }
+    else if (m_State.GetCurrentState() == ProfilingState::Uninitialised && m_Options.m_EnableProfiling == true)
     {
         Initialise();
     }
index a474c30..5ef9811 100644 (file)
 
 #include <armnn/Conversion.hpp>
 
-#include <boost/test/unit_test.hpp>
+#include <boost/algorithm/string.hpp>
 #include <boost/numeric/conversion/cast.hpp>
+#include <boost/test/unit_test.hpp>
 
 #include <cstdint>
 #include <cstring>
+#include <iostream>
 #include <limits>
 #include <map>
 #include <random>
@@ -663,17 +665,32 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceDisabled)
     BOOST_CHECK(service.GetCurrentState() ==  ProfilingState::Uninitialised);
 }
 
+struct cerr_redirect {
+    cerr_redirect(std::streambuf* new_buffer)
+        : old( std::cerr.rdbuf(new_buffer)) {}
+
+    ~cerr_redirect( ) {
+        std::cerr.rdbuf(old);
+    }
+
+private:
+    std::streambuf* old;
+};
+
 BOOST_AUTO_TEST_CASE(CheckProfilingServiceEnabled)
 {
     armnn::Runtime::CreationOptions::ExternalProfilingOptions options;
     options.m_EnableProfiling = true;
     ProfilingService service(options);
     BOOST_CHECK(service.GetCurrentState() ==  ProfilingState::NotConnected);
+
+    // As there is no daemon running a connection cannot be made so expect a std::cerr to console
+    std::stringstream ss;
+    cerr_redirect guard(ss.rdbuf());
     service.Run();
-    BOOST_CHECK(service.GetCurrentState() ==  ProfilingState::WaitingForAck);
+    BOOST_CHECK(boost::contains(ss.str(), "Cannot connect to stream socket: Connection refused"));
 }
 
-
 BOOST_AUTO_TEST_CASE(CheckProfilingServiceEnabledRuntime)
 {
     armnn::Runtime::CreationOptions::ExternalProfilingOptions options;
@@ -684,8 +701,12 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceEnabledRuntime)
     options.m_EnableProfiling = true;
     service.ResetExternalProfilingOptions(options);
     BOOST_CHECK(service.GetCurrentState() ==  ProfilingState::NotConnected);
+
+    // As there is no daemon running a connection cannot be made so expect a std::cerr to console
+    std::stringstream ss;
+    cerr_redirect guard(ss.rdbuf());
     service.Run();
-    BOOST_CHECK(service.GetCurrentState() ==  ProfilingState::WaitingForAck);
+    BOOST_CHECK(boost::contains(ss.str(), "Cannot connect to stream socket: Connection refused"));
 }
 
 BOOST_AUTO_TEST_CASE(CheckProfilingServiceCounterDirectory)