diff options
Diffstat (limited to '')
| -rw-r--r-- | src/burn/test/BurnUnitTest/EmbeddedTest.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp index cac1ba81..7560fe25 100644 --- a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp +++ b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp | |||
| @@ -3,12 +3,14 @@ | |||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | const DWORD TEST_UNKNOWN_MESSAGE_ID = 0xFFFE; | ||
| 6 | const HRESULT S_TEST_SUCCEEDED = 0x3133; | 7 | const HRESULT S_TEST_SUCCEEDED = 0x3133; |
| 7 | const DWORD TEST_EXIT_CODE = 666; | 8 | const DWORD TEST_EXIT_CODE = 666; |
| 8 | 9 | ||
| 9 | struct BUNDLE_RUNNER_CONTEXT | 10 | struct BUNDLE_RUNNER_CONTEXT |
| 10 | { | 11 | { |
| 11 | DWORD dwResult; | 12 | DWORD dwResult; |
| 13 | BURN_PIPE_CONNECTION connection; | ||
| 12 | }; | 14 | }; |
| 13 | 15 | ||
| 14 | 16 | ||
| @@ -68,7 +70,7 @@ namespace Bootstrapper | |||
| 68 | // | 70 | // |
| 69 | // bundle runner setup | 71 | // bundle runner setup |
| 70 | // | 72 | // |
| 71 | hr = EmbeddedRunBundle(L"C:\\ignored\\target.exe", L"\"C:\\ignored\\target.exe\"", NULL, EmbeddedTest_GenericMessageHandler, &bundleRunnerContext, &dwExitCode); | 73 | hr = EmbeddedRunBundle(&bundleRunnerContext.connection, L"C:\\ignored\\target.exe", L"\"C:\\ignored\\target.exe\"", NULL, EmbeddedTest_GenericMessageHandler, &bundleRunnerContext, &dwExitCode); |
| 72 | TestThrowOnFailure(hr, L"Failed to run embedded bundle."); | 74 | TestThrowOnFailure(hr, L"Failed to run embedded bundle."); |
| 73 | 75 | ||
| 74 | // check results | 76 | // check results |
| @@ -146,6 +148,15 @@ static DWORD CALLBACK EmbeddedTest_ThreadProc( | |||
| 146 | hr = PipeChildConnect(pConnection, FALSE); | 148 | hr = PipeChildConnect(pConnection, FALSE); |
| 147 | ExitOnFailure(hr, "Failed to connect to parent bundle runner."); | 149 | ExitOnFailure(hr, "Failed to connect to parent bundle runner."); |
| 148 | 150 | ||
| 151 | // post unknown message | ||
| 152 | hr = PipeSendMessage(pConnection->hPipe, TEST_UNKNOWN_MESSAGE_ID, NULL, 0, NULL, NULL, &dwResult); | ||
| 153 | ExitOnFailure(hr, "Failed to post unknown message to parent bundle runner."); | ||
| 154 | |||
| 155 | if (E_NOTIMPL != dwResult) | ||
| 156 | { | ||
| 157 | ExitWithRootFailure(hr, E_UNEXPECTED, "Unexpected result from unknown message: %d", dwResult); | ||
| 158 | } | ||
| 159 | |||
| 149 | // post known message | 160 | // post known message |
| 150 | hr = ExternalEngineSendEmbeddedError(&engineState, S_TEST_SUCCEEDED, NULL, 0, reinterpret_cast<int*>(&dwResult)); | 161 | hr = ExternalEngineSendEmbeddedError(&engineState, S_TEST_SUCCEEDED, NULL, 0, reinterpret_cast<int*>(&dwResult)); |
| 151 | ExitOnFailure(hr, "Failed to post known message to parent bundle runner."); | 162 | ExitOnFailure(hr, "Failed to post known message to parent bundle runner."); |
| @@ -167,9 +178,19 @@ static int EmbeddedTest_GenericMessageHandler( | |||
| 167 | 178 | ||
| 168 | if (GENERIC_EXECUTE_MESSAGE_ERROR == pMessage->type) | 179 | if (GENERIC_EXECUTE_MESSAGE_ERROR == pMessage->type) |
| 169 | { | 180 | { |
| 181 | // post unknown message | ||
| 182 | HRESULT hr = PipeSendMessage(pContext->connection.hPipe, TEST_UNKNOWN_MESSAGE_ID, NULL, 0, NULL, NULL, &dwResult); | ||
| 183 | ExitOnFailure(hr, "Failed to post unknown message to embedded bundle."); | ||
| 184 | |||
| 185 | if (E_NOTIMPL != dwResult) | ||
| 186 | { | ||
| 187 | ExitWithRootFailure(hr, E_UNEXPECTED, "Unexpected result from unknown message: %d", dwResult); | ||
| 188 | } | ||
| 189 | |||
| 170 | pContext->dwResult = pMessage->error.dwErrorCode; | 190 | pContext->dwResult = pMessage->error.dwErrorCode; |
| 171 | dwResult = TEST_EXIT_CODE; | 191 | dwResult = TEST_EXIT_CODE; |
| 172 | } | 192 | } |
| 173 | 193 | ||
| 194 | LExit: | ||
| 174 | return dwResult; | 195 | return dwResult; |
| 175 | } | 196 | } |
