summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/CMakeLists.txt4
-rw-r--r--src/tests/dlt-test-cpp-extension.cpp118
-rw-r--r--src/tests/dlt-test-preregister-context.c57
3 files changed, 179 insertions, 0 deletions
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 23ce836..76f89cb 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -22,6 +22,7 @@ set(TARGET_LIST ${TARGET_LIST} dlt-test-stress-client)
set(TARGET_LIST ${TARGET_LIST} dlt-test-stress)
set(TARGET_LIST ${TARGET_LIST} dlt-test-fork-handler)
set(TARGET_LIST ${TARGET_LIST} dlt-test-init-free)
+set(TARGET_LIST ${TARGET_LIST} dlt-test-preregister-context)
set(TARGET_LIST ${TARGET_LIST} dlt-test-filetransfer)
install(FILES dlt-test-filetransfer-file dlt-test-filetransfer-image.png
DESTINATION share/dlt-filetransfer)
@@ -33,6 +34,9 @@ endif()
#TODO: Enable again once dlt-test-non-verbose is adapted to non-macro usage
if (NOT WITH_DLT_DISABLE_MACRO)
set(TARGET_LIST ${TARGET_LIST} dlt-test-non-verbose)
+ if(WITH_DLT_CXX11_EXT)
+ set(TARGET_LIST ${TARGET_LIST} dlt-test-cpp-extension)
+ endif()
endif()
if(WITH_DLT_QNX_SYSTEM)
diff --git a/src/tests/dlt-test-cpp-extension.cpp b/src/tests/dlt-test-cpp-extension.cpp
new file mode 100644
index 0000000..eef0d8e
--- /dev/null
+++ b/src/tests/dlt-test-cpp-extension.cpp
@@ -0,0 +1,118 @@
+/*
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2015 Intel Corporation
+ *
+ * This file is part of GENIVI Project DLT - Diagnostic Log and Trace.
+ *
+ * This Source Code Form is subject to the terms of the
+ * Mozilla Public License (MPL), 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/.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+/*!
+ * \author Stefan Vacek <stefan.vacek@intel.com> Intel Corporation
+ *
+ * \copyright Copyright © 2015 Intel Corporation. \n
+ * License MPL-2.0: Mozilla Public License version 2.0 http://mozilla.org/MPL/2.0/.
+ *
+ * \file dlt-test-cpp-extension.cpp
+ */
+
+#include "dlt_cpp_extension.hpp"
+#include <stdio.h>
+#include <string.h>
+#include "dlt_user_macros.h"
+
+struct MyStruct
+{
+ int64_t uuid;
+ int32_t interfaceId;
+ int32_t registrationState;
+};
+
+template<>
+inline int logToDlt(DltContextData &log, MyStruct const &value)
+{
+ int result = 0;
+
+ result += dlt_user_log_write_string(&log, "(");
+ result += logToDlt(log, value.uuid);
+ result += dlt_user_log_write_string(&log, ",");
+ result += logToDlt(log, value.interfaceId);
+ result += dlt_user_log_write_string(&log, ",");
+ result += logToDlt(log, value.registrationState);
+ result += dlt_user_log_write_string(&log, ")");
+
+ if (result != 0)
+ result = -1;
+
+ return result;
+}
+
+/**
+ * Sample code to show usage of the cpp-extension
+ * mainly the variadic templates
+ */
+int main()
+{
+ if (dlt_register_app("TCPP", "Test cpp extension") < 0) {
+ printf("Failed to register application\n");
+ return -1;
+ }
+
+ DltContext ctx;
+
+ if (dlt_register_context_ll_ts(&ctx, "TCPP", "Test cpp extension", DLT_LOG_INFO, DLT_TRACE_STATUS_OFF) < 0) {
+ printf("Failed to register context\n");
+ return -1;
+ }
+
+ dlt_enable_local_print();
+ dlt_verbose_mode();
+
+ DLT_LOG(ctx, DLT_LOG_WARN, DLT_STRING("a message")); /* the classic way to go */
+
+ int an_int = 42;
+ float a_float = 22.7;
+ DLT_LOG_FCN_CXX(ctx, DLT_LOG_WARN, "Testing DLT_LOG_CXX_FCN", an_int, a_float);
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, 1.0, 65);
+
+ /* Example for logging user-defined types */
+ MyStruct myData = { 1u, 2u, 3u };
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "MyStruct myData", myData);
+
+ char *non_const_string = (char *)malloc(17);
+ memcpy(non_const_string, "non_const_string", 16);
+ non_const_string[16] = 0;
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "char *", non_const_string);
+
+ std::string aString = "std::string";
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "std::string", aString);
+
+ std::vector<int> intVector;
+ intVector.push_back(0);
+ intVector.push_back(1);
+ intVector.push_back(2);
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "vector", intVector);
+
+ std::vector<double> doubleList;
+ doubleList.push_back(10.);
+ doubleList.push_back(11.);
+ doubleList.push_back(12.);
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "list", doubleList);
+
+ std::map<const char *, int> testMap;
+ testMap["apple"] = 100;
+ testMap["plum"] = 200;
+ testMap["orange"] = 300;
+ DLT_LOG_CXX(ctx, DLT_LOG_WARN, "map", testMap);
+
+ dlt_unregister_context(&ctx);
+ dlt_unregister_app();
+
+ return 0;
+}
diff --git a/src/tests/dlt-test-preregister-context.c b/src/tests/dlt-test-preregister-context.c
new file mode 100644
index 0000000..caa77f0
--- /dev/null
+++ b/src/tests/dlt-test-preregister-context.c
@@ -0,0 +1,57 @@
+/*
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2015 Intel Corporation
+ *
+ * This file is part of GENIVI Project DLT - Diagnostic Log and Trace.
+ *
+ * This Source Code Form is subject to the terms of the
+ * Mozilla Public License (MPL), 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/.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+/*!
+ * \author Stefan Vacek <stefan.vacek@intel.com> Intel Corporation
+ *
+ * \copyright Copyright © 2015 Intel Corporation. \n
+ * License MPL-2.0: Mozilla Public License version 2.0 http://mozilla.org/MPL/2.0/.
+ *
+ * \file dlt-test-preregister-context.c
+ */
+
+#include <unistd.h> /* for fork() */
+
+#include "dlt.h"
+#include "dlt_user_macros.h"
+
+/**
+ * @brief sample code for using pre-registered contexts
+ */
+int main()
+{
+ DltContext mainContext;
+ struct timespec ts;
+ ts.tv_sec = 0;
+ ts.tv_nsec = 200000 * 1000;
+
+ DLT_REGISTER_CONTEXT(mainContext, "CTXP", "main context");
+
+ DLT_LOG(mainContext, DLT_LOG_WARN, DLT_STRING("First message before app registered"));
+ nanosleep(&ts, NULL);
+
+ DLT_LOG(mainContext, DLT_LOG_WARN, DLT_STRING("Second message before app registered"));
+ nanosleep(&ts, NULL);
+
+ DLT_REGISTER_APP("PRNT", "Sample pre-register application");
+
+ DLT_LOG(mainContext, DLT_LOG_WARN, DLT_STRING("First message after app registered"));
+ nanosleep(&ts, NULL);
+
+ DLT_UNREGISTER_APP()
+ ;
+
+ return 0;
+}