Repository: geode-native Updated Branches: refs/heads/develop 89f11dfea -> 1365aade1
GEODE-2877: Call .NET IAuthInitialize through delegates. Also fixes path issues with .NET integration tests. Project: http://git-wip-us.apache.org/repos/asf/geode-native/repo Commit: http://git-wip-us.apache.org/repos/asf/geode-native/commit/1365aade Tree: http://git-wip-us.apache.org/repos/asf/geode-native/tree/1365aade Diff: http://git-wip-us.apache.org/repos/asf/geode-native/diff/1365aade Branch: refs/heads/develop Commit: 1365aade1a6a6467b23ecdf39a52b2c7f893cb22 Parents: 89f11df Author: Jacob Barrett <[email protected]> Authored: Wed May 3 22:58:13 2017 +0000 Committer: Jacob Barrett <[email protected]> Committed: Fri May 5 08:04:49 2017 -0700 ---------------------------------------------------------------------- src/clicache/integration-test/CMakeLists.txt | 16 +++++++++++++- src/clicache/integration-test/test.bat.in | 23 +++++++++----------- src/clicache/src/IAuthInitialize.hpp | 2 ++ src/clicache/src/impl/ManagedAuthInitialize.cpp | 4 ++-- src/clicache/src/impl/ManagedAuthInitialize.hpp | 9 +++++++- src/tests/cli/FwkClient/ClientComm.cs | 9 +++++++- 6 files changed, 45 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/clicache/integration-test/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/src/clicache/integration-test/CMakeLists.txt b/src/clicache/integration-test/CMakeLists.txt index 8a74daa..e054cb5 100644 --- a/src/clicache/integration-test/CMakeLists.txt +++ b/src/clicache/integration-test/CMakeLists.txt @@ -49,6 +49,20 @@ endforeach() enable_testing() +# Function to resolve both config and generate stage variables. +macro(generate_config INPUT TEMP OUTPUT) + configure_file(${INPUT} ${TEMP}) + file(GENERATE OUTPUT ${OUTPUT} + INPUT ${TEMP} + CONDITION 1 + ) +endmacro() + +foreach( lib ssl xerces-c sqlite ) + get_target_property(runtime_path ${lib} INTERFACE_RUNTIME_DIR) + set(PATH ${PATH} ${runtime_path}) +endforeach() + set (TEST_SCRIPT_SUFFIX .bat) file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cs") @@ -72,7 +86,7 @@ foreach(FILE ${SOURCES}) # Get the test class (NewAPI tests have N in the file name but not test class name) string(REGEX REPLACE "N$" "" TESTCLASS ${TEST}) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test.bat.in ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${TEST}${TEST_SCRIPT_SUFFIX}) + generate_config(${CMAKE_CURRENT_SOURCE_DIR}/test.bat.in ${CMAKE_CURRENT_BINARY_DIR}/.${TEST}.bat.in ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${TEST}${TEST_SCRIPT_SUFFIX}) set(TEST_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${TEST}${TEST_SCRIPT_SUFFIX}) add_test(NAME ${TEST} COMMAND ${TEST_COMMAND} http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/clicache/integration-test/test.bat.in ---------------------------------------------------------------------- diff --git a/src/clicache/integration-test/test.bat.in b/src/clicache/integration-test/test.bat.in index 818abca..7562837 100644 --- a/src/clicache/integration-test/test.bat.in +++ b/src/clicache/integration-test/test.bat.in @@ -16,18 +16,16 @@ rem See the License for the specific language governing permissions and rem limitations under the License. setlocal -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:apache-geode> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:framework> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:testobject> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:SqLiteImpl> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:cryptoImpl> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:DHImpl> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:securityImpl> -rem set PATH=%PATH%;$<TARGET_LINKER_FILE_DIR:unit_test_callbacks> -rem set PATH=%PATH%;${DEPENDENCIES_openssl_DIR}/bin -rem set PATH=%PATH%;${DEPENDENCIES_sqlite_DIR}/bin -rem set PATH=%PATH%;${DEPENDENCIES_ACE_DIR}/lib -rem set PATH=%PATH%;${DEPENDENCIES_libxml2_DIR}/bin + +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:apache-geode>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:framework>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:testobject>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:SqLiteImpl>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:cryptoImpl>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:DHImpl>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:securityImpl>>;%PATH% +set PATH=$<SHELL_PATH:$<TARGET_LINKER_FILE_DIR:PkcsWrapper>>;%PATH% +set PATH=$<JOIN:$<SHELL_PATH:${PATH}>,;>;%PATH% set PATH=c:\Program Files (x86)\Nunit 2.6.4\bin;%PATH% @@ -58,7 +56,6 @@ if %errorlevel% neq 0 exit /b %errorlevel% rem In Windows, pipes to tee return tee's exit code instead of executable's rem exit code. As a workaround we write exit codes to files. -rem ($<TARGET_FILE:${TEST}> && echo 0 >${TEST}.errorlevel || echo 1 >${TEST}.errorlevel) | tee %LOG% (${NUNIT_CONSOLE} /run:${NAMESPACE}.${TESTCLASS} ..\..\${CMAKE_BUILD_TYPE}\UnitTests.dll 2>&1 && echo 0 >${TEST}.errorlevel || echo 1 >${TEST}.errorlevel) | tee %LOG% set /p errorlevel= <${TEST}.errorlevel http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/clicache/src/IAuthInitialize.hpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/IAuthInitialize.hpp b/src/clicache/src/IAuthInitialize.hpp index c1e9c47..1b7decc 100644 --- a/src/clicache/src/IAuthInitialize.hpp +++ b/src/clicache/src/IAuthInitialize.hpp @@ -76,6 +76,8 @@ namespace Apache /// </summary> void Close(); + delegate Properties<String^, Object^>^ GetCredentialsDelegate(Properties<String^, String^>^ props, String^ server); + delegate void CloseDelegate(); }; } // namespace Client } // namespace Geode http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/clicache/src/impl/ManagedAuthInitialize.cpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/impl/ManagedAuthInitialize.cpp b/src/clicache/src/impl/ManagedAuthInitialize.cpp index 0e022cd..69b1a62 100644 --- a/src/clicache/src/impl/ManagedAuthInitialize.cpp +++ b/src/clicache/src/impl/ManagedAuthInitialize.cpp @@ -178,7 +178,7 @@ namespace apache Apache::Geode::Client::Properties<String^, String^>::Create<String^, String^>(securityprops.ptr()); String^ mg_server = Apache::Geode::Client::ManagedString::Get(server); - return PropertiesPtr(m_managedptr->GetCredentials(mprops, mg_server)->NativePtr()); + return PropertiesPtr(m_getCredentials->Invoke(mprops, mg_server)->NativePtr()); } catch (Apache::Geode::Client::GeodeException^ ex) { ex->ThrowNative(); @@ -192,7 +192,7 @@ namespace apache void ManagedAuthInitializeGeneric::close() { try { - m_managedptr->Close(); + m_close->Invoke(); } catch (Apache::Geode::Client::GeodeException^ ex) { ex->ThrowNative(); http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/clicache/src/impl/ManagedAuthInitialize.hpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/impl/ManagedAuthInitialize.hpp b/src/clicache/src/impl/ManagedAuthInitialize.hpp index 4c0a628..45c9e05 100644 --- a/src/clicache/src/impl/ManagedAuthInitialize.hpp +++ b/src/clicache/src/impl/ManagedAuthInitialize.hpp @@ -47,7 +47,12 @@ namespace apache /// The managed object. /// </param> inline ManagedAuthInitializeGeneric(Apache::Geode::Client::IAuthInitialize^ managedptr) - : m_managedptr(managedptr) { } + : m_managedptr(managedptr) { + m_getCredentials = gcnew Apache::Geode::Client::IAuthInitialize::GetCredentialsDelegate(managedptr, + &Apache::Geode::Client::IAuthInitialize::GetCredentials); + m_close = gcnew Apache::Geode::Client::IAuthInitialize::CloseDelegate(managedptr, + &Apache::Geode::Client::IAuthInitialize::Close); + } /// <summary> /// Static function to create a <c>ManagedAuthInitialize</c> using given @@ -114,6 +119,8 @@ namespace apache /// managed object may be created by the user and will be handled automatically by the GC. /// </summary> gcroot<Apache::Geode::Client::IAuthInitialize^> m_managedptr; + gcroot<Apache::Geode::Client::IAuthInitialize::GetCredentialsDelegate^> m_getCredentials; + gcroot<Apache::Geode::Client::IAuthInitialize::CloseDelegate^> m_close; // Disable the copy and assignment constructors ManagedAuthInitializeGeneric(const ManagedAuthInitializeGeneric&); http://git-wip-us.apache.org/repos/asf/geode-native/blob/1365aade/src/tests/cli/FwkClient/ClientComm.cs ---------------------------------------------------------------------- diff --git a/src/tests/cli/FwkClient/ClientComm.cs b/src/tests/cli/FwkClient/ClientComm.cs index 921c1a3..d91916c 100644 --- a/src/tests/cli/FwkClient/ClientComm.cs +++ b/src/tests/cli/FwkClient/ClientComm.cs @@ -144,7 +144,14 @@ namespace Apache.Geode.Client.FwkClient } } if (result == null) { - mInfo.Invoke(typeInst, paramList); + try + { + mInfo.Invoke(typeInst, paramList); + } + catch (TargetInvocationException tie) + { + Util.Log(Util.LogLevel.Error, tie.InnerException.StackTrace.ToString()); + } } else { result = mInfo.Invoke(typeInst, paramList);
