// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #include "TestContext.hpp" #include #include #include #include TEST_CASE("escapeSymbolName escapes bad characters", "[utils]") { CHECK(rocRoller::escapeSymbolName("goodKernelName") == "goodKernelName"); CHECK(rocRoller::escapeSymbolName("good__kernel__name") == "good__kernel__name"); CHECK(rocRoller::escapeSymbolName("my bad kernel name") == "my_bad_kernel_name"); CHECK(rocRoller::escapeSymbolName("My Bad Kernel Name") == "My_Bad_Kernel_Name"); CHECK(rocRoller::escapeSymbolName("my bad kernel name: and more 'bad', (characters)") == "my_bad_kernel_name_and_more_bad_characters"); CHECK(rocRoller::escapeSymbolName("my bad kernel name: xnack+") == "my_bad_kernel_name_xnackp"); CHECK(rocRoller::escapeSymbolName("my bad kernel name: xnack-") == "my_bad_kernel_name_xnackm"); CHECK(rocRoller::escapeSymbolName("my _bad_ kernel name_") == "my__bad__kernel_name_"); CHECK(rocRoller::escapeSymbolName("") == "_"); } TEST_CASE("TestContext::EscapeKernelName escapes bad characters", "[meta-test][infrastructure]") { CHECK(TestContext::EscapeKernelName("goodKernelName") == "goodKernelName"); CHECK(TestContext::EscapeKernelName("good__kernel__name") == "good__kernel__name"); CHECK(TestContext::EscapeKernelName("my bad kernel name") == "my_bad_kernel_name"); CHECK(TestContext::EscapeKernelName("My Bad Kernel Name") == "My_Bad_Kernel_Name"); CHECK(TestContext::EscapeKernelName("my bad kernel name: and more 'bad', (characters)") == "my_bad_kernel_name_and_more_bad_characters"); CHECK(TestContext::EscapeKernelName("my bad kernel name: xnack+") == "my_bad_kernel_name_xnackp"); CHECK(TestContext::EscapeKernelName("my bad kernel name: xnack-") == "my_bad_kernel_name_xnackm"); CHECK(TestContext::EscapeKernelName("my _bad_ kernel name_") == "my__bad__kernel_name_"); CHECK(TestContext::EscapeKernelName("") == "_"); } TEST_CASE("TestContext::KernelName includes test name", "[meta-test][infrastructure]") { rocRoller::GPUArchitectureTarget target = {rocRoller::GPUArchitectureGFX::GFX90A, {.xnack = true}}; CHECK(TestContext::KernelName("my kernel", 5, target) == "TestContext_KernelName_includes_test_name_my_kernel_5_gfx90a_xnackp"); } TEST_CASE("TestContext::ForTestDevice gives a usable GPU.", "[meta-test][infrastructure][gpu]") { using namespace Catch::Matchers; auto context = TestContext::ForTestDevice(); REQUIRE(context.get() != nullptr); auto kernelName = context->kernel()->kernelName(); CHECK_THAT(kernelName, StartsWith("TestContext")); CHECK_THAT(kernelName, ContainsSubstring("usable")); CHECK(context->hipDeviceIndex() >= 0); } TEST_CASE("TestContext::ForTarget does not give a usable GPU.", "[meta-test][infrastructure]") { using namespace Catch::Matchers; auto context = TestContext::ForTarget({rocRoller::GPUArchitectureGFX::GFX942}); REQUIRE(context.get() != nullptr); auto kernelName = context->kernel()->kernelName(); CHECK_THAT(kernelName, StartsWith("TestContext")); CHECK_THAT(kernelName, ContainsSubstring("does_not")); CHECK_THAT(kernelName, ContainsSubstring("gfx942")); CHECK(context->hipDeviceIndex() == -1); }