On Wed, Aug 18, 2010 at 1:38 PM, Justin Edelson <justinedel...@gmail.com> wrote: > I fixed the ConfigInstallTest failure in the osgi.it module. Not sure if > this is the one which has been "failing for a long time". > > The problem is in the waitForConfiguration method of OsgiInstallerTestBase. > > The logic was: > if (result != null ||!shouldBePresent) { > break; > } > > but this fails to take into account when we want result to be null. As > such, the sleep was never happening. > > After this fix, I did get another test failure due to an > IllegalStateException. It seems that this happens if a Configuration is > deleted between the time ConfigurationAdmin.listConfigurations(null) and > cfg.getPid() are called (in the findConfiguration method). I think the > only way to avoid this is to increase the sleep time between > configuration checks from 25 ms to 250 ms. I went another way and am catching the IllegalStateException.
> > Carsten - what's the other IT you see fail consistently? Is it RemovedResourceDetectionTest? I saw that fail twice now, but haven't been able to reproduce it either while debugging or with pax.exam.log.level=DEBUG. Still, I added some more logging into the even waiting code to see if this might help trap the problem. Justin > > Justin > > On 8/18/10 8:34 AM, Carsten Ziegeler wrote: >> Felix Meschberger wrote >>> >>> I am not particularly keen on putting too much effort into something >>> which will be thrown almost immediately. >>> >>> Rather I would suggest for Carsten to indicate whether he will succeed >>> in-time for Sling 6 or whether we can be of any help to him getting this >>> ready for Sling 6. >> I think I changed/removed/refactored quiet a lot now and I'm nearly at >> the point of starting to add missing features and looking for long >> outstanding bugs/problems. >> >> We now have a cleaner api which is nearly ready for a new release. >> >> At the moment some test cases are failing in the jcrinstaller (this >> seems to be caused by upgrading to the latest sling testing module with >> JCR 2.0 included) and two test cases in the IT module (one of them is >> failing for a long time, even before my changes, the other one is new). >> >> In addition as I refactored the IT tests, there are now some things >> untested like if the installer is idle after it has done the tasks it >> should do. This should be done as junit tests inside the installer module. >> >> So in short, any help in getting the tests fixed and new tests is really >> appreciated. I hope to start on the new stuff soon. >> >> Regards >> Carsten >> >>> >>>> >>>> But before we can do this, I apparently need to convince everyone of two >>>> things: >>>> >>>> 1) There is no harm in doing all of our "should I install/upgrade this >>>> bundle" checks on every startup of launchpad. >>> >>> I can live with that. In fact, IIRC JCR Install already does this on >>> every bundle reastart. >>> >>>> >>>> 2) There is no harm in installing/upgrading bundles directly from >>>> (Launchpad) ResourceProvider. >>> >>> We had this before we started copying bundles into the startup folder. >>> So this is perfectly ok for me -- provided we still support the startup >>> folder for extra deployment (as used by Sakai IIRC). >>> >>>> >>>> If we can agree on these, the implementation of bundle installation >>>> within launchpad.installer will be a lot simpler. >>>> >>>>> >>>>> Regarding the name: Yes, the ResourceProvider in the launchpad/base is >>>>> older than the ResourceProvider in the Resource API. But, this older >>>>> ResourceProvider has always been an internal API of the launchpad/base >>>>> module thus renaming it to prevent the name collision is a good idea. >>>>> >>>>> Maybe something "intelligent" as LaunchpadResourceAccessor ;-) >>>>> Honestly, I am not sooo good at finding good names.... >>>> My initial suggestion was going to be "LaunchpadContentProvider", which >>>> I dismissed because I didn't think Launchpad belonged in the name... >>> >>> On the other hand, the content or resources is/are really provided form >>> inside the launchpad package (either the standalone jar or the web >>> application or even the launchpad plugin). >>> >>> I could live well with LaunchpadContentProvider. >>> >>> Regards >>> Felix >>> >>>> >>>> Justin >>>> >>>>> >>>>> Regards >>>>> Felix >>>>> >>>>> On 8/17/10, Justin Edelson <justinedel...@gmail.com> wrote: >>>>>> As I mentioned last week, I had some concerns about using FileInstall >>>>>> for ConfigAdmin support and, more than concerns about FileInstall in >>>>>> particular, I didn't like the whole approach within Launchpad of >>>>>> "copying some files out of the JAR/WAR" and didn't want to see us >>>>>> continue this pattern. >>>>>> >>>>>> I worked out a solution to this today and I'm pretty happy with it. >>>>>> >>>>>> In short... Launchpad exposes a service which allows bundles/services >>>>>> within the framework to access the contents of the launchpad archive (or >>>>>> project, in the case of the maven-launchpad-plugin) as a virtual file >>>>>> system. >>>>>> >>>>>> It is then trivial to create a component which uses this service to >>>>>> access configuration files and install them via osgi.installer. >>>>>> >>>>>> The specific steps involved were: >>>>>> 1) Creating a new launchpad.api bundle which contains the >>>>>> ResourceProvider interface [1] >>>>>> >>>>>> 2) Modifying launchpad.base to use the new ResourceProvider interface, >>>>>> add it to the list of system packages, and register the service. >>>>>> >>>>>> 3) Modifying maven-launchpad-plugin to use the new ResourceProvider >>>>>> interface. >>>>>> >>>>>> 4) Creating a new launchpad.installer bundle which contains a Component >>>>>> referring to the ResourceProvider service and osgi.installer. >>>>>> >>>>>> The patch can be viewed here: [2]. It looks much bigger than it is due >>>>>> to all of the internal changes within launchpad.base. There are also two >>>>>> minor changes in osgi.installer which I think should probably be made >>>>>> regardless. >>>>>> >>>>>> This patch includes a sample cfg file in both launchpad/builder and >>>>>> launchpad/testing. This was done so I could ensure that it worked in >>>>>> war, jar, and launchpad:run scenarios. There needs to be some kind of >>>>>> automated test. >>>>>> >>>>>> Note that in order for this to work properly [3], I had to introduce >>>>>> osgi.installer into the main pom. I'd like to get rid of the separate >>>>>> reactor for installer entirely, but there are still some integration >>>>>> test failures in osgi/it and it looks like Carsten is still working on >>>>>> this module. In any case, going down this path means that osgi.installer >>>>>> will need to be part of Sling 6 (if we want ConfigAdmin to be part of >>>>>> Sling 6, of course). >>>>>> >>>>>> Justin >>>>>> >>>>>> [1] Because ResourceProvider was already used within launchpad.base for >>>>>> this purpose, I used that name, although it's a bit odd that we have two >>>>>> different service interfaces named ResourceProvider. Suggestions for >>>>>> alternate names welcome :) >>>>>> >>>>>> [2] http://codereview.appspot.com/1953045/ >>>>>> >>>>>> [3] This is only 50% true. >>>>>> >>>> >>>> >>> >> >> > >