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.

Carsten - what's the other IT you see fail consistently?

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.
>>>>>
>>>
>>>
>>
> 
> 

Reply via email to