Hi JB, Yes, it works for Cellar, I can confirm this from a test I did with a slightly modified CellarTestSupport. However, if I move this same class to my project, then it fails. So, something is different, perhaps in the dependencies, that is causing this. I will keep researching and report back here any findings.
Thanks for taking the time to help! > On Dec 3, 2015, at 2:05 AM, Jean-Baptiste Onofré <[email protected]> wrote: > > Hi Alex, > > I added an itest in Karaf that does: > > @Test > public void createStartCommand() throws Exception { > System.out.println(executeCommand("instance:create itest")); > assertContains("itest", executeCommand("instance:list")); > System.out.println(executeCommand("instance:start itest")); > Thread.sleep(5000); > String output = executeCommand("instance:status itest"); > System.out.println("itest instance status: " + output); > assertContains("Started", output); > System.out.println(executeCommand("instance:stop itest")); > Thread.sleep(5000); > output = executeCommand("instance:status itest"); > System.out.println("itest instance status: " + output); > assertContains("Stopped", output); > } > > and it works fine: the itest instance goes in Started instance. I added a > sleep just to give time to the instance to start (else we may have Starting > during the interval). > > We are using Pax Exam 4.6.0 for now, I'm upgrading to 4.7.0 to see if there's > an impact. > > Regards > JB > > On 12/02/2015 06:54 PM, Alex Soto wrote: >> Correct. >> >>> On Dec 2, 2015, at 12:52 PM, Jean-Baptiste Onofré <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> You use Karaf 4.0.3 right ? >>> >>> Let me check in Karaf itest. >>> >>> Regards >>> JB >>> >>> On 12/02/2015 06:15 PM, Alex Soto wrote: >>>> Hi JB, >>>> >>>> I was able to narrow it down to this line in my @Configuration method: >>>> >>>> configureConsole().ignoreLocalConsole().ignoreRemoteShell(), >>>> >>>> With the above option, the root instance never finishes initializing: >>>> >>>> SSH Port | RMI Registry | RMI Server | State | PID | Name >>>> ------------------------------------------------------------- >>>> 8101 | 1099 | 44444 | Starting | 7354 | root >>>> 8102 | 1100 | 44445 | Stopped | 0 | LA1 >>>> >>>> >>>> Without it, the root instance initializes successfully, but not the >>>> child instance: >>>> >>>> SSH Port | RMI Registry | RMI Server | State | PID | Name >>>> ------------------------------------------------------------ >>>> 8101 | 1099 | 44444 | Started | 7240 | root >>>> 8102 | 1100 | 44445 | Stopped | 0 | LA1 >>>> >>>> >>>> and this exception is thrown in the logs: >>>> >>>> 2015-12-02 12:08:03,103 | INFO | 1]-nio2-thread-2 | ServerSession >>>> | 1 - org.apache.sshd.core - 0.14.0 | Server >>>> session created from /127.0.0.1:53673 >>>> 2015-12-02 12:08:03,103 | WARN | 1]-nio2-thread-2 | ServerSession >>>> | 1 - org.apache.sshd.core - 0.14.0 | Exception >>>> caught >>>> java.io.IOException: Connection reset by peer >>>> at sun.nio.ch.FileDispatcherImpl.read0(Native Method)[:1.8.0_45] >>>> at >>>> sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)[:1.8.0_45] >>>> at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)[:1.8.0_45] >>>> at sun.nio.ch.IOUtil.read(IOUtil.java:197)[:1.8.0_45] >>>> at >>>> >>>> sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:508)[:1.8.0_45] >>>> at >>>> >>>> sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:276)[:1.8.0_45] >>>> at >>>> >>>> sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:297)[:1.8.0_45] >>>> at >>>> >>>> java.nio.channels.AsynchronousSocketChannel.read(AsynchronousSocketChannel.java:420)[:1.8.0_45] >>>> at >>>> >>>> org.apache.sshd.common.io.nio2.Nio2Session.startReading(Nio2Session.java:170)[1:org.apache.sshd.core:0.14.0] >>>> at >>>> >>>> org.apache.sshd.common.io.nio2.Nio2Acceptor$AcceptCompletionHandler.onCompleted(Nio2Acceptor.java:135)[1:org.apache.sshd.core:0.14.0] >>>> at >>>> >>>> org.apache.sshd.common.io.nio2.Nio2Acceptor$AcceptCompletionHandler.onCompleted(Nio2Acceptor.java:120)[1:org.apache.sshd.core:0.14.0] >>>> at >>>> >>>> org.apache.sshd.common.io.nio2.Nio2CompletionHandler$1.run(Nio2CompletionHandler.java:32) >>>> at java.security.AccessController.doPrivileged(Native >>>> Method)[:1.8.0_45] >>>> at >>>> >>>> org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:30)[1:org.apache.sshd.core:0.14.0] >>>> at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)[:1.8.0_45] >>>> at sun.nio.ch.Invoker$2.run(Invoker.java:218)[:1.8.0_45] >>>> at >>>> >>>> sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)[:1.8.0_45] >>>> at >>>> >>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_45] >>>> at >>>> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_45] >>>> at java.lang.Thread.run(Thread.java:745)[:1.8.0_45] >>>> >>>> >>>> Any idea what is going on? >>>> >>>> >>>> >>>>> On Dec 2, 2015, at 11:12 AM, Alex Soto <[email protected] >>>>> <mailto:[email protected]> >>>>> <mailto:[email protected]>> wrote: >>>>> >>>>> I am using very similar method, using the executeCommand, almost >>>>> identical to how Cellar is doing it. >>>>> I see the instance directory being created but there is nothing in the >>>>> log file of the child instance. >>>>> >>>>> Thanks for the help! >>>>> >>>>> >>>>>> On Dec 2, 2015, at 10:34 AM, Jean-Baptiste Onofré <[email protected] >>>>>> <mailto:[email protected]> >>>>>> <mailto:[email protected]>> wrote: >>>>>> >>>>>> It's @Ignore due to some hazelcast issue. I will re-enable it. >>>>>> >>>>>> With Karaf 4.0.0, you can see: >>>>>> >>>>>> protected void createCellarChild(String name, boolean debug, int >>>>>> port) { >>>>>> int instances = 0; >>>>>> String createCommand = "instance:create --featureURL " + >>>>>> System.getProperty("cellar.feature.url") + " --feature cellar "; >>>>>> if (debug && port > 0) { >>>>>> createCommand = createCommand + String.format(DEBUG_OPTS, >>>>>> port); >>>>>> } >>>>>> System.err.println(executeCommand(createCommand + " " + name)); >>>>>> System.err.println(executeCommand("instance:start " + name)); >>>>>> >>>>>> //Wait till the node is listed as Starting >>>>>> System.err.print("Waiting for " + name + " to start "); >>>>>> for (int i = 0; i < 5 && instances == 0; i++) { >>>>>> String response = executeCommand("instance:list | grep " + >>>>>> name + " | grep -c " + INSTANCE_STARTED, COMMAND_TIMEOUT, true); >>>>>> instances = Integer.parseInt(response.trim()); >>>>>> System.err.print("."); >>>>>> try { >>>>>> Thread.sleep(3000); >>>>>> } catch (InterruptedException e) { >>>>>> //Ignore >>>>>> } >>>>>> } >>>>>> >>>>>> if (instances > 0) { >>>>>> System.err.println(".Started!"); >>>>>> } else { >>>>>> System.err.println(".Timed Out!"); >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> It's what I used and it should work. >>>>>> >>>>>> Do you do the same ? >>>>>> >>>>>> Do you use the Instance service directly or the commands ? >>>>>> >>>>>> Regards >>>>>> JB >>>>>> >>>>>> On 12/02/2015 04:27 PM, Alex Soto wrote: >>>>>>> Downloaded Cellar from the >>>>>>> Headathttps://github.com/apache/karaf-cellar >>>>>>> All Integration Tests have the @Ignore annotation. >>>>>>> >>>>>>> Is anybody able to launch a second Karaf instance from a Pax-Exam >>>>>>> integration test? >>>>>>> If so, can you point me to a working example? >>>>>>> >>>>>>> >>>>>>>> On Dec 1, 2015, at 3:12 PM, Alex Soto <[email protected] >>>>>>>> <mailto:[email protected]> >>>>>>>> <mailto:[email protected]> >>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>> >>>>>>>> Hmm, I tried downloading Cellar and all the mirrors fail with not >>>>>>>> found error. >>>>>>>> How do I get the source code? >>>>>>>> >>>>>>>> >>>>>>>>> On Dec 1, 2015, at 3:00 PM, Alex Soto <[email protected] >>>>>>>>> <mailto:[email protected]> >>>>>>>>> <mailto:[email protected]> >>>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>>> >>>>>>>>> JB: >>>>>>>>> >>>>>>>>> Yes, it works outside of Pax-Exam. >>>>>>>>> I will take a look at Cellar. >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>>>> On Dec 1, 2015, at 2:54 PM, Jean-Baptiste Onofré >>>>>>>>>> <[email protected] <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>>>> >>>>>>>>>> Hey Alex, >>>>>>>>>> >>>>>>>>>> I guess it works fine "outside" of Pax Exam, right ? >>>>>>>>>> >>>>>>>>>> You can take a look on Cellar as I use instance to simulate >>>>>>>>>> multiple >>>>>>>>>> nodes. >>>>>>>>>> >>>>>>>>>> Let me try with 4.0.3. >>>>>>>>>> >>>>>>>>>> Regards >>>>>>>>>> JB >>>>>>>>>> >>>>>>>>>> On 12/01/2015 08:16 PM, Alex Soto wrote: >>>>>>>>>>> Hello, >>>>>>>>>>> >>>>>>>>>>> I am using Karaf version 4.0.3. In my integration test I want to >>>>>>>>>>> launch >>>>>>>>>>> a second instance of Karaf, but it always times out, so I am now >>>>>>>>>>> wondering if it is because the root instance is not yet finished >>>>>>>>>>> starting. >>>>>>>>>>> >>>>>>>>>>> In order to troubleshoot this issue, I have now added the >>>>>>>>>>> ‘instance:list’ command to my test: >>>>>>>>>>> >>>>>>>>>>> String listOutput = executeCommand("instance:list"); >>>>>>>>>>> log.info(listOutput); >>>>>>>>>>> >>>>>>>>>>> I call the above from my @Test method, but the output always >>>>>>>>>>> shows: >>>>>>>>>>> >>>>>>>>>>> SSH Port | RMI Registry | RMI Server | State | PID | Name >>>>>>>>>>> ------------------------------------------------------------- >>>>>>>>>>> 8101 | 1099 | 44444 | Starting | 2914 | root >>>>>>>>>>> >>>>>>>>>>> No matter how much I wait, it always shows the same status. >>>>>>>>>>> Meaning the >>>>>>>>>>> container never finishes starting. I can manually run the >>>>>>>>>>> exact same >>>>>>>>>>> container that was created under 'target/exam/<guid>’ folder, >>>>>>>>>>> and issue >>>>>>>>>>> the above command and get: >>>>>>>>>>> >>>>>>>>>>> SSH Port | RMI Registry | RMI Server | State | PID | Name >>>>>>>>>>> ------------------------------------------------------------ >>>>>>>>>>> 8101 | 1099 | 44444 | Started | 3409 | root >>>>>>>>>>> >>>>>>>>>>> So, it appears to be some kind of issue with the way the >>>>>>>>>>> PAM-EXAM test >>>>>>>>>>> is wired. I have added this dependency to try to cope with the >>>>>>>>>>> problem: >>>>>>>>>>> >>>>>>>>>>> @Inject >>>>>>>>>>> @Filter(timeout = SERVICE_TIMEOUT) >>>>>>>>>>> protected BootFinished bootFinished; >>>>>>>>>>> >>>>>>>>>>> but so far, I have not been able to solve it. As I said >>>>>>>>>>> before, my >>>>>>>>>>> ultimate goal is to run a child instance, but I suspect that won’t >>>>>>>>>>> happen until the main instance is successfully started. Any >>>>>>>>>>> hints? >>>>>>>>>>> >>>>>>>>>>> Best regards, >>>>>>>>>>> Alex Soto >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Jean-Baptiste Onofré >>>>>>>>>> [email protected] <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected]><mailto:[email protected]> >>>>>>>>>> http://blog.nanthrax.net >>>>>>>>>> <http://blog.nanthrax.net/><http://blog.nanthrax.net/> >>>>>>>>>> Talend -http://www.talend.com >>>>>>>>>> <http://www.talend.com/><http://www.talend.com/> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> Jean-Baptiste Onofré >>>>>> [email protected] >>>>>> <mailto:[email protected]><mailto:[email protected]> >>>>>> http://blog.nanthrax.net >>>>>> <http://blog.nanthrax.net/><http://blog.nanthrax.net/> >>>>>> Talend -http://www.talend.com >>>>>> <http://www.talend.com/><http://www.talend.com/> >>>>> >>>> >>> >>> -- >>> Jean-Baptiste Onofré >>> [email protected] <mailto:[email protected]> >>> http://blog.nanthrax.net <http://blog.nanthrax.net/> >>> Talend -http://www.talend.com <http://www.talend.com/> >> > > -- > Jean-Baptiste Onofré > [email protected] > http://blog.nanthrax.net > Talend - http://www.talend.com
