Home | History | Annotate | only in /external/ltp/testcases/kernel/fs/dmapi
Up to higher level directory
NameDateSize
attr.c06-Dec-2017357.2K
config.c06-Dec-201711.6K
disp.c06-Dec-2017104.2K
dm_impl.h06-Dec-20176.8K
dm_test.c06-Dec-201713K
dm_test.h06-Dec-20176K
dm_vars.h06-Dec-20173.6K
event.c06-Dec-201748.8K
event_am.c06-Dec-201768.2K
event_an.c06-Dec-2017100.2K
event_sd.c06-Dec-2017196.5K
event_sn.c06-Dec-201750.9K
event_us.c06-Dec-201727.4K
handle.c06-Dec-2017169.8K
hole.c06-Dec-2017116.1K
invis.c06-Dec-201771.3K
Makefile06-Dec-20172.1K
mmap.c06-Dec-201741.8K
mmapfile.c06-Dec-20173.5K
mount.c06-Dec-201721.3K
objref.c06-Dec-201718.6K
pmr_post.c06-Dec-201733.7K
pmr_pre.c06-Dec-201763.8K
README06-Dec-20178.6K
right.c06-Dec-201750.6K
runtest_off.sh06-Dec-20172.4K
runtest_on.sh06-Dec-20171.3K
session.c06-Dec-201734.4K
token.c06-Dec-201721.8K

README

      1 
      2 		DMAPI Function Verification Test Bucket
      3 
      4 I. Test Bucket Introduction
      5 
      6 This test bucket tests the interfaces and events defined in the CAE
      7 Specification entitled "Systems Management: Data Storage Management (XDSM)
      8 API," which was copyrighted in February, 1997 by The Open Group.  The test
      9 bucket consists of 20 executables containing 1097 variations which test 59 of
     10 67 published DMAPIs and all JFS-supported events except DM_EVENT_NOSPACE on a
     11 functional level.
     12 
     13 II. Test Bucket Contents
     14 
     15 These files provide the test harness:
     16 
     17 dm_test.h	: Defines macros and constants common to all DMAPI test cases;
     18 		  some of the constants may be platform-dependent and should be
     19 		  reviewed prior to running the test bucket on a new platform
     20 dm_vars.h	: Defines variation number bases for all DMAPI test cases;
     21 		  theoretically these could all be zero, but the author
     22 		  believes that giving every variation a unique number makes
     23 		  it much easier when discussing successes/failures
     24 dm_impl.h	: Define implementation-dependent functions and variables
     25 		  common to all DMAPI test cases; these must be modified prior
     26 		  to running the test bucket on a new platform (note: although
     27 		  this is a .h file, it is really a .c file that is included by
     28 		  dm_test.c and is separated to make it easier to port to new
     29 		  platforms)
     30 dm_test.c	: Define functions and variables common to all DMAPI test cases
     31 
     32 These files provide the test scenarios:
     33 
     34 attr.c		: Tests dm_set_dmattr, dm_get_dmattr, dm_remove_dmattr,
     35 		  dm_getall_dmattr, dm_set_fileattr, dm_get_fileattr,
     36 		  dm_get_dirattrs, dm_set_inherit, dm_clear_inherit and
     37 		  dm_getall_inherit
     38 config.c	: Tests dm_get_config
     39 disp.c		: Tests dm_get_config_events, dm_set_disp, dm_getall_disp,
     40 		  dm_set_eventlist and dm_get_eventlist
     41 event.c		: Tests dm_get_events, dm_respond_event, dm_move_event and
     42 		  dm_pending
     43 event_am.c	: Tests DM_EVENT_ATTRIBUTE, DM_EVENT_CLOSE, DM_EVENT_DESTROY
     44 		  and dm_set_return_on_destroy
     45 event_an.c	: Tests DM_EVENT_POSTCREATE, DM_EVENT_POSTREMOVE,
     46 		  DM_EVENT_POSTRENAME, DM_EVENT_POSTSYMLINK and
     47 		  DM_EVENT_POSTLINK
     48 event_sd.c	: Tests DM_EVENT_READ, DM_EVENT_WRITE and DM_EVENT_TRUNCATE
     49 event_sn.c	: Tests DM_EVENT_CREATE, DM_EVENT_REMOVE, DM_EVENT_RENAME,
     50 		  DM_EVENT_SYMLINK and DM_EVENT_LINK
     51 event_us.c	: Tests DM_EVENT_USER, dm_create_userevent, dm_send_msg and
     52 		  dm_find_eventmsg
     53 handle.c	: Tests dm_path_to_handle, dm_fd_to_handle,
     54 		  dm_path_to_fshandle, dm_handle_to_fshandle, dm_handle_cmp,
     55 		  dm_handle_free, dm_handle_is_valid, dm_handle_hash,
     56 		  dm_handle_to_fsid, dm_handle_to_igen, dm_handle_to_ino,
     57 		  dm_make_handle, dm_make_fshandle, dm_handle_to_path and
     58 		  dm_sync_by_handle
     59 hole.c		: Tests dm_get_allocinfo, dm_probe_hole and dm_punch_hole
     60 invis.c		: Tests dm_read_invis and dm_write_invis
     61 mmap.c		: Tests DM_EVENT_READ and DM_EVENT_WRITE
     62 mmapfile.c	: Helper for mmap, invokes mmap() from a different process
     63 mount.c		: Tests dm_get_mountinfo
     64 objref.c	: Tests dm_obj_ref_hold, dm_obj_ref_rele and dm_obj_ref_query
     65 pmr_pre.c	: Tests dm_set_region
     66 pmr_post.c	: Tests dm_get_region
     67 right.c		: Tests dm_request_right, dm_release_right, dm_query_right,
     68 		  dm_upgrade_right and dm_downgrade_right
     69 session.c	: Tests dm_create_session, dm_destroy_session,
     70 		  dm_getall_sessions and dm_query_session
     71 token.c		: Tests dm_getall_tokens
     72 
     73 These scripts execute the test scenarios:
     74 
     75 runtest_off.sh	: Executes test scenarios that must be run off the DM-enabled
     76 		  file system (any directory is fine)
     77 runtest_on.sh	: Executes test scenarios that must be run from the root
     78 		  directory of the DM-enabled file system
     79 
     80 Other file(s):
     81 
     82 README		: You're looking at it
     83 Makefile	: Builds the test harness and scenario; the platform must be
     84 		  defined (i.e. JFS) to build the proper stuff in dm_impl.c,
     85 		  and other constants as necessary to build the proper support
     86 		  (i.e. MULTIPLE_REGIONS)
     87 
     88 III. Test Bucket Omissions
     89 
     90 This test bucket does not test the following DMAPIs because they are not
     91 supported by the originating platform (JFS):
     92 
     93 	dm_create_by_handle
     94 	dm_get_bulkall
     95 	dm_get_bulkattr
     96 	dm_mkdir_by_handle
     97 	dm_symlink_by_handle
     98 
     99 This test bucket does not fully test the following DMAPIs because they are not
    100 fully supported by the originating platform (JFS); in other words, these tests
    101 will probably need further variations to fully test their functionality as the
    102 current variations only test the skeleton support provided by JFS:
    103 
    104 	dm_clear_inherit
    105 	dm_downgrade_right
    106 	dm_getall_inherit
    107 	dm_query_right
    108 	dm_release_right
    109 	dm_request_right
    110 	dm_set_inherit
    111 	dm_upgrade_right
    112 
    113 IV. Test Bucket Execution
    114 
    115 To run this test bucket against a DMAPI-enabled partition, make sure the
    116 DMAPI implementation (kernel and user space code) is installed on the system
    117 (see Implementation-dependent Notes below) and follow these steps:
    118 
    119 	1) Untar the tarball in a directory NOT on a DMAPI-enabled partition:
    120 
    121 		tar -xvf dm_test.tar
    122 
    123 	2) Make the test bucket:
    124 
    125 		make
    126 
    127 	   NOTE: Modify dmapi_lib in Makefile to point to the user space
    128 	   library for the DMAPI implementation to be tested
    129 
    130 	3) If the file system is compiled as a module, make sure it is
    131 	    installed first:
    132 
    133 		modprobe blah
    134 
    135 	4) Run the test cases that require NOT being on a DMAPI-enabled
    136 	   partition:
    137 
    138 		./runtest_off.sh
    139 
    140 	5) Check the results of these test cases:
    141 
    142 		grep status *.log
    143 
    144 	6) Mount the DMAPI-enabled partition:
    145 
    146 		mount -t blah -o blah /dev/hdablah /dmapidir
    147 
    148 	7) Copy the test bucket to the root of the DMAPI-enabled partition:
    149 
    150 		cp * /dmapidir
    151 
    152 	8) Make the root of the DMAPI-enabled partition the current directory:
    153 
    154 		cd /dmapidir
    155 
    156 	9) Remove the copies of the log files just generated:
    157 
    158 		rm -f *.log
    159 
    160 	10) Run the test cases that require being on a DMAPI-enabled partition:
    161 
    162 		./runtest_on.sh
    163 
    164 	11) Check the results of these test cases:
    165 
    166 		grep status *.log
    167 
    168 V. Test Case Format
    169 
    170 The general format of a test case using the supplied test harness should be:
    171 
    172 	if (DMVAR_EXEC(variation number)) {
    173 		set up variation;
    174 		if (set up variation failed)
    175 			DMVAR_SKIP();
    176 		else {
    177 			execute variation;
    178 			if (variation successful)
    179 				DMVAR_PASS();
    180 			else
    181 				DMVAR_FAIL();
    182 			clean up variation;
    183 		}
    184 	}
    185 
    186 VI. Test Case Options
    187 
    188 Following this format will allow the tester to be able to run a variation
    189 individually as the variation both initializes and terminates itself.  Current
    190 options supported by the test harness are:
    191 
    192 -runfrom n	: Defines the starting variation to begin executing from; sets
    193 		  a variation range to execute when used along with -runto, or
    194 		  runs all variations greater than or equal to n if -runto is
    195 		  not specified
    196 -runto n	: Defines the stopping variation to end executing at; sets
    197 		  a variation range to execute when used along with -runfrom,
    198 		  or runs all variations less than or equal to n if -runfrom is
    199 		  not specified
    200 -runonly n	: Executes only variation n
    201 -loglevel n	: Write all messages less than or equal to n to the log file
    202 -termlevel n	: Write all messages less than or equal to n to the terminal
    203 -logname s	: Write all messages defined by -loglevel to the log file named
    204 		  s; if not defined, the default log file name is dm_logfile
    205 
    206 Options and corresponding option values MUST be separated by whitespace.  Any
    207 unrecognized option (that is, one starting with a dash such as -devname) and
    208 its option value can be obtained by using the DMOPT_GET macro (such as
    209 DMOPT_GET("devname")).
    210 
    211 VII. Test Case Output
    212 
    213 Each line of output generated by the DMLOG_PRINT macro is prefixed with:
    214 
    215 	[prog pid level]
    216 
    217 where:
    218 	prog is the name of the test program
    219 	pid is the decimal process identifier
    220 	level is the decimal logging level
    221 
    222 VIII. Test Case Notes
    223 
    224 The test bucket contains several multithreaded test cases where one thread is
    225 responsible for generating DMAPI events	while the other is responsible for
    226 receiving said events and communicating back to the generating thread what was
    227 or was not received.  At first semaphores were used to control thread execution
    228 but this lead to several deadlocks when expected events did not arrive, so
    229 delays (EVENT_DELIVERY_DELAY macro) were used.  This could lead to timing
    230 issues on some platforms, so if a variation fails make sure to check the log
    231 to see if the event arrived after the generating thread checked for its
    232 arrival.
    233 
    234 IX. Implementation-dependent Notes
    235 
    236 1) JFS
    237 	a) Instructions for installing DMAPI for IBM JFS can be found at
    238 	http://oss.software.ibm.com/jfs/.
    239 	b) The test case and user space library must match the architecture
    240 	of the kernel.  In other words, the test case and library must be
    241 	compiled as 32-bit if running on a 32-bit kernel, and must be compiled
    242 	as 64-bit if running on a 64-bit kernel.  Currently, JFS DMAPI does
    243 	not support a 32-bit DM app running on a 64-bit kernel.
    244