View Javadoc

    1   /**
    2    * Copyright (c) 2002-2011 "Neo Technology,"
    3    * Network Engine for Objects in Lund AB [http://neotechnology.com]
    4    *
    5    * This file is part of Neo4j.
    6    *
    7    * Neo4j is free software: you can redistribute it and/or modify
    8    * it under the terms of the GNU General Public License as published by
    9    * the Free Software Foundation, either version 3 of the License, or
    10   * (at your option) any later version.
    11   *
    12   * This program is distributed in the hope that it will be useful,
    13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15   * GNU General Public License for more details.
    16   *
    17   * You should have received a copy of the GNU General Public License
    18   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    19   */
    20  package org.neo4j.server;
    21
    22  import java.io.IOException;
    23  import java.net.DatagramSocket;
    24  import java.net.ServerSocket;
    25  import java.net.URI;
    26
    27  import com.sun.jersey.api.client.Client;
    28  import com.sun.jersey.api.client.ClientResponse;
    29
    30  public class WebTestUtils {
    31
    32      private static boolean available(int port) {
    33          if (port < 1111 || port > 9999) {
    34              throw new IllegalArgumentException("Invalid start port: " + port);
    35          }
    36
    37          ServerSocket ss = null;
    38          DatagramSocket ds = null;
    39          try {
    40              ss = new ServerSocket(port);
    41              ss.setReuseAddress(true);
    42              ds = new DatagramSocket(port);
    43              ds.setReuseAddress(true);
    44              return true;
    45          } catch (IOException e) {
    46          } finally {
    47              if (ds != null) {
    48                  ds.close();
    49              }
    50
    51              if (ss != null) {
    52                  try {
    53                      ss.close();
    54                  } catch (IOException e) {
    55                      throw new RuntimeException(e);
    56                  }
    57              }
    58          }
    59
    60          return false;
    61      }
    62
    63      public static int nextAvailablePortNumber() {
    64          int nonPriveledgedPortNumber = 1111;
    65          while (!available(nonPriveledgedPortNumber)) {
    66              nonPriveledgedPortNumber++;
    67          }
    68          return nonPriveledgedPortNumber;
    69      }
    70
    71      public static ClientResponse sendGetRequestTo(URI targetUri) {
    72          return Client.create().resource(targetUri).get(ClientResponse.class);
    73      }
    74  }