You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@sling.apache.org by Bhathiya Jayasekara <to...@gmail.com> on 2012/08/05 10:48:24 UTC

Unit Test Problem in OsgiConsoleTest class

Hi all,

When I run OsgiConsoleTest class as a junit test (in eclipse), I get
this[1] error. But when I add LINE_X in [2], it works fine. Is there any
known reason for this? I would like to know if there is any way to get this
work without having a Thread.sleep(..).

Thanks in advance.

Regards,
--Bhathiya


[1]
05.08.2012 14:11:03.299 *INFO* [main] Setting sling.home=sling (default)
05.08.2012 14:11:03.301 *INFO* [main] Starting Sling in sling
(/home/bhathiya/Apps/Sling/sling/testing/samples/integration-tests/sling)
05.08.2012 14:11:03.313 *INFO* [main] Checking launcher JAR in folder sling
05.08.2012 14:11:03.341 *INFO* [main] Existing launcher is up to date,
using it: 2.3.0 (org.apache.sling.launchpad.base.jar)
05.08.2012 14:11:03.361 *INFO* [main] Loading launcher class
org.apache.sling.launchpad.base.app.MainDelegate from
org.apache.sling.launchpad.base.jar
05.08.2012 14:11:03.386 *INFO* [main] Starting launcher ...
05.08.2012 14:11:03.393 *INFO* [main] HTTP server port: 8080
org.apache.http.conn.HttpHostConnectException: Connection to
http://localhost:8080 refused
at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:158)
 at
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
 at
org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:562)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
 at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
 at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at
org.apache.sling.testing.tools.http.RequestExecutor.execute(RequestExecutor.java:131)
 at
org.apache.sling.testing.samples.integrationtests.http.OsgiConsoleTest.testSomeConsolePaths(OsgiConsoleTest.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
 at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
 at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
 at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
 at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
 at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
 at
org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
 ... 32 more

[2]

public class OsgiConsoleTest extends SlingTestBase {
 static{
System.setProperty("jar.executor.server.port", "8080");
 }

@Test
public void testSomeConsolePaths() {
 try {
final String[] subpaths = { "bundles", "components", "configMgr",
 "config", "licenses", "logs", "memoryusage", "services",
"shell" };

for (String subpath : subpaths) {
final String path = "/system/console/" + subpath;
 RequestExecutor exec = getRequestExecutor();
Request rb =
getRequestBuilder().buildGetRequest(path).withCredentials("admin", "admin");
 *Thread.sleep(5000);
 //----------------------------------------------------------------------LINE_X
*
exec.execute(rb).assertStatus(200);
 }
} catch (Exception ex) {
ex.printStackTrace();
 }
}
}

Re: Unit Test Problem in OsgiConsoleTest class

Posted by Bhathiya Jayasekara <to...@gmail.com>.
Hi devs,

@Chetan: I set 'server.ready.timeout.seconds' and seems it works, but I'm
now getting a timeout. Please see below.

@Bertrand: Sorry about cross posting. Now I set
<keepJarRunning>true</keepJarRunning>

Now I get a 'server not ready after 60s' (timeout) message. It is the same
error I mentioned here [1]. Please help me find if I'm doing anything wrong.

Thanks in advance.

--Bhathiya

[1]
http://mail-archives.apache.org/mod_mbox/sling-dev/201208.mbox/%3CCAPt+24TCfOJNqsx046B+LUO3ram33NA7U-W9ys5fnQ01Kk4QOw@mail.gmail.com%3E




On Mon, Aug 6, 2012 at 6:54 PM, Bertrand Delacretaz
<bd...@apache.org>wrote:

> Hi,
>
> (please don't cross-post such questions)
>
> On Sun, Aug 5, 2012 at 10:48 AM, Bhathiya Jayasekara
> <to...@gmail.com> wrote:
> > ...When I run OsgiConsoleTest class as a junit test (in eclipse), I get
> > this[1] error. But when I add LINE_X in [2], it works fine. Is there any
> > known reason for this? I would like to know if there is any way to get
> this
> > work without having a Thread.sleep(..)....
>
> From your stack trace it looks like you're starting the Sling server
> every time you run that test from Eclipse, which is probably slow.
>
> You might want to start the Sling instance to test separately, and
> configure system properties so that tests run against it.
>
> The comments in the pom at [1] should help you find out how that works.
>
> -Bertrand
>
> [1]
> http://svn.apache.org/repos/asf/sling/trunk/testing/samples/integration-tests/pom.xml
>



-- 
-Bhathiya Jayasekara-
http://www.google.com/profiles/tobhathiyaj
http://www.facebook.com/#!/bhathiyaj1

Re: Unit Test Problem in OsgiConsoleTest class

Posted by Bertrand Delacretaz <bd...@apache.org>.
Hi,

(please don't cross-post such questions)

On Sun, Aug 5, 2012 at 10:48 AM, Bhathiya Jayasekara
<to...@gmail.com> wrote:
> ...When I run OsgiConsoleTest class as a junit test (in eclipse), I get
> this[1] error. But when I add LINE_X in [2], it works fine. Is there any
> known reason for this? I would like to know if there is any way to get this
> work without having a Thread.sleep(..)....

>From your stack trace it looks like you're starting the Sling server
every time you run that test from Eclipse, which is probably slow.

You might want to start the Sling instance to test separately, and
configure system properties so that tests run against it.

The comments in the pom at [1] should help you find out how that works.

-Bertrand

[1] http://svn.apache.org/repos/asf/sling/trunk/testing/samples/integration-tests/pom.xml

Re: Unit Test Problem in OsgiConsoleTest class

Posted by Chetan Mehrotra <ch...@gmail.com>.
You can specify server ready timeout via 'server.ready.timeout.seconds'
system property. Then you do not have to perform sleep in your logic and
Sling Testing fwk would take care of that

Chetan Mehrotra


On Sun, Aug 5, 2012 at 2:18 PM, Bhathiya Jayasekara
<to...@gmail.com>wrote:

> Hi all,
>
> When I run OsgiConsoleTest class as a junit test (in eclipse), I get
> this[1] error. But when I add LINE_X in [2], it works fine. Is there any
> known reason for this? I would like to know if there is any way to get this
> work without having a Thread.sleep(..).
>
> Thanks in advance.
>
> Regards,
> --Bhathiya
>
>
> [1]
> 05.08.2012 14:11:03.299 *INFO* [main] Setting sling.home=sling (default)
> 05.08.2012 14:11:03.301 *INFO* [main] Starting Sling in sling
> (/home/bhathiya/Apps/Sling/sling/testing/samples/integration-tests/sling)
> 05.08.2012 14:11:03.313 *INFO* [main] Checking launcher JAR in folder sling
> 05.08.2012 14:11:03.341 *INFO* [main] Existing launcher is up to date,
> using it: 2.3.0 (org.apache.sling.launchpad.base.jar)
> 05.08.2012 14:11:03.361 *INFO* [main] Loading launcher class
> org.apache.sling.launchpad.base.app.MainDelegate from
> org.apache.sling.launchpad.base.jar
> 05.08.2012 14:11:03.386 *INFO* [main] Starting launcher ...
> 05.08.2012 14:11:03.393 *INFO* [main] HTTP server port: 8080
> org.apache.http.conn.HttpHostConnectException: Connection to
> http://localhost:8080 refused
> at
>
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:158)
>  at
>
> org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
> at
>
> org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
>  at
>
> org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:562)
> at
>
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
>  at
>
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at
>
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
>  at
>
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
> at
>
> org.apache.sling.testing.tools.http.RequestExecutor.execute(RequestExecutor.java:131)
>  at
>
> org.apache.sling.testing.samples.integrationtests.http.OsgiConsoleTest.testSomeConsolePaths(OsgiConsoleTest.java:46)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>  at java.lang.reflect.Method.invoke(Method.java:597)
> at
>
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>  at
>
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
>
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>  at
>
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
>
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>  at
>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> at
>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>  at
>
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> at
>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>  at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>  at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.net.ConnectException: Connection refused
> at java.net.PlainSocketImpl.socketConnect(Native Method)
> at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
>  at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
> at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
>  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
> at java.net.Socket.connect(Socket.java:529)
>  at
>
> org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
> at
>
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
>  ... 32 more
>
> [2]
>
> public class OsgiConsoleTest extends SlingTestBase {
>  static{
> System.setProperty("jar.executor.server.port", "8080");
>  }
>
> @Test
> public void testSomeConsolePaths() {
>  try {
> final String[] subpaths = { "bundles", "components", "configMgr",
>  "config", "licenses", "logs", "memoryusage", "services",
> "shell" };
>
> for (String subpath : subpaths) {
> final String path = "/system/console/" + subpath;
>  RequestExecutor exec = getRequestExecutor();
> Request rb =
> getRequestBuilder().buildGetRequest(path).withCredentials("admin",
> "admin");
>  *Thread.sleep(5000);
>
>  //----------------------------------------------------------------------LINE_X
> *
> exec.execute(rb).assertStatus(200);
>  }
> } catch (Exception ex) {
> ex.printStackTrace();
>  }
> }
> }
>