You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2013/12/06 02:30:12 UTC
svn commit: r1548358 - in /tomee/tomee/trunk: ./ server/openejb-derbynet/
server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/
server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/
Author: tveronezi
Date: Fri Dec 6 01:30:11 2013
New Revision: 1548358
URL: http://svn.apache.org/r1548358
Log:
Improving DerbyNetworkService tests.
Modified:
tomee/tomee/trunk/pom.xml
tomee/tomee/trunk/server/openejb-derbynet/pom.xml
tomee/tomee/trunk/server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/DerbyNetworkService.java
tomee/tomee/trunk/server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/DerbyNetworkServiceTest.java
Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1548358&r1=1548357&r2=1548358&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Fri Dec 6 01:30:11 2013
@@ -1693,6 +1693,11 @@
<artifactId>derbynet</artifactId>
<version>10.9.1.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbyclient</artifactId>
+ <version>10.9.1.0</version>
+ </dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
Modified: tomee/tomee/trunk/server/openejb-derbynet/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-derbynet/pom.xml?rev=1548358&r1=1548357&r2=1548358&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-derbynet/pom.xml (original)
+++ tomee/tomee/trunk/server/openejb-derbynet/pom.xml Fri Dec 6 01:30:11 2013
@@ -20,7 +20,8 @@
<!-- $Rev$ $Date$ -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>server</artifactId>
<groupId>org.apache.openejb</groupId>
@@ -51,6 +52,11 @@
<artifactId>derbynet</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbyclient</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
Modified: tomee/tomee/trunk/server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/DerbyNetworkService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/DerbyNetworkService.java?rev=1548358&r1=1548357&r2=1548358&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/DerbyNetworkService.java (original)
+++ tomee/tomee/trunk/server/openejb-derbynet/src/main/java/org/apache/openejb/server/derbynet/DerbyNetworkService.java Fri Dec 6 01:30:11 2013
@@ -59,31 +59,33 @@ public class DerbyNetworkService impleme
@Override
public void init(final Properties properties) throws Exception {
final Options options = new Options(properties);
-
this.port = options.get("port", 1527);
this.disabled = options.get("disabled", false);
-
- host = InetAddress.getByName("0.0.0.0");
- System.setProperty("derby.system.home", SystemInstance.get().getBase().getDirectory().getAbsolutePath());
+ this.host = InetAddress.getByName("0.0.0.0");
+ System.setProperty(
+ "derby.system.home",
+ options.get("derby.system.home", SystemInstance.get().getBase().getDirectory().getAbsolutePath())
+ );
}
@Override
public void service(final InputStream inputStream, final OutputStream outputStream) throws ServiceException, IOException {
+ // no-op
}
@Override
public void service(final Socket socket) throws ServiceException, IOException {
+ // no-op
}
@Override
public void start() throws ServiceException {
- if (disabled)
+ if (this.disabled) {
return;
+ }
try {
- serverControl = new NetworkServerControl(host, port);
- //serverControl.setMaxThreads(threads);
-
- serverControl.start(new LoggingPrintWriter("Derby"));
+ this.serverControl = new NetworkServerControl(host, port);
+ this.serverControl.start(new LoggingPrintWriter("Derby"));
} catch (Exception e) {
throw new ServiceException(e);
}
@@ -91,15 +93,15 @@ public class DerbyNetworkService impleme
@Override
public void stop() throws ServiceException {
- if (serverControl == null) {
+ if (this.serverControl == null) {
return;
}
try {
- serverControl.shutdown();
+ this.serverControl.shutdown();
} catch (Exception e) {
throw new ServiceException(e);
} finally {
- serverControl = null;
+ this.serverControl = null;
}
}
Modified: tomee/tomee/trunk/server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/DerbyNetworkServiceTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/DerbyNetworkServiceTest.java?rev=1548358&r1=1548357&r2=1548358&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/DerbyNetworkServiceTest.java (original)
+++ tomee/tomee/trunk/server/openejb-derbynet/src/test/java/org/apache/openejb/server/derbynet/DerbyNetworkServiceTest.java Fri Dec 6 01:30:11 2013
@@ -17,6 +17,7 @@
package org.apache.openejb.server.derbynet;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.server.ServerService;
import org.apache.openejb.server.ServiceFinder;
import org.apache.openejb.server.SimpleServiceManager;
@@ -24,9 +25,14 @@ import org.apache.openejb.util.NetworkUt
import org.junit.Assert;
import org.junit.Test;
+import java.io.File;
import java.io.IOException;
-import java.net.ConnectException;
import java.net.Socket;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -36,26 +42,49 @@ import java.util.Properties;
*/
public class DerbyNetworkServiceTest {
- private static final long RETRY_TIMEOUT = 10000;
+ private static final long RETRY_TIMEOUT = 250;
+ private long timeoutLeftover = 10000;
- private void connectSocket(int port) {
+ private void waitForDerby(int port) {
try {
+ Socket socket = new Socket("localhost", port);
+ socket.close();
+ } catch (IOException e) {
+ timeoutLeftover -= RETRY_TIMEOUT;
+ if (timeoutLeftover < 0) {
+ Assert.fail("Impossible to connect using port\"" + port + "\". Message: " + e.getMessage());
+ }
try {
- new Socket("localhost", port);
- } catch (ConnectException e) {
- // OK it didn't fully started yet. Wait a bit and try it again.
Thread.sleep(RETRY_TIMEOUT);
- new Socket("localhost", port);
+ } catch (InterruptedException ignore) {
+ // no-op
+ }
+ waitForDerby(port);
+ }
+ }
+
+ private void assertConnection(int port) throws ClassNotFoundException, SQLException {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+ final String connectionStr = "jdbc:derby://localhost:" + port + "/testDB;create=true;user=tomee;password=tomee";
+ final Connection conn = DriverManager.getConnection(connectionStr);
+ try {
+ final Statement stmt = conn.createStatement();
+ final ResultSet rs = stmt.executeQuery("values(1)"); // Derby doesn't like "SELECT 1" as validation query
+ boolean valueFound = false;
+ while (rs.next()) {
+ valueFound = true;
+ Assert.assertEquals("1", rs.getString(1));
}
- } catch (Exception e) {
- Assert.fail("Impossible to connect using port\"" + port + "\". Message: " + e.getMessage());
+ Assert.assertTrue("No value found.", valueFound);
+ stmt.close();
+ } finally {
+ conn.close();
}
}
@Test
public void test() throws Exception {
final int port = NetworkUtil.getNextAvailablePort();
-
final SimpleServiceManager serviceManager = new SimpleServiceManager(new ServiceFinder() {
@Override
public Map<String, Properties> mapAvailableServices(Class interfase) throws IOException, ClassNotFoundException {
@@ -64,15 +93,19 @@ public class DerbyNetworkServiceTest {
properties.setProperty("port", port + "");
properties.setProperty("disabled", "false");
properties.put(ServerService.class, DerbyNetworkService.class);
+ properties.put(
+ "derby.system.home",
+ new File(SystemInstance.get().getBase().getDirectory(), "target").getAbsolutePath()
+ );
final Map<String, Properties> services = new HashMap<String, Properties>();
services.put("derbynet", properties);
return services;
}
});
-
serviceManager.init();
serviceManager.start(false);
- connectSocket(port);
+ waitForDerby(port);
+ assertConnection(port);
serviceManager.stop();
}
}