For testing purposes we will need some dummy components that add some capabilities and "run" by waiting a fixed amount of time before releasing the data. That will allow us to check that components block when they are supposed to and get released when they are supposed to.
What I propose is that for testing we set the dummy components up with a known dependency graph and known time delays. We'll arrange it so that some components get their data immediately when they ask for it, while others have to block. All of the data in the system (i.e., exposed as capabilities) will be the times at which various events happened (component started, component requested data from another component, component received data, etc.). Because we know approximately when these things are supposed to happen, we can define certain order relations between the timing data, and we can test those relations in the test suite to verify that, for example, certain components blocked when they were supposed to and didn't block when they weren't.
(Let me know if that doesn't make sense, and I can draw up an example on the whiteboard)
For testing purposes we will need some dummy components that add some capabilities and "run" by waiting a fixed amount of time before releasing the data. That will allow us to check that components block when they are supposed to and get released when they are supposed to.
What I propose is that for testing we set the dummy components up with a known dependency graph and known time delays. We'll arrange it so that some components get their data immediately when they ask for it, while others have to block. All of the data in the system (i.e., exposed as capabilities) will be the times at which various events happened (component started, component requested data from another component, component received data, etc.). Because we know approximately when these things are supposed to happen, we can define certain order relations between the timing data, and we can test those relations in the test suite to verify that, for example, certain components blocked when they were supposed to and didn't block when they weren't.
(Let me know if that doesn't make sense, and I can draw up an example on the whiteboard)