Author: chirino
Date: Mon Dec 19 13:01:14 2005
New Revision: 357795
URL: http://svn.apache.org/viewcvs?rev=357795&view=rev
Log:
adding test.
Added:
incubator/activemq/trunk/activeio/activeio-aio/src/test/java/org/activeio/packet/async/aio/ChannelFactoryTest.java
Added:
incubator/activemq/trunk/activeio/activeio-aio/src/test/java/org/activeio/packet/async/aio/ChannelFactoryTest.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activeio/activeio-aio/src/test/java/org/activeio/packet/async/aio/ChannelFactoryTest.java?rev=357795&view=auto
==============================================================================
---
incubator/activemq/trunk/activeio/activeio-aio/src/test/java/org/activeio/packet/async/aio/ChannelFactoryTest.java
(added)
+++
incubator/activemq/trunk/activeio/activeio-aio/src/test/java/org/activeio/packet/async/aio/ChannelFactoryTest.java
Mon Dec 19 13:01:14 2005
@@ -0,0 +1,110 @@
+/**
+ *
+ * Copyright 2004 Hiram Chirino
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+package org.activeio.packet.async.aio;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import junit.framework.TestCase;
+
+import org.activeio.AcceptListener;
+import org.activeio.Channel;
+import org.activeio.ChannelFactory;
+import org.activeio.adapter.AsyncToSyncChannel;
+import org.activeio.adapter.SyncToAsyncChannel;
+import org.activeio.packet.async.AsyncChannel;
+import org.activeio.packet.async.AsyncChannelServer;
+import org.activeio.packet.sync.SyncChannel;
+import org.activeio.packet.sync.SyncChannelServer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+
+/**
+ */
+public class ChannelFactoryTest extends TestCase {
+
+ static final Log log = LogFactory.getLog(ChannelFactoryTest.class);
+ static boolean aioDisabled = System.getProperty("disable.aio.tests",
"false").equals("true");
+
+ ChannelFactory factory = new ChannelFactory();
+
+ private SyncChannelServer syncChannelServer;
+ private SyncChannel clientSynchChannel;
+ private SyncChannel serverSynchChannel;
+
+ private AsyncChannelServer asyncChannelServer;
+ private AsyncChannel clientAsyncChannel;
+ private AsyncChannel serverAsyncChannel;
+
+ protected void setUp() throws Exception {
+ log.info("Running: "+getName());
+ }
+
+ public void testAIO() throws IOException, URISyntaxException,
InterruptedException {
+
+ if( aioDisabled ) {
+ return;
+ }
+
+ createSynchObjects("aio://localhost:0");
+ assertNotNull(
syncChannelServer.getAdapter(AIOSyncChannelServer.class) );
+ assertNotNull( clientSynchChannel.getAdapter(AIOAsyncChannel.class) );
+ assertNotNull( serverSynchChannel.getAdapter(AIOAsyncChannel.class) );
+
+ createAsynchObjects("aio://localhost:0");
+ assertNotNull(
asyncChannelServer.getAdapter(AIOSyncChannelServer.class) );
+ assertNotNull( clientAsyncChannel.getAdapter(AIOAsyncChannel.class) );
+ assertNotNull( serverAsyncChannel.getAdapter(AIOAsyncChannel.class) );
+
+ }
+
+ private void createSynchObjects(String bindURI) throws IOException,
URISyntaxException {
+ syncChannelServer = factory.bindSyncChannel(new URI(bindURI));
+ syncChannelServer.start();
+ clientSynchChannel =
factory.openSyncChannel(syncChannelServer.getConnectURI());
+ serverSynchChannel = AsyncToSyncChannel.adapt(
syncChannelServer.accept(1000*5) );
+ serverSynchChannel.dispose();
+ clientSynchChannel.dispose();
+ syncChannelServer.dispose();
+ }
+
+ private void createAsynchObjects(String bindURI) throws IOException,
URISyntaxException, InterruptedException {
+ asyncChannelServer = factory.bindAsyncChannel(new URI(bindURI));
+ final CountDownLatch accepted = new CountDownLatch(1);
+ asyncChannelServer.setAcceptListener(new AcceptListener() {
+ public void onAccept(Channel channel) {
+ serverAsyncChannel = SyncToAsyncChannel.adapt(channel);
+ channel.dispose();
+ accepted.countDown();
+ }
+ public void onAcceptError(IOException error) {
+ error.printStackTrace();
+ }
+ });
+ asyncChannelServer.start();
+ clientAsyncChannel =
factory.openAsyncChannel(asyncChannelServer.getConnectURI());
+ accepted.await(1000*10, TimeUnit.MILLISECONDS);
+ clientAsyncChannel.dispose();
+ asyncChannelServer.dispose();
+ }
+
+}