You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2017/05/05 15:05:37 UTC

geode-native git commit: GEODE-2877: Call .NET IAuthInitialize through delegates.

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 <jb...@pivotal.io>
Authored: Wed May 3 22:58:13 2017 +0000
Committer: Jacob Barrett <jb...@pivotal.io>
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);