package org.jacorb.test.notification;
import static org.junit.Assert.assertTrue;
import org.jacorb.test.notification.common.NotificationTestUtils;
import org.jacorb.test.notification.common.NotifyServerTestCase;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.Any;
import org.omg.CORBA.IntHolder;
import org.omg.CosNotification.Property;
import org.omg.CosNotifyChannelAdmin.EventChannel;
/**
* Unit Test for class EventChannel. Test Backward compability. Access Notification Channel via the
* CosEvent Interfaces.
*
* @author Alphonse Bendt
*/
public class CosEventChannelTest extends NotifyServerTestCase
{
EventChannel channel_;
Any testData_;
@Before
public void setUp() throws Exception
{
channel_ = getDefaultChannel();
testData_ = new NotificationTestUtils(setup.getClientOrb()).getTestPersonAny();
}
@Test
public void testPushPush() throws Exception
{
CosEventPushReceiver _receiver = new CosEventPushReceiver(setup.getClientOrb());
_receiver.connect(channel_, false);
CosEventPushSender _sender = new CosEventPushSender(setup.getClientOrb(), testData_);
_sender.connect(channel_, false);
Thread _r = new Thread(_receiver);
_r.start();
Thread _s = new Thread(_sender);
_s.start();
_s.join();
assertTrue(_sender.isEventHandled());
_r.join();
assertTrue(_receiver.isEventHandled());
}
@Test
public void testPushPull() throws Exception
{
CosEventPullReceiver _receiver = new CosEventPullReceiver(setup.getClientOrb());
_receiver.connect(channel_, false);
Thread _r = new Thread(_receiver);
CosEventPushSender _sender = new CosEventPushSender(setup.getClientOrb(), testData_);
_sender.connect(channel_, false);
Thread _s = new Thread(_sender);
_r.start();
_s.start();
_s.join();
assertTrue(_sender.isEventHandled());
_r.join();
assertTrue(_receiver.isEventHandled());
}
@Test
public void testPullPush() throws Exception
{
CosEventPushReceiver _receiver = new CosEventPushReceiver(setup.getClientOrb());
_receiver.connect(channel_, false);
CosEventPullSender _sender = new CosEventPullSender(setup.getClientOrb(), testData_);
_sender.connect(channel_, false);
Thread _r = new Thread(_receiver);
_r.start();
Thread _s = new Thread(_sender);
_s.start();
_s.join();
assertTrue(_sender.isEventHandled());
_r.join();
assertTrue(_receiver.isEventHandled());
}
@Test
public void testPullPull() throws Exception
{
CosEventPullReceiver _receiver = new CosEventPullReceiver(setup.getClientOrb());
_receiver.connect(channel_, false);
Thread _r = new Thread(_receiver);
CosEventPullSender _sender = new CosEventPullSender(setup.getClientOrb(), testData_);
_sender.connect(channel_, false);
_r.start();
_r.join();
assertTrue(_receiver.isEventHandled());
}
@Test
public void testDestroyChannelDisconnectsClients() throws Exception
{
EventChannel _channel =
getEventChannelFactory().create_channel(new Property[0],
new Property[0],
new IntHolder());
TestClientOperations[] _testClients = new TestClientOperations[] {
new CosEventPullSender(setup.getClientOrb(), testData_),
new CosEventPushSender(setup.getClientOrb(), testData_),
new CosEventPushReceiver(setup.getClientOrb()),
new CosEventPullReceiver(setup.getClientOrb()) };
for (int x = 0; x < _testClients.length; ++x)
{
_testClients[x].connect(_channel, false);
assertTrue(_testClients[x].isConnected());
}
_channel.destroy();
Thread.sleep(1000);
for (int x = 0; x < _testClients.length; ++x)
{
assertTrue("Idx: " + x + " still connected", !_testClients[x].isConnected());
}
}
/* @BeforeClass
public static void beforeClassSetUp() throws Exception throws Exception
{
return NotifyServerTestCase.suite("Basic CosEvent EventChannel Tests",
CosEventChannelTest.class);
}*/
}