Difference between revisions of "ZDTM API"
Jump to navigation
Jump to search
| Line 63: | Line 63: | ||
/* checks */ | /* checks */ | ||
| + | |||
| + | if (test_passed()) | ||
| + | pass(); | ||
| + | else | ||
| + | fail("Something went wrong"); | ||
return 0; | return 0; | ||
Revision as of 16:12, 23 January 2015
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 */
if (test_passed())
pass();
else
fail("Something went wrong");
return 0;
}