diff options
Diffstat (limited to 'framework/src/onos/utils/nio/src/test/java/org/onlab/nio/IOLoopIntegrationTest.java')
-rw-r--r-- | framework/src/onos/utils/nio/src/test/java/org/onlab/nio/IOLoopIntegrationTest.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/framework/src/onos/utils/nio/src/test/java/org/onlab/nio/IOLoopIntegrationTest.java b/framework/src/onos/utils/nio/src/test/java/org/onlab/nio/IOLoopIntegrationTest.java new file mode 100644 index 00000000..f42c8dc5 --- /dev/null +++ b/framework/src/onos/utils/nio/src/test/java/org/onlab/nio/IOLoopIntegrationTest.java @@ -0,0 +1,82 @@ +/* + * Copyright 2014 Open Networking Laboratory + * + * 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.onlab.nio; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import java.net.InetAddress; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static org.onlab.junit.TestTools.delay; + +/** + * Integration test for the select, accept and IO loops. + */ +public class IOLoopIntegrationTest { + + private static final int THREADS = 6; + private static final int TIMEOUT = 60; + private static final int MESSAGE_LENGTH = 128; + + private static final int MILLION = 1000000; + private static final int MSG_COUNT = 40 * MILLION; + + @Before + public void warmUp() throws Exception { + Logger.getLogger("").setLevel(Level.SEVERE); + try { + runTest(MILLION, MESSAGE_LENGTH, 15); + } catch (Throwable e) { + System.err.println("Failed warmup but moving on."); + e.printStackTrace(); + } + } + + // TODO: this test can not pass in some environments, need to be improved + @Ignore + @Test + public void basic() throws Exception { + runTest(MILLION, MESSAGE_LENGTH, TIMEOUT); + } + + public void longHaul() throws Exception { + runTest(MSG_COUNT, MESSAGE_LENGTH, TIMEOUT); + } + + private void runTest(int count, int size, int timeout) throws Exception { + // Use a random port to prevent conflicts. + int port = IOLoopTestServer.PORT + new Random().nextInt(100); + + InetAddress ip = InetAddress.getLoopbackAddress(); + IOLoopTestServer server = new IOLoopTestServer(ip, THREADS, size, port); + IOLoopTestClient client = new IOLoopTestClient(ip, THREADS, count, size, port); + + server.start(); + client.start(); + delay(100); // Pause to allow loops to get going + + client.await(timeout); + client.report(); + + server.stop(); + server.report(); + } + +} |