aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/test/ProfilingTestUtils.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/profiling/test/ProfilingTestUtils.hpp')
-rw-r--r--src/profiling/test/ProfilingTestUtils.hpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/profiling/test/ProfilingTestUtils.hpp b/src/profiling/test/ProfilingTestUtils.hpp
index 323a762918..32db72a19d 100644
--- a/src/profiling/test/ProfilingTestUtils.hpp
+++ b/src/profiling/test/ProfilingTestUtils.hpp
@@ -89,6 +89,46 @@ public:
}
};
+struct LogLevelSwapper
+{
+public:
+ LogLevelSwapper(arm::pipe::LogSeverity severity)
+ {
+ // Set the new log level
+ arm::pipe::ConfigureLogging(true, true, severity);
+ }
+ ~LogLevelSwapper()
+ {
+ // The default log level for unit tests is "Fatal"
+ arm::pipe::ConfigureLogging(true, true, arm::pipe::LogSeverity::Fatal);
+ }
+};
+
+struct StreamRedirector
+{
+public:
+ StreamRedirector(std::ostream& stream, std::streambuf* newStreamBuffer)
+ : m_Stream(stream)
+ , m_BackupBuffer(m_Stream.rdbuf(newStreamBuffer))
+ {}
+
+ ~StreamRedirector() { CancelRedirect(); }
+
+ void CancelRedirect()
+ {
+ // Only cancel the redirect once.
+ if (m_BackupBuffer != nullptr )
+ {
+ m_Stream.rdbuf(m_BackupBuffer);
+ m_BackupBuffer = nullptr;
+ }
+ }
+
+private:
+ std::ostream& m_Stream;
+ std::streambuf* m_BackupBuffer;
+};
+
} // namespace pipe
} // namespace arm