This page describes the API one should use to write new test in ZDTM.
API for test itself
The test should clearly describe 3 stages:
- Preparations
- These are actions that test does before the process(es) get checkpointed
- Actions
- During this the process(es) will be interrupted at arbitrary place and get dumped
- Checks
- After restore test should verify whether everything is OK or not and report the result
This is achieved by using the following API calls:
test_init(argc, argv)- Just initializes the test subsystem. After this call the preparations stage starts.
test_daemon()- This one says that we finished preparations and ready to get dumped at any time. I.e. -- the actions begin.
test_go()- This routine checks whether the process was dumped and restored or not yet, i.e. the actions stage still goes on.
test_waitsig()- Calling this blocks the task till it's restored. After this the checks stage starts.
pass()- Calling this marks test as PASSED
fail(message)- Calling this would report test failure. The message argument will be written into logs
err(message)- Use this function to mark the test as being unable to work at all.
test_msg(message)- This is for logging.
From the code perspective this looks like this:
int main(int argc, char **argv)
{
test_init(argc, argv);
/* Preparations */
test_daemon();
#if test want to act and get c/r-ed unexpectedly
while (test_go()) {
/* Actions go here */
}
#else test just want to wait for c/r to happen
/* Actions go here. */
test_waitsig();
#endif
/* checks */
return 0;
}