Minutes of the talk on 12.09.2014 about Amdatu Testing (wishes, implementation issues, current problems).
Attendees: Marcel, Dan, Sander, Xander, Marian
Discussed points, chronologically, in a rather raw form:
- for service deps use a single component
- now we sequentially wait for each component to get injected. start() method on component is called when all deps are in, so can use latch in the start method
- should support optional deps
- init() vs start():
- init: all req deps are in and can add more dependencies (e.g. i need data from a config to declare a dependency) - rather a corner case
- start: normally use this one
- the test doesn’t need to know about start() - hide it in the framework
- more info about failures. use a builder pattern
- now we focus on itest. for unit test need a way to inject mock implementations. mockito works, but maybe use a shortcut to create mocks if it simplifies code.
- cleanup between tests with mongo - works now, but is not a general solution
- waiting for a rest waypoint to come up - create a dependency?
- if the rest endpoint is in the same framework, we can wait for the service offering the endpoint.
- is there any async happening in the http server? or hook somehow into the registerServlet
- can whiteboard bother us? even then we could modify the whiteboard to send out an event when the registration is done.
- configadmin delivers configs in a different thread. we can intercept config before it’s delivered (e.g. to add new properties to the config). we could also intercept that as an event.
- OR add an aspect on the ManagedService
- create a list of async stuff we’d like to wait for: config, aspects, rest endpoints. consider aspects when writing latches. prefer a single latch in the start() method.
- make the timeout configurable
- add flag: run this test interactively (disable timeout + add shell)
- graceful shutdown of the framework (it’s skipped now). do it on System.exit? Niklas works to add shutdown hooks in ace launcher. maybe we can use that
- how to auto-detect if cleanup/teardown is forgotten?