package org.jacorb.test.notification;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1999-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.
*
*/
import static org.junit.Assert.assertFalse;
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.CosNotification.EventType;
import org.omg.CosNotifyChannelAdmin.ConsumerAdmin;
import org.omg.CosNotifyChannelAdmin.EventChannel;
import org.omg.CosNotifyChannelAdmin.SupplierAdmin;
import org.omg.CosNotifyFilter.ConstraintExp;
import org.omg.CosNotifyFilter.Filter;
/**
* Test the various InterFilterGroupOperator settings.
* naming scheme for the testMethods:
*
* test[PCF][IFGOp][SAF]_[CAF][IFGOp][PSF]()
*
* where
* <ul>
* <li>PCF: ProxyConsumerFilter (True/False)
* <li>IFGOp: InterFilterGroupOperator (OR/AND)
* <li>SAF: SupplierAdminFilter (True/False)
* <li>CAF: ConsumerAdminFilter (True/False)
* <li>PSF: ProxySupplierFilter (True/False)
* </ul>
*
* for example testTrueOrTrue_FalseAndTrue() means
* ProxyConsumerFilter set to TRUE, SupplierAdminFilter set to TRUE
* and InterFilterGroupOperator set to OR.
* ConsumerAdminFilter set to FALSE and InterFilterGroupOperator set
* to AND. ProxySupplierfilter set to TRUE.
*
* @author Alphonse Bendt
*/
public class InterFilterGroupOperatorTest extends NotifyServerTestCase
{
Any testPerson_;
EventChannel channel_;
SupplierAdmin supplierAdmin_;
ConsumerAdmin consumerAdmin_;
Filter trueFilter_;
Filter falseFilter_;
@Before
public void setUp() throws Exception
{
testPerson_ = new NotificationTestUtils(setup.getClientOrb()).getTestPersonAny();
channel_ = getDefaultChannel();
trueFilter_ = channel_.default_filter_factory().create_filter("EXTENDED_TCL");
ConstraintExp[] _constraintExp = new ConstraintExp[1];
EventType[] _eventType = new EventType[1];
_eventType[0] = new EventType("*", "*");
String _expression = "TRUE";
_constraintExp[0] = new ConstraintExp(_eventType, _expression);
trueFilter_.add_constraints(_constraintExp);
falseFilter_ = channel_.default_filter_factory().create_filter("EXTENDED_TCL");
_constraintExp = new ConstraintExp[1];
_eventType = new EventType[1];
_eventType[0] = new EventType("*", "*");
_constraintExp[0] = new ConstraintExp(_eventType, "FALSE");
falseFilter_.add_constraints(_constraintExp);
assertTrue(trueFilter_.match(testPerson_));
assertFalse(falseFilter_.match(testPerson_));
}
@Test
public void testTrueORFalse_NoneOrNone() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, true);
_sender.addProxyFilter(trueFilter_);
_sender.addAdminFilter(falseFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", _receiver.isEventHandled());
}
@Test
public void testFalseORTrue_NoneOrNone() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, true);
_sender.addProxyFilter(falseFilter_);
_sender.addAdminFilter(trueFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", _receiver.isEventHandled());
}
@Test
public void testTrueANDFalse_NoneOrNone() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, false);
_receiver.connect(channel_, true);
_sender.addProxyFilter(trueFilter_);
_sender.addAdminFilter(falseFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", !_receiver.isEventHandled());
}
@Test
public void testFalseANDTrue_NoneOrNone() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, false);
_receiver.connect(channel_, true);
_sender.addProxyFilter(falseFilter_);
_sender.addAdminFilter(trueFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", !_receiver.isEventHandled());
}
@Test
public void testNoneOrNone_TrueORFalse() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, true);
_receiver.addProxyFilter(falseFilter_);
_receiver.addAdminFilter(trueFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", _receiver.isEventHandled());
}
@Test
public void testNoneOrNone_FalseORTrue() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, true);
_receiver.addProxyFilter(trueFilter_);
_receiver.addAdminFilter(falseFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", _receiver.isEventHandled());
}
@Test
public void testNoneOrNone_TrueANDFalse() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, false);
_receiver.addProxyFilter(falseFilter_);
_receiver.addAdminFilter(trueFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue("Should have received something", !_receiver.isEventHandled());
}
@Test
public void testNoneOrNone_FalseANDTrue() throws Exception
{
AnyPushSender _sender = new AnyPushSender(setup.getClientOrb(), testPerson_);
AnyPushReceiver _receiver = new AnyPushReceiver(setup.getClientOrb());
_sender.connect(channel_, true);
_receiver.connect(channel_, false);
_receiver.addProxyFilter(trueFilter_);
_receiver.addAdminFilter(falseFilter_);
Thread _senderThread = new Thread(_sender);
Thread _receiverThread = new Thread(_receiver);
_receiverThread.start();
_senderThread.start();
_senderThread.join();
_receiverThread.join();
assertTrue("Error while sending", !_sender.error_);
assertTrue(_receiver + " should have received something", !_receiver.isEventHandled());
}
}