Bart Thierens created SLING-12385:
-------------------------------------
Summary: OSGi mock context seems to not take into account service
ranking
Key: SLING-12385
URL: https://issues.apache.org/jira/browse/SLING-12385
Project: Sling
Issue Type: Bug
Components: Testing
Affects Versions: Testing OSGi Mock 3.4.2
Reporter: Bart Thierens
Logging this issue here as I can't log it in github. I assume this is the
correct approach.
I am unable to make my registered services in a test case mimick the same
ordering behaviour than in an actual OSGi environment. The
AemContext/AemContextImpl/SlingContextImpl/OsgiContextImpl does not respect the
`@ServiceRanking` annotation, nor the component property "service.ranking".
It seems vital to be able to test that a certain part of application logic
executes certain services in order, and that seems impossible now - unless the
developer registers the services exactly in the order he expects them, which
beats the purpose of the test.
If this is documented behaviour, I can't find it anywhere... (And it's still
not correct imho)
Personal use case: A certain component that has "processors" (which are
components implementing a single service) that are ordered by service ranking
(low = first, high = later). When a service is disabled/unregistered,
registered or even re-registered, the order must stay consistent (low => high).
This actually works perfectly, but not in test-cases.
I created a demo (AEM) project that showcases this problem:
[https://github.com/senn/aemcontext-no-serviceranking-ordering]
It contains tests for the various context implementations and also a separate
branch that has the same issue without `@ServiceRanking` and with the
"service.ranking" properties.
I don't have a fix ready, but might look into it in a few weeks when I have
time.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)