diff options
author | Stefan Laner <laner@itestra.de> | 2013-08-07 15:36:44 +0200 |
---|---|---|
committer | Stefan Laner <laner@itestra.de> | 2013-08-07 15:36:44 +0200 |
commit | 1261885b117c7cc51258bed0ebde842f69b9feb6 (patch) | |
tree | 3f7e6c70a8744b431f9e4d94f3818b3e893fc711 | |
parent | dd1bca359710c796aeb7f406ce268264226e3294 (diff) | |
download | genivi-common-api-dbus-runtime-1261885b117c7cc51258bed0ebde842f69b9feb6.tar.gz |
Removed DBusBenchmarkingTest
-rw-r--r-- | Makefile.am | 9 | ||||
-rw-r--r-- | src/test/DBusBenchmarkingTest.cpp | 220 |
2 files changed, 1 insertions, 228 deletions
diff --git a/Makefile.am b/Makefile.am index f5e43e1..7a0967e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -117,9 +117,7 @@ check_PROGRAMS = \ DBusVariantOutputStreamTest \ DBusDaemonProxyTest \ DBusCommunicationTest \ - DBusMultipleConnectionTest \ - DBusBenchmarkingTest - + DBusMultipleConnectionTest TESTS = ${check_PROGRAMS} LDADD_FOR_GTEST = libCommonAPI-DBus.la ${GTEST_LIBS} ${LDADD} @@ -160,11 +158,6 @@ DBusVariantOutputStreamTest_CPPFLAGS = ${AM_CPPFLAGS} ${GTEST_CPPFLAGS} DBusVariantOutputStreamTest_CXXFLAGS = ${GTEST_CXXFLAGS} DBusVariantOutputStreamTest_LDADD = ${LDADD_FOR_GTEST} -DBusBenchmarkingTest_SOURCES = src/test/DBusBenchmarkingTest.cpp -DBusBenchmarkingTest_CPPFLAGS = ${AM_CPPFLAGS} ${GTEST_CPPFLAGS} -DBusBenchmarkingTest_CXXFLAGS = ${GTEST_CXXFLAGS} -DBusBenchmarkingTest_LDADD = ${LDADD_FOR_GTEST} - DBusCommunicationTest_SOURCES = \ src/test/DBusCommunicationTest.cpp \ ${TestInterfaceSources} diff --git a/src/test/DBusBenchmarkingTest.cpp b/src/test/DBusBenchmarkingTest.cpp deleted file mode 100644 index ddce610..0000000 --- a/src/test/DBusBenchmarkingTest.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* Copyright (C) 2013 BMW Group - * Author: Manfred Bathelt (manfred.bathelt@bmw.de) - * Author: Juergen Gehring (juergen.gehring@bmw.de) - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <CommonAPI/SerializableStruct.h> -#include <CommonAPI/DBus/DBusInputStream.h> -#include <CommonAPI/DBus/DBusOutputStream.h> - -#include <unordered_map> -#include <bits/functional_hash.h> - -#include <gtest/gtest.h> - -#include <dbus/dbus.h> - -#include <chrono> -#include <cstdint> -#include <vector> -#include <unordered_map> -#include <bits/functional_hash.h> - - -class BenchmarkingTest: public ::testing::Test { - protected: - DBusMessage* libdbusMessage; - DBusMessageIter libdbusMessageWriteIter; - size_t numOfElements; - - void SetUp() { - numOfElements = 2; - libdbusMessage = dbus_message_new_method_call("no.bus.here", "/no/object/here", NULL, "noMethodHere"); - ASSERT_TRUE(libdbusMessage != NULL); - dbus_message_iter_init_append(libdbusMessage, &libdbusMessageWriteIter); - } - - void TearDown() { - dbus_message_unref(libdbusMessage); - } -}; - -template <typename _ArrayElementLibdbusType, typename _ArrayElementCommonApiType> -void prepareLibdbusArray(DBusMessage* libdbusMessage, - const int arrayElementLibdbusType, - const char* arrayElementLibdbusTypeAsString, - const _ArrayElementLibdbusType& arrayInitElementValue, - const uint32_t arrayInitTime, - size_t& libdbusInitElementCount) { - - DBusMessageIter libdbusMessageIter; - DBusMessageIter libdbusMessageContainerIter; - - dbus_message_iter_init_append(libdbusMessage, &libdbusMessageIter); - - dbus_bool_t libdbusSuccess = dbus_message_iter_open_container(&libdbusMessageIter, - DBUS_TYPE_ARRAY, - arrayElementLibdbusTypeAsString, - &libdbusMessageContainerIter); - ASSERT_TRUE(libdbusSuccess); - - - std::chrono::milliseconds libdbusInitTime; - std::chrono::time_point<std::chrono::high_resolution_clock> clockStart = std::chrono::high_resolution_clock::now(); - - do { - for (int i = 0; i < 1000; i++) - dbus_message_iter_append_basic(&libdbusMessageContainerIter, - arrayElementLibdbusType, - &arrayInitElementValue); - - libdbusInitElementCount += 1000; - - libdbusInitTime = std::chrono::duration_cast<std::chrono::milliseconds>( - std::chrono::high_resolution_clock::now() - clockStart); - } while (libdbusInitTime.count() < arrayInitTime); - - libdbusSuccess = dbus_message_iter_close_container(&libdbusMessageIter, &libdbusMessageContainerIter); - ASSERT_TRUE(libdbusSuccess); - - std::cout << "LibdbusInitTime = " << libdbusInitTime.count() << std::endl; - std::cout << "LibdbusInitElementCount = " << libdbusInitElementCount << std::endl; -} - - -template <typename _ArrayElementLibdbusType, typename _ArrayElementCommonApiType> -void measureLibdbusArrayReadTime(DBusMessage* libdbusMessage, - size_t& libdbusInitElementCount, - std::chrono::milliseconds& libdbusArrayReadTime) { - - DBusMessageIter libdbusMessageIter; - DBusMessageIter libdbusMessageContainerIter; - - dbus_bool_t libdbusSuccess; - - libdbusSuccess = dbus_message_iter_init(libdbusMessage, &libdbusMessageIter); - ASSERT_TRUE(libdbusSuccess); - - dbus_message_iter_recurse(&libdbusMessageIter, &libdbusMessageContainerIter); - - size_t libdbusReadElementCount = 0; - std::chrono::time_point<std::chrono::high_resolution_clock> clockStart = std::chrono::high_resolution_clock::now(); - - do { - _ArrayElementLibdbusType libdbusValue; - - dbus_message_iter_get_basic(&libdbusMessageContainerIter, &libdbusValue); - - ++libdbusReadElementCount; - } while (dbus_message_iter_next(&libdbusMessageContainerIter)); - - libdbusArrayReadTime = std::chrono::duration_cast<std::chrono::milliseconds>( - std::chrono::high_resolution_clock::now() - clockStart); - - ASSERT_EQ(libdbusInitElementCount, libdbusReadElementCount); -} - - -template <typename _ArrayElementLibdbusType, typename _ArrayElementCommonApiType> -void measureCommonApiArrayReadTime(DBusMessage* libdbusMessage, - std::chrono::milliseconds& commonArrayApiReadTime, - size_t& libdbusInitElementCount) { - - CommonAPI::DBus::DBusMessage dbusMessage(libdbusMessage); - CommonAPI::DBus::DBusInputStream DBusInputStream(dbusMessage); - std::vector<_ArrayElementCommonApiType> commonApiVector; - - std::chrono::time_point<std::chrono::high_resolution_clock> clockStart = std::chrono::high_resolution_clock::now(); - - DBusInputStream >> commonApiVector; - - commonArrayApiReadTime = std::chrono::duration_cast<std::chrono::milliseconds>( - std::chrono::high_resolution_clock::now() - clockStart); - - ASSERT_EQ(libdbusInitElementCount, commonApiVector.size()); -} - - -template <typename _ArrayElementLibdbusType, typename _ArrayElementCommonApiType> -void measureArrayReadTime( - const int arrayElementLibdbusType, - const char* arrayElementLibdbusTypeAsString, - const _ArrayElementLibdbusType arrayInitElementValue, - const uint32_t arrayInitTime, - std::chrono::milliseconds& libdbusArrayReadTime, - std::chrono::milliseconds& commonArrayApiReadTime) { - - DBusMessage* libdbusMessage; - dbus_bool_t libdbusSuccess; - size_t libdbusInitElementCount = 0; - - libdbusMessage = dbus_message_new_method_call("no.bus.here", "/no/object/here", NULL, "noMethodHere"); - ASSERT_TRUE(libdbusMessage != NULL); - - prepareLibdbusArray<_ArrayElementLibdbusType, _ArrayElementCommonApiType>( - libdbusMessage, - arrayElementLibdbusType, - arrayElementLibdbusTypeAsString, - arrayInitElementValue, - arrayInitTime, - libdbusInitElementCount); - - measureLibdbusArrayReadTime<_ArrayElementLibdbusType, _ArrayElementCommonApiType>( - libdbusMessage, - libdbusInitElementCount, - libdbusArrayReadTime); - - measureCommonApiArrayReadTime<_ArrayElementLibdbusType, _ArrayElementCommonApiType>( - libdbusMessage, - commonArrayApiReadTime, - libdbusInitElementCount); -} - - -TEST_F(BenchmarkingTest, InputStreamReadsIntegerArrayFasterThanLibdbus) { - std::chrono::milliseconds libdbusArrayReadTime; - std::chrono::milliseconds commonApiArrayReadTime; - - measureArrayReadTime<int32_t, int32_t>(DBUS_TYPE_INT32, - DBUS_TYPE_INT32_AS_STRING, - 1234567890, - 1000, - libdbusArrayReadTime, - commonApiArrayReadTime); - - RecordProperty("LibdbusArrayReadTime", libdbusArrayReadTime.count()); - RecordProperty("CommonApiArrayReadTime", commonApiArrayReadTime.count()); - - std::cout << "LibdbusArrayReadTime = " << libdbusArrayReadTime.count() << std::endl; - std::cout << "CommonApiArrayReadTime = " << commonApiArrayReadTime.count() << std::endl; - - ASSERT_LT(commonApiArrayReadTime.count(), libdbusArrayReadTime.count() * 0.30) - << "CommonAPI::DBus::DBusInputStream must be at least 70% faster than libdbus!"; -} - -TEST_F(BenchmarkingTest, InputStreamReadsStringArrayFasterThanLibdbus) { - std::chrono::milliseconds libdbusArrayReadTime; - std::chrono::milliseconds commonApiArrayReadTime; - - measureArrayReadTime<char*, std::string>(DBUS_TYPE_STRING, - DBUS_TYPE_STRING_AS_STRING, - const_cast<char*>("01234567890123456789"), - 1000, - libdbusArrayReadTime, - commonApiArrayReadTime); - - RecordProperty("LibdbusArrayReadTime", libdbusArrayReadTime.count()); - RecordProperty("CommonApiArrayReadTime", commonApiArrayReadTime.count()); - - std::cout << "LibdbusArrayReadTime = " << libdbusArrayReadTime.count() << std::endl; - std::cout << "CommonApiArrayReadTime = " << commonApiArrayReadTime.count() << std::endl; - - ASSERT_LT(commonApiArrayReadTime.count(), libdbusArrayReadTime.count() * 0.30) - << "CommonAPI::DBus::DBusInputStream must be at least 70% faster than libdbus!"; -} - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} |