/* * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 2009 Sun Microsystems, Inc. */ package org.opends.sdk; import java.io.File; import java.io.FileWriter; /** * This class defines some utility functions which can be used by test cases. */ public final class TestCaseUtils { /** * The name of the system property that specifies the ldap port. Set this * property when running the server if you want to use a given port number, * otherwise a port is chosen randomly at test startup time. */ public static final String PROPERTY_LDAP_PORT = "org.opends.server.LdapPort"; /** * Port number that's used by the server. Need to be used by the testcases to * create connections. */ public static int port = 11389; static { final String ldapPort = System.getProperty(PROPERTY_LDAP_PORT); if (ldapPort != null) { port = Integer.valueOf(ldapPort); } } /** * Creates a temporary text file with the specified contents. It will be * marked for automatic deletion when the JVM exits. * * @return The absolute path to the file that was created. * @throws Exception * If an unexpected problem occurs. */ public static String createTempFile(final String... lines) throws Exception { final File f = File.createTempFile("LDIFBasedTestCase", ".txt"); f.deleteOnExit(); final FileWriter w = new FileWriter(f); for (final String s : lines) { w.write(s + System.getProperty("line.separator")); } w.close(); return f.getAbsolutePath(); } /** * Returns an internal client connection to the running ldap server. * * @return The internal client connection. * @throws Exception * When an error occurs. */ public static Connection getInternalConnection() throws Exception { startServer(); final ConnectionFactory factory = Connections.newInternalConnectionFactory( LDAPServer.getInstance(), null); return factory.getConnection(); } /** * Returns the port which the test server listens on. * * @return The LDAP port. */ public static int getLdapPort() { return port; } /** * Starts the test ldap server. * * @throws Exception */ public static void startServer() throws Exception { // TODO:Try a couple of random ports before throwing exception. LDAPServer.getInstance().start(port); } /** * Stops the test ldap server. */ public static void stopServer() { LDAPServer.getInstance().stop(); } }