diff --git a/.pipelines/test-stage.yml b/.pipelines/test-stage.yml
index 2baf6df7f..c6143434e 100644
--- a/.pipelines/test-stage.yml
+++ b/.pipelines/test-stage.yml
@@ -12,6 +12,7 @@ parameters:
default:
- wsl1
- wsl2
+ - wsla
- name: test_images
type: object
diff --git a/cloudtest/CMakeLists.txt b/cloudtest/CMakeLists.txt
index 1767ab816..a44437e06 100644
--- a/cloudtest/CMakeLists.txt
+++ b/cloudtest/CMakeLists.txt
@@ -33,7 +33,18 @@ function(add_test_group image version)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestGroup.xml.in ${DIR}/TestGroup.xml)
endfunction()
+function(add_wsla_test_group image)
+ set(version "a")
+ set(DIR ${OUT}/${image}-wsla)
+
+ file(MAKE_DIRECTORY ${DIR})
+
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestMap.xml.in ${DIR}/TestMap.xml)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestGroup-wsla.xml.in ${DIR}/TestGroup.xml)
+endfunction()
+
foreach(image ${CLOUDTEST_IMAGES})
add_test_group("${image}" "1")
add_test_group("${image}" "2")
+ add_wsla_test_group("${image}")
endforeach()
diff --git a/cloudtest/TestGroup-wsla.xml.in b/cloudtest/TestGroup-wsla.xml.in
new file mode 100644
index 000000000..bc8ed47f5
--- /dev/null
+++ b/cloudtest/TestGroup-wsla.xml.in
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cloudtest/TestGroup.xml.in b/cloudtest/TestGroup.xml.in
index 1554e9cda..505922dae 100644
--- a/cloudtest/TestGroup.xml.in
+++ b/cloudtest/TestGroup.xml.in
@@ -22,6 +22,6 @@
-
+
diff --git a/test/windows/Common.cpp b/test/windows/Common.cpp
index 58e7a3f7e..b7f2c5128 100644
--- a/test/windows/Common.cpp
+++ b/test/windows/Common.cpp
@@ -2733,7 +2733,7 @@ class ReadHandleWithTargetValue : public wsl::windows::common::relay::ReadHandle
NON_MOVABLE(ReadHandleWithTargetValue);
ReadHandleWithTargetValue(wsl::windows::common::relay::HandleWrapper&& MovedHandle, std::string_view targetValue) :
- ReadHandle(std::move(MovedHandle), [&](const auto& buffer) { m_readBuffer.append(buffer.data(), buffer.size()); }),
+ ReadHandle(std::move(MovedHandle), [this](const auto& buffer) { m_readBuffer.append(buffer.data(), buffer.size()); }),
m_targetValue(targetValue)
{
}
diff --git a/test/windows/Common.h b/test/windows/Common.h
index 98d447db8..fdbfb2e04 100644
--- a/test/windows/Common.h
+++ b/test/windows/Common.h
@@ -95,21 +95,30 @@ using namespace std::chrono_literals;
return; \
}
+#define WSL_TEST_CLASS_PROPERTIES \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"LxssManager.dll") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"LxssManagerProxyStub.dll") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslclient.dll") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslservice.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"WslServiceProxyStub.dll") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslhost.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslrelay.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslconfig.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wsl.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslg.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"msrdc.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"msal.wsl.proxy.exe") \
+ TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslasession.exe")
+
#define WSL_TEST_CLASS(_name) \
BEGIN_TEST_CLASS(_name) \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"LxssManager.dll") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"LxssManagerProxyStub.dll") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslclient.dll") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslservice.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"WslServiceProxyStub.dll") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslhost.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslrelay.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslconfig.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wsl.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslg.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"msrdc.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"msal.wsl.proxy.exe") \
- TEST_CLASS_PROPERTY(L"BinaryUnderTest", L"wslasession.exe") \
+ WSL_TEST_CLASS_PROPERTIES \
+ END_TEST_CLASS()
+
+#define WSLA_TEST_CLASS(_name) \
+ BEGIN_TEST_CLASS(_name) \
+ WSL_TEST_CLASS_PROPERTIES \
+ TEST_CLASS_PROPERTY(L"TestCategory", L"WSLA") \
END_TEST_CLASS()
//
diff --git a/test/windows/WSLATests.cpp b/test/windows/WSLATests.cpp
index f245bd753..0cb5a2415 100644
--- a/test/windows/WSLATests.cpp
+++ b/test/windows/WSLATests.cpp
@@ -34,9 +34,9 @@ extern bool g_fastTestRun;
class WSLATests
{
- WSL_TEST_CLASS(WSLATests)
+ WSLA_TEST_CLASS(WSLATests)
- wil::unique_couninitialize_call m_coinit = wil::CoInitializeEx();
+ wil::unique_mta_usage_cookie m_mtaCookie;
WSADATA m_wsadata;
std::filesystem::path m_storagePath;
WSLASessionSettings m_defaultSessionSettings{};
@@ -58,6 +58,7 @@ class WSLATests
TEST_CLASS_SETUP(TestClassSetup)
{
+ THROW_IF_FAILED(CoIncrementMTAUsage(&m_mtaCookie));
THROW_IF_WIN32_ERROR(WSAStartup(MAKEWORD(2, 2), &m_wsadata));
// The WSLC SDK tests use this same storage to reduce pull overhead.
diff --git a/test/windows/WslcSdkTests.cpp b/test/windows/WslcSdkTests.cpp
index 9906fbe09..adf18a92f 100644
--- a/test/windows/WslcSdkTests.cpp
+++ b/test/windows/WslcSdkTests.cpp
@@ -163,9 +163,9 @@ ProcessOutput RunContainerAndCapture(
class WslcSdkTests
{
- WSL_TEST_CLASS(WslcSdkTests)
+ WSLA_TEST_CLASS(WslcSdkTests)
- wil::unique_couninitialize_call m_coinit = wil::CoInitializeEx();
+ wil::unique_mta_usage_cookie m_mtaCookie;
WSADATA m_wsadata;
std::filesystem::path m_storagePath;
WslcSession m_defaultSession = nullptr;
@@ -179,6 +179,7 @@ class WslcSdkTests
TEST_CLASS_SETUP(TestClassSetup)
{
+ THROW_IF_FAILED(CoIncrementMTAUsage(&m_mtaCookie));
THROW_IF_WIN32_ERROR(WSAStartup(MAKEWORD(2, 2), &m_wsadata));
// Use the same storage path as WSLA runtime tests to reduce pull overhead.
diff --git a/test/windows/wslc/WSLCCLIArgumentUnitTests.cpp b/test/windows/wslc/WSLCCLIArgumentUnitTests.cpp
index 8e3fdcc8b..15a4b0bb4 100644
--- a/test/windows/wslc/WSLCCLIArgumentUnitTests.cpp
+++ b/test/windows/wslc/WSLCCLIArgumentUnitTests.cpp
@@ -33,7 +33,7 @@ using namespace WEX::TestExecution;
namespace WSLCCLIArgumentUnitTests {
class WSLCCLIArgumentUnitTests
{
- WSL_TEST_CLASS(WSLCCLIArgumentUnitTests)
+ WSLA_TEST_CLASS(WSLCCLIArgumentUnitTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/WSLCCLICommandUnitTests.cpp b/test/windows/wslc/WSLCCLICommandUnitTests.cpp
index 7abbdeaff..2a3c72ae2 100644
--- a/test/windows/wslc/WSLCCLICommandUnitTests.cpp
+++ b/test/windows/wslc/WSLCCLICommandUnitTests.cpp
@@ -30,7 +30,7 @@ using namespace WEX::TestExecution;
namespace WSLCCLICommandUnitTests {
class WSLCCLICommandUnitTests
{
- WSL_TEST_CLASS(WSLCCLICommandUnitTests)
+ WSLA_TEST_CLASS(WSLCCLICommandUnitTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/WSLCCLIExecutionUnitTests.cpp b/test/windows/wslc/WSLCCLIExecutionUnitTests.cpp
index bc1032638..2c7fec100 100644
--- a/test/windows/wslc/WSLCCLIExecutionUnitTests.cpp
+++ b/test/windows/wslc/WSLCCLIExecutionUnitTests.cpp
@@ -38,7 +38,7 @@ struct CommandLineTestCase
class WSLCCLIExecutionUnitTests
{
- WSL_TEST_CLASS(WSLCCLIExecutionUnitTests)
+ WSLA_TEST_CLASS(WSLCCLIExecutionUnitTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/WSLCCLIParserUnitTests.cpp b/test/windows/wslc/WSLCCLIParserUnitTests.cpp
index 55fed31ae..6cf550070 100644
--- a/test/windows/wslc/WSLCCLIParserUnitTests.cpp
+++ b/test/windows/wslc/WSLCCLIParserUnitTests.cpp
@@ -34,7 +34,7 @@ namespace WSLCCLIParserUnitTests {
class WSLCCLIParserUnitTests
{
- WSL_TEST_CLASS(WSLCCLIParserUnitTests)
+ WSLA_TEST_CLASS(WSLCCLIParserUnitTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EContainerCreateTests.cpp b/test/windows/wslc/e2e/WSLCE2EContainerCreateTests.cpp
index aa5405978..e66e4c9d0 100644
--- a/test/windows/wslc/e2e/WSLCE2EContainerCreateTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EContainerCreateTests.cpp
@@ -20,7 +20,7 @@ namespace WSLCE2ETests {
class WSLCE2EContainerCreateTests
{
- WSL_TEST_CLASS(WSLCE2EContainerCreateTests)
+ WSLA_TEST_CLASS(WSLCE2EContainerCreateTests)
TEST_CLASS_SETUP(ClassSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EContainerTests.cpp b/test/windows/wslc/e2e/WSLCE2EContainerTests.cpp
index 68cdb706d..03e8869b4 100644
--- a/test/windows/wslc/e2e/WSLCE2EContainerTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EContainerTests.cpp
@@ -20,7 +20,7 @@ namespace WSLCE2ETests {
class WSLCE2EContainerTests
{
- WSL_TEST_CLASS(WSLCE2EContainerTests)
+ WSLA_TEST_CLASS(WSLCE2EContainerTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp b/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
index 8a1d4ea3e..fc6b621aa 100644
--- a/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
@@ -20,7 +20,7 @@ namespace WSLCE2ETests {
class WSLCE2EGlobalTests
{
- WSL_TEST_CLASS(WSLCE2EGlobalTests)
+ WSLA_TEST_CLASS(WSLCE2EGlobalTests)
TEST_CLASS_SETUP(TestClassSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EImageBuildTests.cpp b/test/windows/wslc/e2e/WSLCE2EImageBuildTests.cpp
index 5d23c1ddc..e3bafbeba 100644
--- a/test/windows/wslc/e2e/WSLCE2EImageBuildTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EImageBuildTests.cpp
@@ -21,7 +21,7 @@ namespace WSLCE2ETests {
class WSLCE2EImageBuildTests
{
- WSL_TEST_CLASS(WSLCE2EImageBuildTests)
+ WSLA_TEST_CLASS(WSLCE2EImageBuildTests)
TEST_CLASS_SETUP(ClassSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EImageDeleteTests.cpp b/test/windows/wslc/e2e/WSLCE2EImageDeleteTests.cpp
index 52955691e..7a5264de8 100644
--- a/test/windows/wslc/e2e/WSLCE2EImageDeleteTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EImageDeleteTests.cpp
@@ -20,7 +20,7 @@ namespace WSLCE2ETests {
class WSLCE2EImageDeleteTests
{
- WSL_TEST_CLASS(WSLCE2EImageDeleteTests)
+ WSLA_TEST_CLASS(WSLCE2EImageDeleteTests)
TEST_METHOD_SETUP(MethodSetup)
{
diff --git a/test/windows/wslc/e2e/WSLCE2EImageInspectTests.cpp b/test/windows/wslc/e2e/WSLCE2EImageInspectTests.cpp
index c78537b92..bcb60fe02 100644
--- a/test/windows/wslc/e2e/WSLCE2EImageInspectTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EImageInspectTests.cpp
@@ -21,7 +21,7 @@ namespace WSLCE2ETests {
class WSLCE2EImageInspectTests
{
- WSL_TEST_CLASS(WSLCE2EImageInspectTests)
+ WSLA_TEST_CLASS(WSLCE2EImageInspectTests)
TEST_CLASS_SETUP(ClassSetup)
{