Example usage for org.springframework.util SocketUtils findAvailableTcpPort

List of usage examples for org.springframework.util SocketUtils findAvailableTcpPort

Introduction

In this page you can find the example usage for org.springframework.util SocketUtils findAvailableTcpPort.

Prototype

public static int findAvailableTcpPort(int minPort) 

Source Link

Document

Find an available TCP port randomly selected from the range [ minPort , #PORT_RANGE_MAX ].

Usage

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void specificPort() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    int specificPort = SocketUtils.findAvailableTcpPort(41000);
    factory.setPort(specificPort);/* www . j  a va  2s .  c  om*/
    this.webServer = factory.getWebServer(exampleServletRegistration());
    this.webServer.start();
    assertThat(getResponse("http://localhost:" + specificPort + "/hello")).isEqualTo("Hello World");
    assertThat(this.webServer.getPort()).isEqualTo(specificPort);
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void portClashOfSecondaryConnectorResultsInPortInUseException() throws IOException {
    doWithBlockedPort((port) -> {/*from   www  .j a  v  a 2 s  .  c o  m*/
        try {
            AbstractServletWebServerFactory factory = getFactory();
            factory.setPort(SocketUtils.findAvailableTcpPort(40000));
            addConnector(port, factory);
            AbstractServletWebServerFactoryTests.this.webServer = factory.getWebServer();
            AbstractServletWebServerFactoryTests.this.webServer.start();
            fail();
        } catch (RuntimeException ex) {
            handleExceptionCausedByBlockedPort(ex, port);
        }
    });
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

protected final void doWithBlockedPort(BlockedPortAction action) throws IOException {
    int port = SocketUtils.findAvailableTcpPort(40000);
    ServerSocket serverSocket = new ServerSocket();
    for (int i = 0; i < 10; i++) {
        try {//  www  .  j a  v a  2s  .c om
            serverSocket.bind(new InetSocketAddress(port));
            break;
        } catch (Exception ex) {
        }
    }
    try {
        action.run(port);
    } finally {
        serverSocket.close();
    }
}

From source file:org.springframework.cloud.netflix.turbine.stream.TurbineStreamConfiguration.java

@Bean
@SuppressWarnings("deprecation")
public HttpServer<ByteBuf, ServerSentEvent> aggregatorServer() {
    // multicast so multiple concurrent subscribers get the same stream
    Observable<Map<String, Object>> publishedStreams = StreamAggregator
            .aggregateGroupedStreams(/*from w  ww .ja va 2 s  . com*/
                    hystrixSubject().groupBy(data -> InstanceKey.create((String) data.get("instanceId"))))
            .doOnUnsubscribe(() -> log.info("Unsubscribing aggregation."))
            .doOnSubscribe(() -> log.info("Starting aggregation")).flatMap(o -> o).publish().refCount();
    Observable<Map<String, Object>> ping = Observable.timer(1, 10, TimeUnit.SECONDS)
            .map(count -> Collections.singletonMap("type", (Object) "Ping")).publish().refCount();
    Observable<Map<String, Object>> output = Observable.merge(publishedStreams, ping);

    this.turbinePort = this.properties.getPort();

    if (this.turbinePort <= 0) {
        this.turbinePort = SocketUtils.findAvailableTcpPort(40000);
    }

    HttpServer<ByteBuf, ServerSentEvent> httpServer = RxNetty.createHttpServer(this.turbinePort,
            (request, response) -> {
                log.info("SSE Request Received");
                response.getHeaders().setHeader("Content-Type", "text/event-stream");
                return output.doOnUnsubscribe(() -> log.info("Unsubscribing RxNetty server connection"))
                        .flatMap(data -> response.writeAndFlush(new ServerSentEvent(
                                Unpooled.copiedBuffer(JsonUtility.mapToJson(data), StandardCharsets.UTF_8))));
            }, serveSseConfigurator());
    return httpServer;
}

From source file:org.springframework.cloud.task.app.jdbc.hdfs.local.JdbcHdfsDatabaseConfiguration.java

@Bean(destroyMethod = "stop")
public Server databaseServer() throws SQLException, IOException, ServerAcl.AclFormatException {
    DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
    int hsqldbPort = SocketUtils.findAvailableTcpPort(10000);
    System.setProperty("db.server.port", Integer.toString(hsqldbPort));
    logger.info("Database is using port: " + Integer.toString(hsqldbPort));
    HsqlProperties configProps = new HsqlProperties();
    configProps.setProperty("server.port", hsqldbPort);
    configProps.setProperty("server.database.0", "file:target/db/test");
    configProps.setProperty("server.dbname.0", "test");
    Server server = new Server();
    server.setLogWriter(null);/* w  w w. j a v  a  2s. co  m*/
    server.setErrWriter(null);
    server.setRestartOnShutdown(false);
    server.setNoSystemExit(true);
    server.setProperties(configProps);
    server.start();
    return server;
}

From source file:org.springframework.cloud.task.sqoop.common.SqoopToolDatabaseConfiguration.java

@Bean(destroyMethod = "stop")
public Server databaseServer() throws SQLException, IOException {
    DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
    int hsqldbPort = SocketUtils.findAvailableTcpPort(10000);
    System.setProperty("db.server.port", Integer.toString(hsqldbPort));
    logger.info("Database is using port: " + Integer.toString(hsqldbPort));
    HsqlProperties configProps = new HsqlProperties();
    configProps.setProperty("server.port", hsqldbPort);
    configProps.setProperty("server.database.0", "file:target/db/test");
    configProps.setProperty("server.dbname.0", "test");
    Server server = new org.hsqldb.Server();
    server.setLogWriter(null);// w ww  . j a v  a 2s .c  om
    server.setErrWriter(null);
    server.setRestartOnShutdown(false);
    server.setNoSystemExit(true);
    server.setProperties(configProps);
    server.start();
    return server;
}

From source file:org.springframework.integration.samples.tcpclientserver.support.CustomTestContextLoader.java

@Override
protected void loadBeanDefinitions(GenericApplicationContext context, MergedContextConfiguration mergedConfig) {

    int availableServerSocket = SocketUtils.findAvailableTcpPort(5678);

    final Map<String, Object> sockets = new HashMap<String, Object>();
    sockets.put("availableServerSocket", availableServerSocket);

    if (LOGGER.isInfoEnabled()) {
        LOGGER.info("Available Server Socket: " + availableServerSocket);
    }/*from w  w w .j a  va2 s .c o m*/

    final MapPropertySource propertySource = new MapPropertySource("sockets", sockets);

    context.getEnvironment().getPropertySources().addLast(propertySource);
    super.loadBeanDefinitions(context, mergedConfig);
}

From source file:org.springframework.messaging.simp.stomp.Reactor11TcpStompClientTests.java

@Before
public void setUp() throws Exception {

    logger.debug("Setting up before '" + this.testName.getMethodName() + "'");

    int port = SocketUtils.findAvailableTcpPort(61613);

    this.activeMQBroker = new BrokerService();
    this.activeMQBroker.addConnector("stomp://127.0.0.1:" + port);
    this.activeMQBroker.setStartAsync(false);
    this.activeMQBroker.setPersistent(false);
    this.activeMQBroker.setUseJmx(false);
    this.activeMQBroker.getSystemUsage().getMemoryUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.getSystemUsage().getTempUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.start();

    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();//from w w  w .  j a va2s.  c o m

    this.client = new Reactor11TcpStompClient("127.0.0.1", port);
    this.client.setMessageConverter(new StringMessageConverter());
    this.client.setTaskScheduler(taskScheduler);
}

From source file:org.springframework.messaging.simp.stomp.Reactor2TcpStompClientTests.java

@Before
public void setUp() throws Exception {

    logger.debug("Setting up before '" + this.testName.getMethodName() + "'");

    int port = SocketUtils.findAvailableTcpPort(61613);

    this.activeMQBroker = new BrokerService();
    this.activeMQBroker.addConnector("stomp://127.0.0.1:" + port);
    this.activeMQBroker.setStartAsync(false);
    this.activeMQBroker.setPersistent(false);
    this.activeMQBroker.setUseJmx(false);
    this.activeMQBroker.getSystemUsage().getMemoryUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.getSystemUsage().getTempUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.start();

    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();//  w  w  w.  j a v  a 2 s.  c  o  m

    this.client = new Reactor2TcpStompClient("127.0.0.1", port);
    this.client.setMessageConverter(new StringMessageConverter());
    this.client.setTaskScheduler(taskScheduler);
}

From source file:org.springframework.messaging.simp.stomp.ReactorNettyTcpStompClientTests.java

@Before
public void setUp() throws Exception {

    logger.debug("Setting up before '" + this.testName.getMethodName() + "'");

    int port = SocketUtils.findAvailableTcpPort(61613);

    this.activeMQBroker = new BrokerService();
    this.activeMQBroker.addConnector("stomp://127.0.0.1:" + port);
    this.activeMQBroker.setStartAsync(false);
    this.activeMQBroker.setPersistent(false);
    this.activeMQBroker.setUseJmx(false);
    this.activeMQBroker.getSystemUsage().getMemoryUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.getSystemUsage().getTempUsage().setLimit(1024 * 1024 * 5);
    this.activeMQBroker.start();

    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();//from   w ww. j av  a 2s  .com

    this.client = new ReactorNettyTcpStompClient("127.0.0.1", port);
    this.client.setMessageConverter(new StringMessageConverter());
    this.client.setTaskScheduler(taskScheduler);
}