package org.jacorb.test.bugs.bugjac685;
import java.util.Properties;
import org.jacorb.test.harness.NameServiceSetup;
import org.jacorb.test.harness.ORBTestCase;
import org.jacorb.test.harness.ServerSetup;
import org.jacorb.test.harness.TestUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
public class BugJac685Test extends ORBTestCase
{
@ClassRule
public static TemporaryFolder folder = new TemporaryFolder();
private SessionFactory sf;
private NamingContextExt nc;
private ServerSetup serverSetup;
private static NameServiceSetup nsSetup;
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
Assume.assumeFalse(TestUtils.isSSLEnabled);
nsSetup = new NameServiceSetup (folder);
nsSetup.setUp();
}
@Override
protected void patchORBProperties(Properties props) throws Exception
{
props.setProperty ("ORBInitRef.NameService", nsSetup.getServerIOR());
}
@Before
public void setUp() throws Exception
{
Properties serverprops = new Properties();
serverprops.setProperty ("ORBInitRef.NameService", nsSetup.getServerIOR());
serverprops.setProperty ("jacorb.test.timeout.server", Long.toString(15000));
serverSetup = new ServerSetup (
"org.jacorb.test.bugs.bugjac685.BugJac685TestServer",
"",
serverprops);
serverSetup.setUp();
nc = NamingContextExtHelper.narrow
(orb.resolve_initial_references ("NameService"));
sf = SessionFactoryHelper.narrow
(nc.resolve(nc.to_name ("ServantScaling/SessionFactory")));
}
@AfterClass
public static void afterClassTearDown() throws Exception
{
if (nsSetup != null)
{
nsSetup.tearDown();
}
}
@After
public void tearDown() throws Exception
{
serverSetup.tearDown();
}
private void setPoa (POA_Kind pk)
{
sf.set_poa (pk);
}
private void doTest()
{
int counts[] = {100};
for (int i = 0; i < counts.length; i++)
{
sf.create_sessions (counts[i]);
int sample = 100;
for (int j = 0; j < counts[i]; j += counts[i]/sample)
{
Session s = sf.get_session (j);
s._release();
}
}
}
@Test
public void testDifferentPOAConfigs()
{
setPoa (POA_Kind.PK_SYSTEMID);
doTest();
setPoa (POA_Kind.PK_USERID);
doTest();
setPoa (POA_Kind.PK_DEFSERVANT);
doTest();
setPoa (POA_Kind.PK_SERVANTLOC);
doTest();
}
}