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 /test | |
| 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>
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 16 | ||||
| -rw-r--r-- | test/utest.cpp | 100 |
2 files changed, 116 insertions, 0 deletions
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++; + } + } +} |

