Improved output of stress test stat
[libcds.git] / test / include / cds_test / stress_test.h
index dca60f3b56343fbc9fd6046e88b313da5af9fc31..c6f490088beedcf549f11e32cc611be214e534fc 100644 (file)
@@ -45,7 +45,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             auto it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return std::string( pszDefVal ); // param not found -> returns default value
             return it->second;
         }
@@ -54,7 +54,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return atoi( it->second.c_str());
         }
@@ -63,7 +63,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return static_cast<unsigned int>( strtoul( it->second.c_str(), NULL, 10 ));
         }
@@ -72,7 +72,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return strtol( it->second.c_str(), NULL, 10 );
         }
@@ -81,7 +81,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return strtoul( it->second.c_str(), NULL, 10 );
         }
@@ -90,7 +90,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return static_cast<size_t>( strtoul( it->second.c_str(), NULL, 10 ));
         }
@@ -99,7 +99,7 @@ namespace cds_test {
         {
             std::string strParamName( pszParamName );
             cfg_map::const_iterator it = m_Cfg.find( strParamName );
-            if ( it == m_Cfg.end() )
+            if ( it == m_Cfg.end())
                 return defVal; // param not found -> returns default value
             return !( it->second.empty()
                    || it->second == "0"
@@ -115,10 +115,34 @@ namespace cds_test {
         friend class config_file;
     };
 
-    struct property_stream;
+    class property_stream
+    {
+    public:
+        static std::string const& stat_prefix();
+        static void set_stat_prefix( char const* prefix );
+    };
+
+    struct stat_prefix
+    {
+        char const* prefix_;
+
+        stat_prefix()
+            : prefix_( nullptr )
+        {}
+
+        stat_prefix( char const* prefix )
+            : prefix_( prefix )
+        {}
+    };
+
+    static inline property_stream& operator<<( property_stream& s, stat_prefix&& prefix )
+    {
+        s.set_stat_prefix( prefix.prefix_ );
+        return s;
+    }
 
     template <typename T>
-    static inline property_stream& operator <<( property_stream& s, std::pair<char const *, T > prop )
+    static inline property_stream& operator <<( property_stream& s, std::pair<char const*, T > prop )
     {
         std::stringstream ss;
         ss << prop.second;
@@ -131,20 +155,20 @@ namespace cds_test {
     {
         std::stringstream ss;
         ss << prop.second;
-        ::testing::Test::RecordProperty( prop.first.c_str(), ss.str().c_str() );
+        ::testing::Test::RecordProperty( prop.first.c_str(), ss.str().c_str());
         return s;
     }
 
-    static inline property_stream& operator <<( property_stream& s, std::pair<char const *, std::chrono::milliseconds > prop )
+    static inline property_stream& operator <<( property_stream& s, std::pair<char const*, std::chrono::milliseconds > prop )
     {
         std::stringstream ss;
         ss << prop.second.count();
-        ::testing::Test::RecordProperty( prop.first, ss.str().c_str() );
+        ::testing::Test::RecordProperty( prop.first, ss.str().c_str());
         return s;
     }
 
 #define CDSSTRESS_STAT_OUT_( name, val ) std::make_pair( name, val )
-#define CDSSTRESS_STAT_OUT( s, field ) CDSSTRESS_STAT_OUT_( "stat." #field, s.field.get())
+#define CDSSTRESS_STAT_OUT( s, field ) CDSSTRESS_STAT_OUT_( property_stream::stat_prefix() + "." #field, s.field.get())
 
     class stress_fixture : public fixture
     {