/**
* Copyright (C) 2009-2013 Barchart, Inc. <http://www.barchart.com/>
*
* All rights reserved. Licensed under the OSI BSD License.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package com.barchart.udt;
import java.util.ArrayList;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import util.TestAny;
import util.UnitHelp;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
// FIXME increase ulimit on build farm
@Ignore
public class TestSocketLimit extends TestAny {
private void socketBindLimit(final int limit) throws Exception {
final List<SocketUDT> list = new ArrayList<SocketUDT>();
allocate: for (int index = 0; index < limit; index++) {
final SocketUDT socket = new SocketUDT(TypeUDT.DATAGRAM);
try {
socket.bind(UnitHelp.localSocketAddress());
} catch (final ExceptionUDT e) {
switch (e.getError()) {
case ETHREAD:
log.error("reached udt limit : {}", e.getMessage());
break allocate;
default:
throw e;
}
} catch (final Throwable e) {
log.error("reached system limit : {}", e.getMessage());
break allocate;
}
list.add(socket);
}
log.info("socket limit : {}", list.size());
for (final SocketUDT socket : list) {
socket.close();
}
}
@Test
public void socketBindLimt() throws Exception {
socketBindLimit(SocketUDT.DEFAULT_MAX_SELECTOR_SIZE);
}
@Test
public void sigar() throws Exception {
// Sigar.getPid();
}
@BeforeClass
public static void setUpClass() throws Exception {
final Logger logBack = (Logger) SocketUDT.log;
logBack.setLevel(Level.INFO);
}
}