Absolutely. I'll try to cook one up. As I mentioned, I'm not 100% convinced that it's a Pax Drone/Pax Construct mismatch--that was just the pattern that I had observed.
I'll need to cook up an example where it fails. I am not prepared to share the code that I discovered this in, but I'll try to come up with something similar. Stuart McCulloch wrote: > 2008/7/28 Toni Menzel <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> > > Will definitely have a look at that asap. @craig: can you provide > a ready to go Sample of the Problem in your laboratory? > Toni > > > yep, I think we'll need an example - I tried to create one using > pax-construct 1.3 and pax-drone 1.3-SNAPSHOT, but wasn't > able to recreate the error > > Sent from my iPhone > > On 28.07.2008, at 10:38, "Stuart McCulloch" > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> > wrote: > >> 2008/7/28 Toni Menzel <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> >> >> hex craig, >> thanks for digging into the problems yourself and sorry about >> me not >> jumping in this weekend. >> first about the Manifest itself: (though it doesn't look to >> be our >> Problem today) its by design to ensure conistency within the >> dronebundle as well as (More important) to really force the >> testcode >> not containing real code. Its different from unittesting. The >> drone is >> just an extra module (bundle) solely to orchestrate the other >> bundles. >> The wiki contains a faq entry about this. >> About paxconstruct: will try to catch up with stuart whats >> wrong here. >> >> >> interesting... pax-construct generated projects are still normal >> Maven projects that someone could create by hand, given time >> - so it's odd they cause problems in pax-drone >> >> initial thought is possibly a dependency/plugin conflict... but how? >> >> Stay there! ;-) >> Cheers, >> Toni >> >> >> >> On 28.07.2008, at 06:13, Craig Walls <[EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]>> wrote: >> >> > >> > Following up to my earlier e-mail... >> > >> > I now believe that my previous supposition was false. At >> that point I >> > was thinking that my service wasn't being published because >> Pax Drone >> > didn't know about my activator. But now I have a much >> simpler bundle >> > project and have no trouble writing Pax Drone tests in it >> and against >> > the service that its activator publishes. So that blows my >> original >> > theory. >> > >> > So, I've tried Pax Drone in a few more bundle projects and >> have had a >> > mixed bag of results. So far, the pattern seems to be that >> it works >> > fine >> > in projects that I create by hand, but doesn't work well in >> projects >> > that I created with Pax Construct. I suspect that I'll >> prove that >> > wrong, >> > but that's the current pattern. >> > >> > For what it's worth, in Pax Construct projects, I am seeing two >> > problems >> > (but they might be related). First, when I try to run the >> test from >> > Eclipse, I get the following exception/stack-trace: >> > >> > java.lang.SecurityException: class >> > "org.apache.commons.logging.LogLevel"'s signer information >> does not >> > match signer information of other classes in the same package >> > at java.lang.ClassLoader.checkCerts(ClassLoader.java:775) >> > at >> java.lang.ClassLoader.preDefineClass(ClassLoader.java:487) >> > at java.lang.ClassLoader.defineClass(ClassLoader.java:614) >> > at >> > >> java.security.SecureClassLoader.defineClass(SecureClassLoader.java: >> > 124) >> > at >> java.net.URLClassLoader.defineClass(URLClassLoader.java:260) >> > at >> java.net.URLClassLoader.access$100(URLClassLoader.java:56) >> > at java.net.URLClassLoader$1.run(URLClassLoader.java:195) >> > at java.security.AccessController.doPrivileged(Native >> Method) >> > at >> java.net.URLClassLoader.findClass(URLClassLoader.java:188) >> > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) >> > at >> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) >> > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) >> > at >> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) >> > at org.ops4j.pax.runner.Run.<init>(Run.java:86) >> > at >> > org. >> > ops4j. >> > pax. >> > drone. >> > connector. >> > paxrunner. >> > >> intern.PaxRunnerInstanceImpl.startup(PaxRunnerInstanceImpl.java:75) >> > at >> > org. >> > ops4j. >> > pax. >> > drone. >> > connector. >> > >> paxrunner.intern.PaxRunnerConnector.execute(PaxRunnerConnector.java: >> > 63) >> > at >> org.ops4j.pax.drone.spi.DroneRunner.run(DroneRunner.java:76) >> > at >> > org. >> > >> >> ops4j.pax.drone.spi.junit.DroneTestCase.runBare(DroneTestCase.java:60) >> > at junit.framework.TestResult$1.protect(TestResult.java:110) >> > at >> junit.framework.TestResult.runProtected(TestResult.java:128) >> > at junit.framework.TestResult.run(TestResult.java:113) >> > at junit.framework.TestCase.run(TestCase.java:124) >> > at junit.framework.TestSuite.runTest(TestSuite.java:232) >> > at junit.framework.TestSuite.run(TestSuite.java:227) >> > at >> > org. >> > junit. >> > >> internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81) >> > at >> > org. >> > eclipse. >> > jdt. >> > internal. >> > >> junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) >> > at >> > org. >> > eclipse. >> > >> jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> > at >> > org. >> > eclipse. >> > jdt. >> > internal. >> > >> junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) >> > at >> > org. >> > eclipse. >> > jdt. >> > internal. >> > >> junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) >> > at >> > org. >> > eclipse. >> > >> jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: >> > 386) >> > at >> > org. >> > eclipse. >> > jdt. >> > >> >> internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) >> > >> > When I run the tests at build time using Maven, the test >> fails with a >> > NPE when it tries to use the null ServiceReference received >> from the >> > BundleContext. >> > >> > For non-Pax Construct projects, it works fine in both >> Eclipse and >> > Maven. >> > >> > Again, any clues would be greatly appreciated. In the >> meantime, I'll >> > be >> > digging around in the Pax Drone source code. >> > >> > >> > >> > Craig Walls wrote: >> >> Imagine that I have created a bundle that publishes a >> HelloService to >> >> the OSGi service registry. Now I want to test that service, >> >> integrated >> >> with all of the stuff (in other bundles) that it works >> with. So I >> >> write >> >> a Pax Drone test, adding all of the required bundles. >> >> >> >> I run the test...it looks a little something like this: >> >> >> >> public class HelloServiceBundleTest extends DroneTestCase { >> >> >> >> @Override >> >> protected ConnectorConfiguration configure() { >> >> return >> ConnectorConfigurationFactory.create(this).setPlatform( >> >> Platforms.EQUINOX).addBundle("...") >> >> .addBundle("..."); // bundle names left >> out for >> >> brevity's sake >> >> } >> >> >> >> public void testBundleContextExists() { >> >> assertNotNull(droneContext.getBundleContext()); >> >> } >> >> >> >> public void testHelloServiceShouldExist() { >> >> BundleContext bundleContext = >> droneContext.getBundleContext(); >> >> ServiceReference serviceRef = bundleContext >> >> >> >> >> .getServiceReference("com.habuma.hello.HelloService"); >> >> HelloService helloService = (HelloService) bundleContext >> >> .getService(serviceRef); >> >> assertNotNull(helloService); >> >> } >> >> } >> >> >> >> But it doesn't work. The testBundleContextExists() test >> works. But >> >> testHelloServiceShouldExist() fails. It tries to find the >> >> HelloService, >> >> but it can't be found. I'm pretty sure that it's because... >> >> >> >> * I'm not adding the hello service bundle to the >> >> ConnectorConfiguration...and... >> >> * I'm letting the test case automatically generate the >> bundle for >> >> the hello service...and... >> >> * The generated bundle doesn't know about the >> >> activator...therefore... >> >> * The service isn't be published. >> >> >> >> My question: How can I test the index service (in an >> integration test >> >> along with all of the stuff that it depends on) using Pax >> Drone? >> >> Like I >> >> said, it seems that the crux of the problem is that the >> service is >> >> never >> >> published because the activator is never executed because >> I don't >> >> know >> >> how to tell Pax Drone about the activator. >> >> >> >> Any clues? The only thing that I can think of is to test >> the hello >> >> service in a separate project, including the hello service >> bundle >> >> in the >> >> set of bundles added to the ConnectorConfiguration and >> ensure that >> >> the >> >> hello service bundle has been created before I run the >> integration >> >> test. >> >> But I'd really prefer to test the hello service bundle >> within the >> >> hello >> >> service bundle project. >> >> >> >> >> >> >> >> _______________________________________________ >> >> general mailing list >> >> [email protected] <mailto:[email protected]> >> >> http://lists.ops4j.org/mailman/listinfo/general >> >> >> > >> > >> > _______________________________________________ >> > general mailing list >> > [email protected] <mailto:[email protected]> >> > http://lists.ops4j.org/mailman/listinfo/general >> >> _______________________________________________ >> general mailing list >> [email protected] <mailto:[email protected]> >> http://lists.ops4j.org/mailman/listinfo/general >> >> >> >> >> -- >> Cheers, Stuart >> _______________________________________________ >> general mailing list >> [email protected] <mailto:[email protected]> >> http://lists.ops4j.org/mailman/listinfo/general > > _______________________________________________ > general mailing list > [email protected] <mailto:[email protected]> > http://lists.ops4j.org/mailman/listinfo/general > > > > > -- > Cheers, Stuart > ------------------------------------------------------------------------ > > _______________________________________________ > general mailing list > [email protected] > http://lists.ops4j.org/mailman/listinfo/general > _______________________________________________ general mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/general
