/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2014 ForgeRock AS. */ package org.forgerock.opendj.server.setup.model; import java.net.InetSocketAddress; import java.net.ServerSocket; import static com.forgerock.opendj.cli.CliConstants.*; import static org.fest.assertions.Assertions.assertThat; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import org.forgerock.opendj.ldap.TestCaseUtils; import org.testng.annotations.Test; public class ListenerSettingsTestCase extends AbstractSetupTestCase { /** * Retrieves default settings. */ @Test public void testGetDefault() { final ListenerSettings dsSettings = new ListenerSettings(); assertThat(dsSettings.getAdminPort()).isEqualTo(DEFAULT_ADMIN_PORT); assertThat(dsSettings.getHTTPPort()).isEqualTo(DEFAULT_HTTP_PORT); assertThat(dsSettings.getJMXPort()).isEqualTo(DEFAULT_JMX_PORT); assertThat(dsSettings.getLdapPort()).isEqualTo(DEFAULT_LDAP_PORT); assertThat(dsSettings.getLdapsPort()).isEqualTo(DEFAULT_LDAPS_PORT); assertThat(dsSettings.getSNMPPort()).isEqualTo(DEFAULT_SNMP_PORT); assertThat(dsSettings.getSSLPortNumber()).isEqualTo(DEFAULT_SSL_PORT); assertThat(dsSettings.getHostName()).isEmpty(); assertThat(dsSettings.getRootUserDN()).isEqualTo(DEFAULT_ROOT_USER_DN); assertThat(dsSettings.getPassword()).isNull(); assertFalse(dsSettings.isSSLEnabled()); assertThat(dsSettings.getCertificate()).isNull(); assertFalse(dsSettings.isTLSEnabled()); assertFalse(dsSettings.isJMXConnectionHandlerEnabled()); assertFalse(dsSettings.isSNMPConnectionHandlerEnabled()); assertTrue(dsSettings.isHTTPConnectionHandlerEnabled()); } /** * Tries to retrieve a free port number. * * @throws Exception */ @Test public void testGetFreePort() throws Exception { // Finds a free socket final InetSocketAddress isa = TestCaseUtils.findFreeSocketAddress(); // Bound the free socket final int port = isa.getPort(); final ServerSocket boundSocket = new ServerSocket(port); // Verify the new port number is different from the free socket and verify it's free. final int newPort = ListenerSettings.getFreeSocketPort(port); assertThat(newPort).isNotEqualTo(port); assertTrue(Math.abs(newPort - port) % PORT_INCREMENT == 0); boundSocket.close(); } /** * Port number is invalid when inferior to 0 or superior to 65535. * * @throws Exception */ @Test(expectedExceptions = IllegalArgumentException.class) public void testInvalidPort() throws Exception { ListenerSettings.getFreeSocketPort(65536); } /** * Port number is invalid when inferior to 0 or superior to 65535. * * @throws Exception */ @Test(expectedExceptions = IllegalArgumentException.class) public void testInvalidNegativePort() throws Exception { ListenerSettings.getFreeSocketPort(-1); } }