Conformance Test: Definition and Structure =========================================== This document describes what conformance tests are, how they are created, and the structure they follow in CVS. Conformance Test Definition --------------------------- Conformance tests test conformance to the POSIX* specification. They test both that the header files are correct and that the behavior defined in the specification is implemented. Directory Structure ------------------- The directory structure for conformance tests is as follows. All tests are located in the conformance/ directory off of posixtestsuite/. Within this directory, there are the following three subdirectories: definitions/ - This directory contains tests for each *.h file in the POSIX spec. Tests are taken from the Base Definitions document. interfaces/ - This directory contains tests for each function listed in the POSIX spec. Tests are taken from the System Interfaces document. behavior/ - This directory contains tests from any document that do not directly correlate to functions (as in interfaces/) or header files (as in definitions/). The breakdown of these subdirectories is as follows: definitions/ ----------- The definitions/ directory contains one subdirectory per *.h file. Each subdirectory should have the name *_h (i.e., the *.h file name with "_" replacing "."). interfaces/ ---------- The interfaces directory contains one subdirectory per function listed in the System Interfaces document. behavior/ -------- This directory is broken down by functional area in a manner similar to functional and stress tests (see HOWTO_ - for now, see email discussions on functional/stress test structure). Writing Tests ------------- Within each lowest level directory (definitions/*_h for definitions, interfaces/ for interfaces, and behavior/ for behavior), an assertions.xml file is used to describe the tests, and tests have the structure M-N.c or M-N.sh. More details are below. Speculative Tests ----------------- Tests which the POSIX spec uses the words "may" or "implementation-defined" to define are considered speculative by PTS and are created in a speculative/ directory off of the functional area directory. (For example, mq_timedsend/speculative.) These tests attempt to determine which of the implementation-defined alternatives the current implementation implements. PTS_PASS is always returned if the test is able to finish. assertions.xml -------------- This file contains a list of assertions to be tested, an ID for each assertion, and descriptive attributes to be used in categorizing assertions. For more information on creating and using these files, see HOWTO_Assertions. Test Cases ---------- Test cases are numbered M-N.c or M-N.sh where M corresponds to the assertion ID of the assertion being tested, and N is an ID for the specific tests. (ex. assertion 8 may have test cases 8-1.c 8-2.c and 8-3.sh) Generally, *.sh scripts are only used when the test case is trivial. The following documents may be helpful in test case creation: - HOWTO_DefinitionsTest - describes how to create definitions tests - HOWTO_ResultCodes - describes the result codes test cases should return - HOWTO_BoundaryTest - describes how to create boundary tests for functions * POSIX (R) is a registered trademark of the IEEE Contributors: rusty.lynch REMOVE-THIS AT intel DOT com julie.n.fleischer REMOVE-THIS AT intel DOT com