/* * JacORB - a free Java ORB * * Copyright (C) 1997-2014 Gerald Brose / The JacORB Team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.jacorb.test.bugs.bugjac563; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.jacorb.test.BiDirServer; import org.jacorb.test.BiDirServerHelper; import org.jacorb.test.ClientCallback; import org.jacorb.test.ClientCallbackHelper; import org.jacorb.test.ClientCallbackOperations; import org.jacorb.test.ClientCallbackPOATie; import org.jacorb.test.harness.ClientServerTestCase; import org.jacorb.test.harness.TestUtils; import org.jacorb.test.orb.connection.BiDirSetup; import org.junit.Assume; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * @author Alphonse Bendt */ public class BugJac563Test extends ClientServerTestCase { private BiDirServer server; @BeforeClass public static void beforeClassSetUp() throws Exception { // We want to test with a custom set of keystores so disable normal SSL testing. Assume.assumeFalse(TestUtils.isSSLEnabled); Properties clientProps = new Properties(); clientProps.setProperty("org.omg.PortableInterceptor.ORBInitializerClass.bidir_init", "org.jacorb.orb.giop.BiDirConnectionInitializer" ); clientProps.setProperty("jacorb.security.support_ssl", "on"); clientProps.setProperty("jacorb.security.keystore", TestUtils.testHome() + "/src/test/java/org/jacorb/test/bugs/bugjac563/OCTrustStore"); clientProps.setProperty("jacorb.security.keystore_password", "OCKeyStorePass"); clientProps.setProperty("jacorb.security.ssl.client.supported_options", "20"); clientProps.setProperty("jacorb.security.ssl.client.required_options", "20"); clientProps.setProperty("jacorb.security.ssl.server.supported_options", "0"); clientProps.setProperty("jacorb.security.ssl.server.required_options", "0"); clientProps.setProperty("jacorb.security.jsse.trustees_from_ks", "on"); clientProps.setProperty("jacorb.ssl.socket_factory", "org.jacorb.security.ssl.sun_jsse.SSLSocketFactory"); clientProps.setProperty("jacorb.ssl.server_socket_factory", "org.jacorb.security.ssl.sun_jsse.SSLServerSocketFactory"); clientProps.setProperty("jacorb.security.ssl.client.cipher_suites", "TLS_RSA_WITH_AES_128_CBC_SHA"); if (TestUtils.isIBM) { clientProps.put("jacorb.security.jsse.server.key_manager_algorithm", "IbmX509"); clientProps.put("jacorb.security.jsse.server.trust_manager_algorithm", "IbmX509"); clientProps.put("jacorb.security.jsse.client.key_manager_algorithm", "IbmX509"); clientProps.put("jacorb.security.jsse.client.trust_manager_algorithm", "IbmX509"); } Properties serverProps = new Properties(); if (TestUtils.isIBM) { serverProps.put("jacorb.security.jsse.server.key_manager_algorithm", "IbmX509"); serverProps.put("jacorb.security.jsse.server.trust_manager_algorithm", "IbmX509"); serverProps.put("jacorb.security.jsse.client.key_manager_algorithm", "IbmX509"); serverProps.put("jacorb.security.jsse.client.trust_manager_algorithm", "IbmX509"); } serverProps.setProperty("org.omg.PortableInterceptor.ORBInitializerClass.bidir_init", "org.jacorb.orb.giop.BiDirConnectionInitializer" ); serverProps.setProperty("jacorb.security.support_ssl", "on"); serverProps.setProperty("jacorb.security.keystore", TestUtils.testHome() + "/src/test/java/org/jacorb/test/bugs/bugjac563/OCKeyStore"); serverProps.setProperty("jacorb.security.keystore_password", "OCKeyStorePass"); serverProps.setProperty("jacorb.security.ssl.client.supported_options", "20"); serverProps.setProperty("jacorb.security.ssl.client.required_options", "20"); serverProps.setProperty("jacorb.security.ssl.server.supported_options", "20"); serverProps.setProperty("jacorb.security.ssl.server.required_options", "20"); serverProps.setProperty("jacorb.security.jsse.trustees_from_ks", "on"); serverProps.setProperty("jacorb.ssl.socket_factory", "org.jacorb.security.ssl.sun_jsse.SSLSocketFactory"); serverProps.setProperty("jacorb.ssl.server_socket_factory", "org.jacorb.security.ssl.sun_jsse.SSLServerSocketFactory"); setup = new BiDirSetup(clientProps, serverProps); } @Before public void setUp() throws Exception { server = BiDirServerHelper.narrow(setup.getServerObject()); } @Test public void testCallbackWorks() throws Exception { final Map<String, String> result = new HashMap<String, String>(); ClientCallbackOperations callbackServant = new ClientCallbackOperations() { public void hello(String message) { synchronized(result) { result.put("result", message); result.notifyAll(); } } }; ClientCallback callback = ClientCallbackHelper.narrow(((BiDirSetup)setup).getBiDirPOA().servant_to_reference(new ClientCallbackPOATie(callbackServant))); server.register_callback(callback); server.callback_hello("Hello Callback!"); final long timeout = System.currentTimeMillis() + TestUtils.getMediumTimeout(); synchronized(result) { while(result.isEmpty() && System.currentTimeMillis() < timeout) { result.wait(); } } assertEquals("Hello Callback!", result.get("result")); } }