Difference between revisions of "ZDTM API"

From CRIU
Jump to navigation Jump to search
Line 5: Line 5:
 
The test should clearly describe 3 stages:
 
The test should clearly describe 3 stages:
  
; Preparations
+
;Preparations
 
: These are actions that test does before the process(es) get checkpointed
 
: These are actions that test does before the process(es) get checkpointed
  
Line 12: Line 12:
  
 
;Checks
 
;Checks
: After restore test should verify whether everything is OK or not
+
: After restore test should verify whether everything is OK or not and report the result
  
 
This is achieved by using the following API calls:
 
This is achieved by using the following API calls:
  
;<code>test_init()</code>
+
;<code>test_init(argc, argv)</code>
:Just initializes the test subsystem.
+
:Just initializes the test subsystem. After this call the preparations stage starts.
  
 
;<code>test_daemon()</code>
 
;<code>test_daemon()</code>
:This one says that we finished preparations and ready to get dumped at any time.
+
:This one says that we finished preparations and ready to get dumped at any time. I.e. -- the ''actions'' begin.
 +
 
 +
;<code>test_go()</code>
 +
:This routine checks whether the process was dumped and restored or not yet, i.e. the ''actions'' stage still goes on.
  
 
;<code>test_waitsig()</code>
 
;<code>test_waitsig()</code>
 
:Calling this blocks the task till it's restored. After this the ''checks'' stage starts.
 
:Calling this blocks the task till it's restored. After this the ''checks'' stage starts.
 +
 +
;<code>pass()</code>
 +
:Calling this marks test as PASSED
 +
 +
;<code>fail(message)</code>
 +
:Calling this would report test failure. The ''message'' argument will be written into logs
 +
 +
;<code>err(message)</code>
 +
:Use this function to mark the test as being unable to work at all.
 +
 +
;<code>test_msg(message)</code>
 +
:This is for logging.
 +
  
 
From the code perspective this looks like this:
 
From the code perspective this looks like this:
Line 32: Line 48:
 
test_init(argc, argv);
 
test_init(argc, argv);
  
/* preparations */
+
/* Preparations */
  
 
test_daemon();
 
test_daemon();
  
/* actions */
+
#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();
 
test_waitsig();
 +
#endif
  
 
/* checks */
 
/* checks */

Revision as of 16:11, 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 */

	return 0;
}


Adding test to automatic suite