Skip to content

Commit d6b03cc

Browse files
committed
#3: tests: parameterize on comm type
1 parent 8c45ae4 commit d6b03cc

File tree

2 files changed

+87
-9
lines changed

2 files changed

+87
-9
lines changed

tests/unit/comm/test_dummy.cc

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
//@HEADER
3+
// *****************************************************************************
4+
//
5+
// test_dummy.h
6+
// DARMA/vt-lb => Virtual Transport/Load Balancers
7+
//
8+
// Copyright 2019-2024 National Technology & Engineering Solutions of Sandia, LLC
9+
// (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.
10+
// Government retains certain rights in this software.
11+
//
12+
// Redistribution and use in source and binary forms, with or without
13+
// modification, are permitted provided that the following conditions are met:
14+
//
15+
// * Redistributions of source code must retain the above copyright notice,
16+
// this list of conditions and the following disclaimer.
17+
//
18+
// * Redistributions in binary form must reproduce the above copyright notice,
19+
// this list of conditions and the following disclaimer in the documentation
20+
// and/or other materials provided with the distribution.
21+
//
22+
// * Neither the name of the copyright holder nor the names of its
23+
// contributors may be used to endorse or promote products derived from this
24+
// software without specific prior written permission.
25+
//
26+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27+
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28+
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29+
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30+
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31+
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32+
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33+
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34+
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35+
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36+
// POSSIBILITY OF SUCH DAMAGE.
37+
//
38+
// Questions? Contact [email protected]
39+
//
40+
// *****************************************************************************
41+
//@HEADER
42+
*/
43+
44+
#include <gtest/gtest.h>
45+
46+
#include "test_parallel_harness.h"
47+
#include "test_helpers.h"
48+
49+
namespace vt_lb { namespace tests { namespace unit {
50+
51+
struct TestDummyVTOnly : TestParallelHarness<comm::CommVT> {
52+
};
53+
54+
TEST_F(TestDummyVTOnly, test_dummy) {
55+
auto const my_rank = comm.getRank();
56+
EXPECT_GE( my_rank, 0 );
57+
}
58+
59+
template <comm::Communicator CommType>
60+
struct TestDummyAnyComm : TestParallelHarness<CommType> {
61+
};
62+
63+
TYPED_TEST_SUITE(TestDummyAnyComm, CommTypesForTesting, CommNameGenerator);
64+
65+
TYPED_TEST(TestDummyAnyComm, test_dummy) {
66+
auto const my_rank = this->comm.getRank();
67+
EXPECT_GE( my_rank, 0 );
68+
};
69+
70+
}}} // end namespace vt_lb::tests::unit

tests/unit/test_parallel_harness.h

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,16 @@
5050
#include "test_config.h"
5151
#include "test_harness.h"
5252

53-
#include <vt-lb/comm/vt/comm_vt.h>
53+
#include <vt-lb/comm/comm_traits.h>
5454
#include <vt-lb/comm/MPI/comm_mpi.h>
55+
#include <vt-lb/comm/vt/comm_vt.h>
5556

5657
namespace vt_lb { namespace tests { namespace unit {
5758

5859
extern int test_argc;
5960
extern char** test_argv;
6061

61-
using CommType = vt_lb::comm::CommVT;
62-
//using CommType = vt_lb::comm::CommMPI;
63-
64-
template <typename TestBase>
62+
template <typename TestBase, comm::Communicator CommType>
6563
struct TestParallelHarnessAny : TestHarnessAny<TestBase> {
6664
virtual void SetUp() override {
6765
TestHarnessAny<TestBase>::SetUp();
@@ -164,14 +162,24 @@ struct TestParallelHarnessAny : TestHarnessAny<TestBase> {
164162
std::vector<char*> additional_args_;
165163
};
166164

167-
using TestParallelHarness = TestParallelHarnessAny<testing::Test>;
165+
template <comm::Communicator CommType>
166+
using TestParallelHarness = TestParallelHarnessAny<testing::Test, CommType>;
168167

169-
template <typename ParamT>
168+
template <typename ParamT, comm::Communicator CommType>
170169
using TestParallelHarnessParam = TestParallelHarnessAny<
171-
testing::TestWithParam<ParamT>
170+
testing::TestWithParam<ParamT>, CommType
172171
>;
173172

174-
using TestParameterHarnessNode = TestParallelHarnessParam<vt::NodeType>;
173+
struct CommNameGenerator {
174+
template <comm::Communicator CommType>
175+
static std::string GetName(int) {
176+
if constexpr (std::is_same_v<CommType, comm::CommMPI>) return "CommMPI";
177+
if constexpr (std::is_same_v<CommType, comm::CommVT>) return "CommVT";
178+
return "Unrecognized";
179+
}
180+
};
181+
182+
using CommTypesForTesting = ::testing::Types<comm::CommMPI, comm::CommVT>;
175183

176184
}}} // end namespace vt_lb::tests::unit
177185

0 commit comments

Comments
 (0)