diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2019-07-08 21:09:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-10-02 13:33:54 (GMT) |
commit | c494b2973a1557c3373a2841ba39da6b8d4bdb5a (patch) | |
tree | 09a5508bf005d7518beed699db52c4dbd3a64d36 /Tests/CMakeLib | |
parent | c8f48069430cb286ca593a967e0c3b8e5ea842c4 (diff) | |
download | CMake-c494b2973a1557c3373a2841ba39da6b8d4bdb5a.zip CMake-c494b2973a1557c3373a2841ba39da6b8d4bdb5a.tar.gz CMake-c494b2973a1557c3373a2841ba39da6b8d4bdb5a.tar.bz2 |
CTest: Add cmCTestHardwareAllocator class
Diffstat (limited to 'Tests/CMakeLib')
-rw-r--r-- | Tests/CMakeLib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/CMakeLib/testCTestHardwareAllocator.cxx | 426 |
2 files changed, 427 insertions, 0 deletions
diff --git a/Tests/CMakeLib/CMakeLists.txt b/Tests/CMakeLib/CMakeLists.txt index 901f097..c24b64c 100644 --- a/Tests/CMakeLib/CMakeLists.txt +++ b/Tests/CMakeLib/CMakeLists.txt @@ -8,6 +8,7 @@ include_directories( set(CMakeLib_TESTS testArgumentParser.cxx testCTestProcesses.cxx + testCTestHardwareAllocator.cxx testCTestHardwareSpec.cxx testGeneratedFileStream.cxx testRST.cxx diff --git a/Tests/CMakeLib/testCTestHardwareAllocator.cxx b/Tests/CMakeLib/testCTestHardwareAllocator.cxx new file mode 100644 index 0000000..6f05d03 --- /dev/null +++ b/Tests/CMakeLib/testCTestHardwareAllocator.cxx @@ -0,0 +1,426 @@ +#include <iostream> +#include <map> +#include <string> +#include <vector> + +#include "cmCTestHardwareAllocator.h" +#include "cmCTestHardwareSpec.h" + +static const cmCTestHardwareSpec spec{ { { + /* clang-format off */ + { "gpus", { { "0", 4 }, { "1", 8 }, { "2", 0 }, { "3", 8 } } }, + /* clang-format on */ +} } }; + +bool testInitializeFromHardwareSpec() +{ + bool retval = true; + + cmCTestHardwareAllocator allocator; + allocator.InitializeFromHardwareSpec(spec); + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 0 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.GetResources() != expected) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + return retval; +} + +bool testAllocateResource() +{ + bool retval = true; + + cmCTestHardwareAllocator allocator; + allocator.InitializeFromHardwareSpec(spec); + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected1{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 2 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (!allocator.AllocateResource("gpus", "0", 2)) { + std::cout + << "AllocateResource(\"gpus\", \"0\", 2) returned false, should be " + "true\n"; + retval = false; + } + if (allocator.GetResources() != expected1) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected2{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (!allocator.AllocateResource("gpus", "0", 2)) { + std::cout + << "AllocateResource(\"gpus\", \"0\", 2) returned false, should be " + "true\n"; + retval = false; + } + if (allocator.GetResources() != expected2) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected3{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.AllocateResource("gpus", "0", 1)) { + std::cout + << "AllocateResource(\"gpus\", \"0\", 1) returned true, should be " + "false\n"; + retval = false; + } + if (allocator.GetResources() != expected3) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected4{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 7 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (!allocator.AllocateResource("gpus", "1", 7)) { + std::cout + << "AllocateResource(\"gpus\", \"1\", 7) returned false, should be " + "true\n"; + retval = false; + } + if (allocator.AllocateResource("gpus", "1", 2)) { + std::cout + << "AllocateResource(\"gpus\", \"1\", 2) returned true, should be " + "false\n"; + retval = false; + } + if (allocator.GetResources() != expected4) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected5{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 7 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.AllocateResource("gpus", "2", 1)) { + std::cout + << "AllocateResource(\"gpus\", \"2\", 1) returned true, should be " + "false\n"; + retval = false; + } + if (allocator.GetResources() != expected5) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected6{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 7 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.AllocateResource("gpus", "4", 1)) { + std::cout + << "AllocateResource(\"gpus\", \"4\", 1) returned true, should be " + "false\n"; + retval = false; + } + if (allocator.GetResources() != expected6) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected7{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 4 } }, + { "1", { 8, 7 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.AllocateResource("threads", "0", 1)) { + std::cout + << "AllocateResource(\"threads\", \"0\", 1) returned true, should be" + " false\n"; + retval = false; + } + if (allocator.GetResources() != expected7) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + return retval; +} + +bool testDeallocateResource() +{ + bool retval = true; + + cmCTestHardwareAllocator allocator; + allocator.InitializeFromHardwareSpec(spec); + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected1{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 1 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (!allocator.AllocateResource("gpus", "0", 2)) { + std::cout + << "AllocateResource(\"gpus\", \"0\", 2) returned false, should be " + "true\n"; + retval = false; + } + if (!allocator.DeallocateResource("gpus", "0", 1)) { + std::cout + << "DeallocateResource(\"gpus\", \"0\", 1) returned false, should be" + " true\n"; + retval = false; + } + if (allocator.GetResources() != expected1) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected2{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 1 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.DeallocateResource("gpus", "0", 2)) { + std::cout + << "DeallocateResource(\"gpus\", \"0\", 2) returned true, should be" + " false\n"; + retval = false; + } + if (allocator.GetResources() != expected2) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected3{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 0 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (!allocator.DeallocateResource("gpus", "0", 1)) { + std::cout + << "DeallocateResource(\"gpus\", \"0\", 1) returned false, should be" + " true\n"; + retval = false; + } + if (allocator.GetResources() != expected3) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected4{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 0 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.DeallocateResource("gpus", "0", 1)) { + std::cout + << "DeallocateResource(\"gpus\", \"0\", 1) returned true, should be" + " false\n"; + retval = false; + } + if (allocator.GetResources() != expected4) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected5{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 0 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.DeallocateResource("gpus", "4", 1)) { + std::cout + << "DeallocateResource(\"gpus\", \"4\", 1) returned true, should be" + " false\n"; + retval = false; + } + if (allocator.GetResources() != expected5) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + static const std::map< + std::string, std::map<std::string, cmCTestHardwareAllocator::Resource>> + expected6{ + /* clang-format off */ + { "gpus", { + { "0", { 4, 0 } }, + { "1", { 8, 0 } }, + { "2", { 0, 0 } }, + { "3", { 8, 0 } }, + } }, + /* clang-format on */ + }; + if (allocator.DeallocateResource("threads", "0", 1)) { + std::cout + << "DeallocateResource(\"threads\", \"0\", 1) returned true, should be" + " false\n"; + retval = false; + } + if (allocator.GetResources() != expected6) { + std::cout << "GetResources() did not return expected value\n"; + retval = false; + } + + return retval; +} + +bool testResourceFree() +{ + bool retval = true; + + const cmCTestHardwareAllocator::Resource r1{ 5, 0 }; + if (r1.Free() != 5) { + std::cout << "cmCTestHardwareAllocator::Resource::Free() did not return " + "expected value for { 5, 0 }\n"; + retval = false; + } + + const cmCTestHardwareAllocator::Resource r2{ 3, 2 }; + if (r2.Free() != 1) { + std::cout << "cmCTestHardwareAllocator::Resource::Free() did not return " + "expected value for { 3, 2 }\n"; + retval = false; + } + + const cmCTestHardwareAllocator::Resource r3{ 4, 4 }; + if (r3.Free() != 0) { + std::cout << "cmCTestHardwareAllocator::Resource::Free() did not return " + "expected value for { 4, 4 }\n"; + retval = false; + } + + return retval; +} + +int testCTestHardwareAllocator(int, char** const) +{ + int retval = 0; + + if (!testInitializeFromHardwareSpec()) { + std::cout << "in testInitializeFromHardwareSpec()\n"; + retval = -1; + } + + if (!testAllocateResource()) { + std::cout << "in testAllocateResource()\n"; + retval = -1; + } + + if (!testDeallocateResource()) { + std::cout << "in testDeallocateResource()\n"; + retval = -1; + } + + if (!testResourceFree()) { + std::cout << "in testResourceFree()\n"; + retval = -1; + } + + return retval; +} |