diff options
author | Matt Spinler <spinler@us.ibm.com> | 2017-02-28 09:59:53 -0600 |
---|---|---|
committer | Matt Spinler <spinler@us.ibm.com> | 2017-03-14 13:21:34 -0500 |
commit | 597e05c9cdd6c5dc767ec0b811e842bb48bda948 (patch) | |
tree | 2b27dc4a82aa0d0dc7b0f393c9216bd54347d373 | |
parent | 2c05aa76075c29297c23c4c6b5a3a956314eaf6a (diff) | |
download | openpower-proc-control-597e05c9cdd6c5dc767ec0b811e842bb48bda948.tar.gz openpower-proc-control-597e05c9cdd6c5dc767ec0b811e842bb48bda948.zip |
Add gtest for Targeting class
Change-Id: I10d00d56561c52c479052d2e04630cc326091aa0
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 23 | ||||
-rw-r--r-- | test/Makefile.am | 16 | ||||
-rw-r--r-- | test/utest.cpp | 100 |
5 files changed, 143 insertions, 1 deletions
@@ -24,3 +24,6 @@ install-sh ltmain.sh missing stamp-h1 +test-driver +*.log +utest* diff --git a/Makefile.am b/Makefile.am index f1af749..ef50fa1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,3 +10,5 @@ openpower_proc_control_SOURCES = \ openpower_proc_control_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS) -lstdc++fs openpower_proc_control_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS) + +SUBDIRS = test diff --git a/configure.ac b/configure.ac index 7abbefb..b0b9e85 100644 --- a/configure.ac +++ b/configure.ac @@ -16,7 +16,28 @@ AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS]) # Checks for library functions LT_INIT +# Check/set gtest specific functions. +AX_PTHREAD([GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=1"],[GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=0"]) +AC_SUBST(GTEST_CPPFLAGS) +AC_ARG_ENABLE([oe-sdk], + AS_HELP_STRING([--enable-oe-sdk], [Link testcases absolutely against OE SDK so they can be ran within it.]) +) +AC_ARG_VAR(OECORE_TARGET_SYSROOT, + [Path to the OE SDK SYSROOT]) +AS_IF([test "x$enable_oe_sdk" == "xyes"], + AS_IF([test "x$OECORE_TARGET_SYSROOT" == "x"], + AC_MSG_ERROR([OECORE_TARGET_SYSROOT must be set with --enable-oe-sdk]) + ) + AC_MSG_NOTICE([Enabling OE-SDK at $OECORE_TARGET_SYSROOT]) + [ + testcase_flags="-Wl,-rpath,\${OECORE_TARGET_SYSROOT}/lib" + testcase_flags="${testcase_flags} -Wl,-rpath,\${OECORE_TARGET_SYSROOT}/usr/lib" + testcase_flags="${testcase_flags} -Wl,-dynamic-linker,`find \${OECORE_TARGET_SYSROOT}/lib/ld-*.so | sort -r -n | head -n1`" + ] + AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags]) +) + PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],, [AC_MSG_ERROR([Could not find phosphor-logging...openbmc/phosphor-logging package required])]) -AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile test/Makefile]) AC_OUTPUT diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..ce78754 --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,16 @@ +AM_CPPFLAGS = -I$(top_srcdir) + +# Run all 'check' test programs +TESTS = $(check_PROGRAMS) + +# Basic test suite for hostcontrol interfaces +check_PROGRAMS = utest +utest_CPPFLAGS = -Igtest $(GTEST_CPPFLAGS) $(AM_CPPFLAGS) \ + $(PHOSPHOR_LOGGING_CFLAGS) + +utest_CXXFLAGS = $(PTHREAD_CFLAGS) $(PHOSPHOR_LOGGING_CFLAGS) +utest_LDFLAGS = -lgtest_main -lgtest $(PTHREAD_LIBS) $(OESDK_TESTCASE_FLAGS) \ + $(PHOSPHOR_LOGGING_LIBS) -lstdc++fs + +utest_SOURCES = utest.cpp +utest_LDADD = $(top_srcdir)/targeting.cpp diff --git a/test/utest.cpp b/test/utest.cpp new file mode 100644 index 0000000..d91004d --- /dev/null +++ b/test/utest.cpp @@ -0,0 +1,100 @@ +/** + * Copyright © 2017 IBM Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <gtest/gtest.h> +#include <experimental/filesystem> +#include <fstream> +#include <stdlib.h> +#include "targeting.hpp" + +using namespace openpower::targeting; +namespace fs = std::experimental::filesystem; + +constexpr auto masterDir = "/tmp"; + +class TargetingTest : public ::testing::Test +{ + protected: + + virtual void SetUp() + { + char dir[50]; + strcpy(dir, masterDir); + strcat(dir, "/targetingXXXXXX"); + + auto path = mkdtemp(dir); + assert(path != nullptr); + + _directory = path; + } + + virtual void TearDown() + { + fs::remove_all(_directory); + } + + std::string _directory; +}; + + +TEST_F(TargetingTest, CreateTargets) +{ + + //Test that we always create the first Target + { + Targeting targets{masterDir, _directory}; + ASSERT_EQ(targets.size(), 1); + + auto t = targets.begin(); + ASSERT_EQ((*t)->getPos(), 0); + + ASSERT_EQ((*t)->getPath(), masterDir); + } + + + //Test that we can create multiple Targets + { + //make some fake slave entries + std::ofstream(_directory + "/slave@01:00"); + std::ofstream(_directory + "/slave@02:00"); + std::ofstream(_directory + "/slave@03:00"); + std::ofstream(_directory + "/slave@04:00"); + + Targeting targets{masterDir, _directory}; + + ASSERT_EQ(targets.size(), 5); + + int i = 0; + + for (const auto& t : targets) + { + std::ostringstream path; + + ASSERT_EQ(t->getPos(), i); + + if (0 == i) + { + path << masterDir; + } + else + { + path << _directory << "/slave@0" << i << ":00/raw"; + } + + ASSERT_EQ(t->getPath(), path.str()); + i++; + } + } +} |