package org.jacorb.test.bugs.bugjac774;
import static org.junit.Assert.fail;
import java.util.Properties;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.ClientServerTestCase;
import org.jacorb.test.harness.TestUtils;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* This test checks base BufferManager functionality.
* It is trying to get memory buffer with the maximum allowed
* size and checks how BufferManager handles case when server
* run out of memory. Successfully got memory buffers and size
* that asked but is too big are printed into standard output
* and could be checked during logs review.
*
* @author A.Birchenko
*
*/
public class BugJac774Test extends ClientServerTestCase
{
private static final int XMX = 1500;
private MyServer server;
@Before
public void setUp() throws Exception
{
server = MyServerHelper.narrow(setup.getServerObject());
}
@Test
public void testSimpleBuffer()
{
for(int i = 1; i <= 10; i++)
{
int size = (Integer.MAX_VALUE/10) * i;
switch (server.testBuffer(size))
{
case 0: // Pass
{
TestUtils.getLogger().debug("Buffer allocated: " + size/1048576 + "Mb");
break;
}
case 1: // OutOfMemory
{
TestUtils.getLogger().debug("Buffer unallocated: " + size/1048576 + "Mb");
return;
}
case -1: // Unexpected exception
{
fail("Unexpected exception during buffer allocation. See the server output for the details.");
}
}
}
}
@Test
public void testExpandedBuffer()
{
// check small buffers
for(int i = 1; i <= 10; i++)
{
int size = 1024 * i;
int returnedSize = server.testExpandedBuffer(size);
if (returnedSize < 0)
{
fail("Unexpected exception during buffer allocation. See the server output for the details.");
}
TestUtils.getLogger().debug("Buffer requested: " + size + " allocated: " + returnedSize + "B");
}
// check medium buffers
for(int i = 1; i <= 100; i++)
{
int size = 1024 * 1024 * i;
int returnedSize = server.testExpandedBuffer(size);
if (returnedSize < 0)
{
fail("Unexpected exception during buffer allocation. See the server output for the details.");
}
TestUtils.getLogger().debug("Buffer requested: " + size / 1024 + " allocated: " + returnedSize / 1024 + "kB");
}
for(int i = 1; i <= 10; i++)
{
int size = 50 * 1024 * 1024 * i;
int returnedSize = server.testExpandedBuffer(size);
if (returnedSize < 0)
{
fail("Unexpected exception during buffer allocation. See the server output for the details.");
}
TestUtils.getLogger().debug("Buffer requested: " + size / 1024 / 1024 + " allocated: " + returnedSize / 1024 / 1024 + "MB");
}
}
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
Properties serverProps = new Properties();
serverProps.setProperty("jacorb.test.maxheapsize", XMX+"m");
setup = new ClientServerSetup( ServerImpl.class.getName(), serverProps, serverProps);
}
}