summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Spinler <spinler@us.ibm.com>2017-02-28 09:59:53 -0600
committerMatt Spinler <spinler@us.ibm.com>2017-03-14 13:21:34 -0500
commit597e05c9cdd6c5dc767ec0b811e842bb48bda948 (patch)
tree2b27dc4a82aa0d0dc7b0f393c9216bd54347d373
parent2c05aa76075c29297c23c4c6b5a3a956314eaf6a (diff)
downloadopenpower-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--.gitignore3
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac23
-rw-r--r--test/Makefile.am16
-rw-r--r--test/utest.cpp100
5 files changed, 143 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 757923d..3cfe4c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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++;
+ }
+ }
+}
OpenPOWER on IntegriCloud