File: [Development] / ltp-website / faq.html (download) (as text)
Revision 1.12, Fri Dec 29 22:35:11 2000 UTC (16 years, 9 months ago) by nstraz
Branch: MAIN
CVS Tags: HEAD Changes since 1.11: +890 -341
lines
These are the post-processed HTML files. Do not edit these anymore! Instead
edit the files in mp/
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>SGI - Developer Central Open Source</TITLE>
<META NAME="description" content="">
<META NAME="keywords" content="">
<META NAME="owner" content="">
<!--- This style will define the main link title to look inactive --->
<STYLE><!-- .homeLink {color: #000000; text-decoration: none;} --></STYLE>
<SCRIPT LANGUAGE="JavaScript" SRC="/js/style_sniffer.js"></SCRIPT>
<!-- Stylesheet section is used to initialize the menus and the highlight menus -->
<LINK REL="stylesheet" HREF="/styles/developers.css" TYPE="text/css">
<STYLE TYPE='text/css'>
<!--
#menu0 { position: absolute; left: 156px; top: 79px; z-index: 101; visibility: hidden; width: 107px;}
#menu0overs { position: absolute; left: 156px; top: 79px; z-index: 111; visibility: hidden; width: 107px;}
#menu1 { position: absolute; left: 264px; top: 79px; z-index: 102; visibility: hidden; width: 110px;}
#menu1overs { position: absolute; left: 264px; top: 79px; z-index: 112; visibility: hidden; width: 110px;}
#menu2 { position: absolute; left: 375px; top: 79px; z-index: 103; visibility: hidden; width: 119px;}
#menu2overs { position: absolute; left: 375px; top: 79px; z-index: 113; visibility: hidden; width: 119px;}
#menu3 { position: absolute; left: 495px; top: 79px; z-index: 104; visibility: hidden; width: 167px;}
#menu3overs { position: absolute; left: 495px; top: 79px; z-index: 114; visibility: hidden; width: 167px;}
#menu4 { position: absolute; left: 663px; top: 79px; z-index: 106; visibility: hidden; width: 116px;}
#menu4overs { position: absolute; left: 663px; top: 79px; z-index: 116; visibility: hidden; width: 116px;}
#menu5overs { position: absolute; left: 200px; top: 100px; z-index: 400; visibility: hidden;}
IMG.menu {border-bottom:1px white solid}
BR.menu{margin-bottom:1px}
-->
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
window.onerror = null;
window.defaultStatus = '';
var initialized = 0;
var menus = new Array();
var menustatus = new Array();
var menuovers = new Array();
// initializes the menus into an array
function init(){
if(isFour) {
for (var i=0;i<=5;i++) {
menustatus[i] = "closed";
if (document.layers) {
menuovers[i] = eval("window.document.menu"+i+"overs");
menus[i] = eval("window.document.menu"+i);
if (i < 5) menuovers[i].onmouseout = menuhider;
} else {
var tmnov = (document.all)?eval("document.all.menu"+i+"overs"):document.getElementById("menu"+i+"overs");
var tmn = (document.all)?eval("document.all.menu"+i):document.getElementById("menu"+i);
menuovers[i] = tmnov.style;
menus[i] = tmn.style;
if (i < 5) tmnov.onmouseout = menuhider;
}
}
}
initialized = true;
}
// Sets the selected menu to visible
function change(Name,Image,No) {
if (initialized) {
document [Name].src = eval(Image + No + ".src");
if (Name == 'imgmenu0') document ['imgcrnr'].src = eval("nav_prod_corner" + No + ".src");
var menunumber = parseInt(Name.charAt(7));
if((isFour)&&(No)&&(menustatus[menunumber] == 'closed')) {
menuovers[menunumber].visibility = 'visible';
menuovers[menunumber].zIndex = '310';
menus[menunumber].visibility = 'visible';
menus[menunumber].zIndex = '300';
menustatus[menunumber] = 'open';
}
}
}
// Clears all menus
function clearmenus() {
if (initialized) {
change('imgmenu0','nav_prd',0);
change('imgmenu1','nav_sol',0);
//change('imgmenu2','nav_dev',0);
change('imgmenu3','nav_srv',0);
change('imgmenu4','nav_fun',0);
if(isFour) {
for(i=0; i<menus.length; i++) {
if(menustatus[i] == 'open') {
menuovers[i].visibility = 'hidden';
menuovers[i].zIndex = '110';
menus[i].visibility = 'hidden';
menus[i].zIndex = '100';
menustatus[i] = 'closed';
}
}
}
}
}
// Turns the highlighted part of a menu to visible
function imagerep(imgname, divname){
if(isFour){
if (document.layers)
eval("window.document."+divname+".document['"+imgname+"'].src="+imgname+"over.src")
else
eval("document['"+imgname+"'].src="+imgname+"over.src");
}
}
// Turns off the highlighted part of a menu
function eraseimage(imgname, divname){
if(isFour) {
if(document.layers)
eval("window.document."+divname+".document['"+imgname+"'].src=blank.src");
else
eval("document['" + imgname + "'].src = blank.src");
}
}
// Used to clear the menu after the mouse leaves it
function menuhider(evnt) {
if (initialized) {
if (window.event) {
if (window.event.toElement.className != "menu")
clearmenus();
} else if (evnt.target) {
if(evnt.target.id || evnt.target.className != "menu")
clearmenus();
}
}
}
// Caches the dropdown menus
if (document.images) {
// Products Menu
var serversover=new Image();
serversover.src="/images/nav/drop_prod_servers.gif";
var workstationsover=new Image();
workstationsover.src="/images/nav/drop_prod_workstations.gif";
var swover=new Image();
swover.src="/images/nav/drop_prod_soft.gif";
var vissysover=new Image();
vissysover.src="/images/nav/drop_prod_vissys.gif";
var storageover=new Image();
storageover.src="/images/nav/drop_prod_storage.gif";
var remanover=new Image();
remanover.src="/images/nav/drop_prod_reman.gif";
var peripheralsover=new Image();
peripheralsover.src="/images/nav/drop_prod_peripherals.gif";
// Solutions Menu
var manover=new Image();
manover.src="/images/nav/drop_sol_man.gif";
var scienceover=new Image();
scienceover.src="/images/nav/drop_sol_science.gif";
var defenseover=new Image();
defenseover.src="/images/nav/drop_sol_defense.gif";
var telcoover=new Image();
telcoover.src="/images/nav/drop_sol_telco.gif";
// Developers Menu
var toolsover=new Image();
toolsover.src="/images/nav/drop_dev_prod.gif";
var programsover=new Image();
programsover.src="/images/nav/drop_dev_prog.gif";
var libraryover=new Image();
libraryover.src="/images/nav/drop_dev_libr.gif";
var opensourceover=new Image();
opensourceover.src="/images/nav/drop_dev_oss.gif";
var opsysover=new Image();
opsysover.src="/images/nav/drop_dev_opsys.gif";
var resourcesover=new Image();
resourcesover.src="/images/nav/drop_dev_reso.gif";
// Support Menu
var profover=new Image();
profover.src="/images/nav/drop_supp_prof.gif";
var prdvtyover=new Image();
prdvtyover.src="/images/nav/drop_supp_prdvty.gif";
var ortover=new Image();
ortover.src="/images/nav/drop_supp_ort.gif";
var eduover=new Image();
eduover.src="/images/nav/drop_supp_edu.gif";
var onlineover=new Image();
onlineover.src="/images/nav/drop_supp_online.gif";
// Fun Menu
var gamesover=new Image();
gamesover.src="/images/nav/drop_fun_games.gif";
var webdevover=new Image();
webdevover.src="/images/nav/drop_fun_webdev.gif";
var softdevover=new Image();
softdevover.src="/images/nav/drop_fun_softdev.gif";
var graphicsover=new Image();
graphicsover.src="/images/nav/drop_fun_graphics.gif";
var sysadminover=new Image();
sysadminover.src="/images/nav/drop_fun_sysadmin.gif";
var freewareover=new Image();
freewareover.src="/images/nav/drop_fun_freeware.gif";
// Clear GIF
var blank=new Image();
blank.src="/images/dots/dot_clear.gif";
// Products Rollover
nav_prod_corner0=new Image();
nav_prod_corner0.src="/images/nav/nav_prod_corner0.gif";
nav_prod_corner1=new Image();
nav_prod_corner1.src="/images/nav/nav_prod_corner1.gif";
nav_prd0=new Image();
nav_prd0.src="/images/nav/nav_prod0.gif";
nav_prd1=new Image();
nav_prd1.src="/images/nav/nav_prod1.gif";
// Solutions Rollover
nav_sol0=new Image();
nav_sol0.src="/images/nav/nav_solutions0.gif";
nav_sol1=new Image();
nav_sol1.src="/images/nav/nav_solutions1.gif";
// Developers Rollover
nav_dev0=new Image();
nav_dev0.src="/images/nav/nav_dev0.gif";
nav_dev1=new Image();
nav_dev1.src="/images/nav/nav_dev1.gif";
// Support Rollover
nav_srv0=new Image();
nav_srv0.src="/images/nav/nav_support0.gif";
nav_srv1=new Image();
nav_srv1.src="/images/nav/nav_support1.gif";
// Fun Rollover
nav_fun0=new Image();
nav_fun0.src="/images/nav/nav_fun0.gif";
nav_fun1=new Image();
nav_fun1.src="/images/nav/nav_fun1.gif";
}
// Is This Netscape 4 or up?
var isFour = (parseInt(navigator.appVersion) > 3);
//-->
</SCRIPT>
</HEAD>
<BODY ONLOAD="init()" TEXT="#000000" LINK="#420077" ALINK="#7700A2" VLINK="#110042" BGCOLOR="#FFFFFF" MARGINHEIGHT="0" MARGINWIDTH="0" LEFTMARGIN="0" TOPMARGIN="0">
<!-- Global Navigation Include (Developers) -->
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#7C7F87">
<TD ROWSPAN="3" WIDTH="126"><A HREF="http://www.sgi.com/"><IMG SRC="/images/common/sgi_logo_us.gif" ALT="www.sgi.com" HEIGHT="79" WIDTH="126" BORDER="0"></A></TD>
<TD>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="657" VALIGN="top">
<TR>
<TD WIDTH="212"><IMG SRC="/images/dots/dot_clear.gif" WIDTH="1" HEIGHT="54"></TD>
<TD WIDTH="285" VALIGN="top"><A HREF="http://www.sgi.com/sales/"><IMG
SRC="/images/nav/nav_buy.gif" HEIGHT="21" WIDTH="60" BORDER="0"></A><IMG
SRC="/images/nav/nav_top_spacer.gif" HEIGHT="21" WIDTH="15" BORDER="0"><A HREF="http://www.sgi.com/resellers/"><IMG
SRC="/images/nav/nav_resellers.gif" HEIGHT="21" WIDTH="61" BORDER="0"></A><IMG
SRC="/images/nav/nav_top_spacer.gif" HEIGHT="21" WIDTH="15" BORDER="0"><A HREF="http://www.sgi.com/company_info/"><IMG
SRC="/images/nav/nav_company_info.gif" HEIGHT="21" WIDTH="73" BORDER="0"></A><IMG
SRC="/images/nav/nav_top_spacer.gif" HEIGHT="21" WIDTH="15" BORDER="0"><A HREF="http://www.sgi.com/employment/"><IMG
SRC="/images/nav/nav_careers.gif" HEIGHT="21" WIDTH="46" BORDER="0"></A></TD>
<TD WIDTH="160" ALIGN="right" VALIGN="top"><A HREF="http://www.sgi.com/search/" ONCLICK="if(isFour){menuovers[5].visibility='visible';return false;}"><IMG
SRC="/images/nav/nav_search.gif" HEIGHT="26" WIDTH="67" BORDER="0"></A><A HREF="http://www.sgi.com/"><IMG
SRC="/images/nav/nav_home1.gif" HEIGHT="26" WIDTH="59" BORDER="0"></A></TD>
</TR>
</TABLE></TD>
</TR>
<TR BGCOLOR="#7C7F87">
<TD WIDTH="100%"><A HREF="javascript:void(0)" ONMOUSEOVER="clearmenus()"><IMG
SRC="/images/dots/dot_clear.gif" HEIGHT="2" WIDTH="657" BORDER="0"></A></TD>
</TR>
<!-- Nav Menus -->
<TR BGCOLOR="#CFCFCF">
<TD WIDTH="100%">
<A HREF="http://www.sgi.com/products/" ONMOUSEOVER="clearmenus()"><IMG
SRC="/images/nav/nav_prod_corner0.gif" ALT="" WIDTH="30" HEIGHT="23" BORDER="0" NAME="imgcrnr"></A><IMG
SRC="/images/nav/nav_prod0.gif" ALT="[Products]" WIDTH="108" HEIGHT="23" BORDER="0" NAME="imgmenu0" USEMAP="#menu0map"><IMG
SRC="/images/nav/nav_solutions0.gif" ALT="[Solutions]" WIDTH="111" HEIGHT="23" BORDER="0" NAME="imgmenu1" USEMAP="#menu1map"><IMG
SRC="/images/nav/nav_dev1.gif" ALT="[Developers]" WIDTH="120" HEIGHT="23" BORDER="0" NAME="imgmenu2" USEMAP="#menu2map"><IMG
SRC="/images/nav/nav_support0.gif" ALT="[Support]" WIDTH="168" HEIGHT="23" BORDER="0" NAME="imgmenu3" USEMAP="#menu3map"><IMG
SRC="/images/nav/nav_fun0.gif" ALT="[Serious Fun]" WIDTH="117" HEIGHT="23" BORDER="0" NAME="imgmenu4" USEMAP="#menu4map"><A
HREF="javascript:void(0)" ONMOUSEOVER="clearmenus()"><IMG SRC="/images/dots/dot_clear.gif" WIDTH="2" HEIGHT="23" BORDER="0" ALT="-"
></A></TD>
</TR>
</TABLE>
<!-- End Global Navigation -->
<TABLE WIDTH="780" BORDER="0" CELLPADDING="0" CELLSPACING="0">
<TR>
<!--- This is the site banner TD --->
<TD COLSPAN="5" ALIGN="RIGHT">
<!-- Begin Site Banner --->
<A HREF="http://www.sgi.com/developers/oss/"><IMG SRC="/images/ban_open.gif" ALT="Open Source" WIDTH="271" HEIGHT="68" BORDER="0"></A>
<!-- End Site Banner --->
<!--- Do not remove the next four lines before the sidenav --->
</TD>
</TR>
<TR VALIGN="TOP">
<TD WIDTH="130">
<!-- Start Side Nav -->
<DIV ID="sidenav">
<!-- Start Library Tools Sub Navigation Bar -->
<!-- Start OSS Sub Navigation Bar -->
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="130">
<!-- About -->
<TR VALIGN="TOP">
<TR><TD><IMG SRC="/images/common/bullets_dev.gif" ALT="" WIDTH="30" HEIGHT="10"></TD>
<TD><A HREF="../../about/system.html">About this site</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="20" WIDTH="1"></TD><TD></TD></TR>
<!-- Project Menu -->
<TR VALIGN="TOP">
<TD><IMG SRC="/images/common/bullets_dev.gif" ALT="" WIDTH="30" HEIGHT="10"></TD>
<TD><B>Linux Test Project</B></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="index.html">Overview</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="news.html">News</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD> <FONT FACE="ARIAL, HELVETICA" SIZE="2"><font color="#207575"><b>FAQ</b></font></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="mail.html">Mailing List</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="contribute.html">How to Contribute</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD>Source [<A HREF="cvs_download.html">CVS</A>
| <A HREF="http://oss.sgi.com/cgi-bin/cvsweb.cgi/ltp/">Web</A>]</TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="ftp://oss.sgi.com/projects/ltp/download/">Download</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="license.html">License</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="glossary.html">Glossary</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="20" WIDTH="1"></TD><TD></TD></TR>
<!-- Project List link -->
<TR VALIGN="TOP">
<TD><IMG SRC="/images/common/bullets_dev.gif" ALT="" WIDTH="30" HEIGHT="10"></TD>
<TD><B>SGI Open Source</B></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="8" WIDTH="1"></TD><TD></TD></TR>
<TR><TD></TD><TD><A HREF="/projects/">Project List</A></TD></TR>
<TR><TD><IMG SRC="/images/dots/dot_clear.gif" ALT="" HEIGHT="20" WIDTH="1"></TD><TD></TD></TR>
</TABLE>
</DIV>
<!-- End Side Nav -->
</TD>
<TD WIDTH="30" VALIGN="TOP"><IMG SRC="/images/dots/dot_clear.gif" WIDTH="30" HEIGHT="2" ALT=""></TD><TD>
<DIV CLASS="content">
<!-- Content Starts Here -->
<!-- Start Project Content -->
<FONT FACE="ARIAL NARROW, HELVETICA" SIZE="5"><B>LTP FAQ</B></FONT>
<p>
<i>Our FAQ is a bit unorganized at this point. We're adding questions as they pop up. When topic areas
become clear, we'll reorder the questions into topic areas.</i>
<P>
<FONT FACE="ARIAL NARROW, HELVETICA">
<!-- questions section -->
<p>
<a href="#Q1"><b>What is LTP ?</b></a><br>
<a href="#Q2"><b>Linux already has a successful testing model. How will this project benefit Linux further?</b></a><br>
<a href="#Q3"><b>What is in the LTP, so far. </b></a><br>
<a href="#Q4"><b>How do I build this?</b></a><br>
<a href="#Q5"><b>How do I run this? How does it work?</b></a><br>
<a href="#Q6"><b>How do I analyze the results?</b></a><br>
<a href="#Q7"><b>What if a test program reports a failure?</b></a><br>
<a href="#Q8"><b>What is a test?</b></a><br>
<a href="#Q8"><b>Are you doing benchmarking?</b></a><br>
<a href="#Q8"><b>Are you doing standards testing?</b></a><br>
<hr noshade size=1>
<!-- answers section -->
<a name="Q1"></a>
<h3>What is LTP ?</h3>
LTP is the Linux Test Project. LTP is a project that aims to develop a set of
tools and tests to verify the functionality and stability of the Linux kernel
(including regression tests). We hope this will support Linux development by
making unit testing more complete and minimizing user impact by building a
barrier to keep bugs from making it to the user.
<p>
<a name="Q2"></a>
<h3>Linux already has a successful testing model. How will this project benefit
Linux further?</h3>
The Linux development community utilizes two important (some would argue most
important) testing techniques in it's normal operations: Design and Code
Inspections. The intent of LTP is to support this by giving developers an ever
growing set of tools to help identify any operational problems in their code
that may be missed by human review. One of the toughest categories of problems
to catch with inspection is that of interaction of features. With a
continuously improving set of tests and tools, developers can get an indication
of whether their changes may have broken some other functionality.
<p>
There is no such thing as a perfect test base. It's only useful if it keeps up
with new and changing functionality, and if it actually gets used.
<p>
<a name="Q3"></a>
<h3>What is in the LTP, so far? </h3>
The first release of code from SGI for LTP was a set of tools for testing file
systems. Since that first release, a group of tests we call <i>Quickhit</i>
tests have been released. These are simple tests aimed at running through a few
execution paths in a number of system calls. Watch the news link for updates on
the content of the LTP releases.
<p>
<a name="Q4"></a>
<h3>How do I build this?</h3>
We've made a decision to not put effort into a grand build process in favor of a
minimal makefile approach. We did this because the project is just starting and
we don't want to impose an "SGI approach" in favor of a more open source
approach decided more by open source contributors. For now, from the root of
the tree, a simple 'make' should do it. Send your build errata to
ltp@oss.sgi.com.
<p>
<a name="Q5"></a>
<h3>How do I run this? How does it work?</h3>
<b>Simple Answer:</b> <code>./runalltests.sh</code>
<p><b>Hard Answer:</b> Any way you want to. We have provided some example
scripts and files that you can use as a starting point, but it is only a
starting point. The tests can be run individually or with the help of a test
driver. We have included a test driver called "pan" that is easy to use.
<p>
A problem that needs to be addressed is how to store different command lines and
determining when to run them. A couple examples are, should a bigmem test be
run on a 128Mb system? Should a file system test that requires 2Gb of scratch
space be run on a system without such a test space? These two examples
highlight a couple of issues that need to be addressed in regard to the runtime
framework for tests.
<p>
<a name="Q6"></a>
<h3>How do I analyze the results?</h3>
Our philosophy on writing functional tests is that each test program is
responsible for setting up an environment for testing the target functionality,
performing an operation using the target functionality, and then analyzing
whether the functionality performed according to expectations and reporting the
results. Reporting the results can take a couple of different forms.
<p>
The simplest form is the exit status of the program. If a test hits a scenario
where it finds unexpected or improper results, calling <font
face="courier">exit()</font> with a non-zero exit status would flag the caller
that the test failed for some reason. Conversely, if the test completes with
the functionality performing as expected, a zero exit would flag the caller that
the test passed. Summarizing: <font face="courier"> exit(0)==PASS,
exit(!0)==FAIL</font>. Additionally, the test program could report some sort of
information on standard output indicating why the test passed or failed.
<p>
Another form of results reporting used within SGI is a hybrid of the <font
face="courier">exit()</font> style reporting. It still uses the exit status for
reporting, but incorporates a standard format for output from standard output of
the test program. This accomplishes two things: allows the reporting of the
functional testing results to be more understandable for both humans and a
computer analysis tool and allows more than one test case result to be reported
from within one test program. This is in contrast to a pure exit status
analysis where a test program may contain N test cases and one test case fails,
the test program returns a non-zero value. It appears that the whole test
fails. Compare this to a scenario where a test reports for each test case a
PASS or FAIL token on standard output.
<p>
For quick clarity, take this example:
<font face="courier">
<pre>
$ ./dup02
dup02 1 PASS : dup(-1) Failed, errno=9 : Bad file descriptor
dup02 2 PASS : dup(1500) Failed, errno=9 : Bad file descriptor
</pre></font>
dup02 is a test program that tests a couple of scenarios for the dup() call.
Each of the test cases call dup() in an effort to be sure dup() responds with a
correct errno value after deliberately calling dup() with bad arguments. In
both cases above, dup() is called with non-existent (1500) or undefined (-1)
file descriptor values. In both cases, dup() should respond with an errno
indicating a 'Bad File Descriptor'. In both cases, the test reports that dup()
responded as expected by printing a PASS token.
<p>
Additionally, the exit status should be zero, indicating all the test cases
passed. Accessing the exit status of the test program can be reported
immediately after running the test program by printing the $? variable.
<font face="courier"><pre>
$ echo $?
0
</pre></font>
<p>
Finally, we can analyze the results of the dup02 test program on two fronts. We
can see from the two PASS lines, that both test cases in the dup02 program
passed. We can also see from the exit status that the dup02 program as a whole
passed.
<p>
<a name="Q7"></a>
<h3>What if a test program reports a failure?</h3>
After a failure report, analysis consists of three parts: determining what test
case reported the failure, determining if the reported failure was really a
failure, and comparing results with a passing baseline.
<p>
Determining what test case is reporting a failure is sometimes a challenge. In
some cases, in a multiple test case test program, previous test cases can cause
failure in subsequent test cases. If a test is well written, the output on
standard output can be useful.
<p>
Once the test case the "failure" is occuring under is isolated, determining
whether the "failure" is really a failure needs to be determined. If a test is
poorly written and certain environmental conditions are not handled properly, a
false failure may occur.
<p>
Comparing the failure on the system under test against a baseline system is
important. If the test fails on a system but it is unknown if it ever passed on
any other system, it is not possible to determine if the problem is a new
failure. Comparing how the functionality under test performs on the baseline
against how it acts on the test system is the most important method for
determining how the "failure" occured.
<p>
<a name="Q8"></a>
<h3>What is a test?</h3>
Take a look at the LTP Glossary at <a href="glossary.html">http://oss.sgi.com/projects/ltp/glossary.html</a>. It covers
some of the basic testing definitions, including 'test'.
<p>
In software testing, the word 'test' has become overloaded and increasingly
tough to define. In operating system testing, we might be able to categorize
tests into a few different areas: functional (regression), duration, stress
(load), and performance.
<p>
<a name="Q9"></a>
<h3>Are you doing benchmarking?</h3>
Not at this time. We're more interested in functional, regression, and stress
testing the Linux kernel. Benchmarking may be workable to compare the
performace among Linux versions.
<p>
<a name="Q10"></a>
<h3>Are you doing standards testing?</h3>
No, we're leaving that to Linux Standard Base (LSB). Check out
<a href="http://www.freestandards.org/">http://www.freestandards.org/</a>.
</font>
<IMG src="/images/dot_clear.gif" WIDTH="400" HEIGHT="1">
</TD>
</TR>
</TABLE>
<P>
<CENTER>
<!---- Virtual Footer ---->
<TABLE WIDTH="400" CELLPADDING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD ALIGN="RIGHT">
<FONT FACE="Helvetica, Arial" SIZE="-1"><a
href="../../about/system.html">about this site</a> | <A
href="http://www.sgi.com/company_info/privacy.html">privacy policy</A></FONT>
</TD>
<TD ALIGN="CENTER">
<FONT FACE="Helvetica, Arial">
|
</FONT>
</TD>
<TD ALIGN="LEFT">
<FONT FACE="Helvetica, Arial" SIZE="-1"><A HREF="mailto:owner-ltp@oss.sgi.com">owner(s) of project ltp</A></FONT>
</TD>
</TR>
<TR>
<TD ALIGN="RIGHT">
<FONT FACE="Helvetica, Arial" SIZE="-2"><A HREF="http://www.sgi.com/company_info/copyright.html">Copyright © 1999 Silicon Graphics, Inc.</A> All rights reserved.</FONT>
</TD>
<TD ALIGN="CENTER">
<FONT FACE="Helvetica, Arial">
|
</FONT>
</TD>
<TD ALIGN="LEFT">
<FONT FACE="Helvetica, Arial" SIZE="-2"><A HREF="http://www.sgi.com/company_info/trademarks/">Trademark Information</A></FONT>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
</P>
<!-- End Project Content -->
<!-- Content ends here -->
</DIV>
</TD><TD
WIDTH="20" VALIGN="TOP"><IMG SRC="/images/dots/dot_clear.gif" WIDTH="20" HEIGHT="1" ALT=""></TD><TD
WIDTH="50" VALIGN="TOP"><IMG SRC="/images/dots/dot_clear.gif" WIDTH="50" HEIGHT="1" ALT="">
<!-- Begin trademark footer -->
</TD>
</TR>
<TR>
<TD COLSPAN="2"> </TD>
<TD COLSPAN="3" VALIGN="BOTTOM" ALIGN="MIDDLE"><BR><BR><BR>
<TABLE WIDTH="600" CELLPADDING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD ALIGN="RIGHT" CLASS="footer"><A HREF="http://www.sgi.com/company_info/privacy.html" TARGET="_top">privacy policy</A> </TD>
<TD ALIGN="CENTER" CLASS="footer"> | </TD>
<TD ALIGN="LEFT" CLASS="footer"><A HREF="/cgi-bin/mailto" TARGET="TOP">project owner(s)</A></TD>
</TR><TR>
<TD ALIGN="RIGHT" CLASS="footer"><A HREF="http://www.sgi.com/company_info/copyright.html" TARGET="_top">Copyright © 1993-2000 Silicon Graphics, Inc.</A> All rights reserved.</TD>
<TD ALIGN="CENTER" CLASS="footer"> | </TD>
<TD ALIGN="LEFT" CLASS="footer"><A HREF="http://www.sgi.com/company_info/trademarks/" TARGET="_top">Trademark Information</A></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<!-- End trademark footer -->
<!-- javascript/CGI links and images so the linkscan checker finds them-->
<A HREF="/images/common/javascript.html"></A>
<!-- end links and images -->
<MAP NAME="menu0map"><AREA SHAPE="RECT" COORDS="2,0 106,23" HREF="http://www.sgi.com/products/" ONMOUSEOVER="clearmenus();change('imgmenu0','nav_prd',1)" ONMOUSEOUT="if(!isFour)clearmenus()"></MAP>
<MAP NAME="menu1map"><AREA SHAPE="RECT" COORDS="2,0 109,23" HREF="http://www.sgi.com/solutions/" ONMOUSEOVER="clearmenus();change('imgmenu1','nav_sol',1)" ONMOUSEOUT="if(!isFour)clearmenus()"></MAP>
<MAP NAME="menu2map"><AREA SHAPE="RECT" COORDS="2,0 118,23" HREF="http://www.sgi.com/developers/" ONMOUSEOVER="clearmenus();change('imgmenu2','nav_dev',1)" ONMOUSEOUT="if(!isFour)clearmenus()"></MAP>
<MAP NAME="menu3map"><AREA SHAPE="RECT" COORDS="2,0 166,23" HREF="http://www.sgi.com/support/" ONMOUSEOVER="clearmenus();change('imgmenu3','nav_srv',1)" ONMOUSEOUT="if(!isFour)clearmenus()"></MAP>
<MAP NAME="menu4map"><AREA SHAPE="RECT" COORDS="2,0 115,23" HREF="http://www.sgi.com/fun/" ONMOUSEOVER="clearmenus();change('imgmenu4','nav_fun',1)" ONMOUSEOUT="if(!isFour)clearmenus()"></MAP>
<FONT COLOR="#FFFFFF">
<SCRIPT LANGUAGE="JavaScript">
<!--
// If the browser does not support stylesheets then the rest is put in an incomplete table.
if(!isFour)document.write((navigator.appName.indexOf('Netscape'))?'<TABLE BORDER="0" HEIGHT="1" WIDTH="1"><TR><TD>':'<STY'+'LE>');
//-->
</SCRIPT>
<NOSCRIPT><TABLE BORDER="0" HEIGHT="1" WIDTH="1"><TR><TD></NOSCRIPT>
<DIV ID="menu0"><IMG SRC="/images/nav/drop_prod.gif" BORDER="0" HEIGHT="111" HSPACE="0" VSPACE="0" WIDTH="107" ALT="Products Menu"></DIV>
<DIV ID="menu0overs">
<A HREF="http://www.sgi.com/servers/"
ONMOUSEOVER="imagerep('servers', 'menu0overs')"
ONMOUSEOUT="eraseimage('servers', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Servers"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="servers" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/workstations/"
ONMOUSEOVER="imagerep('workstations', 'menu0overs')"
ONMOUSEOUT="eraseimage('workstations', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Workstations"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="workstations" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/software/"
ONMOUSEOVER="imagerep('sw', 'menu0overs')"
ONMOUSEOUT="eraseimage('sw', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Software"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="sw" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/software/"
ONMOUSEOVER="imagerep('vissys', 'menu0overs')"
ONMOUSEOUT="eraseimage('vissys', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Visualization"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="vissys" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/products/storage/"
ONMOUSEOVER="imagerep('storage', 'menu0overs')"
ONMOUSEOUT="eraseimage('storage', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Storage"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="storage" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/products/remanufactured/"
ONMOUSEOVER="imagerep('reman', 'menu0overs')"
ONMOUSEOUT="eraseimage('reman', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Remanufactured"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="reman" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/peripherals/"
ONMOUSEOVER="imagerep('peripherals', 'menu0overs')"
ONMOUSEOUT="eraseimage('peripherals', 'menu0overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Peripherals"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="peripherals" VSPACE="0" WIDTH="107" CLASS="menu"><BR CLASS="menu"></A>
</DIV>
<DIV ID="menu1"><A HREF="http://www.sgi.com/solutions/" onmouseout="clearmenus()"><IMG SRC="/images/nav/drop_sol.gif" WIDTH="110" HEIGHT="58" BORDER="0" ALT="Solutions Menu"></A></DIV>
<DIV ID="menu1overs">
<A HREF="http://www.sgi.com/manufacturing/"
ONMOUSEOVER="imagerep('man', 'menu1overs')"
ONMOUSEOUT="eraseimage('man', 'menu1overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Manufacturing"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="man" VSPACE="0" WIDTH="110" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/chembio/"
ONMOUSEOVER="imagerep('science', 'menu1overs')"
ONMOUSEOUT="eraseimage('science', 'menu1overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Sciences"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="science" VSPACE="0" WIDTH="110" CLASS="menu"><BR CLASS="menu"></A>
<!--
<A HREF="http://www.sgi.com/solutions/"
ONMOUSEOVER="imagerep('defense', 'menu1overs')"
ONMOUSEOUT="eraseimage('defense', 'menu1overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Intelligence/Defense"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="defense" VSPACE="0" WIDTH="110" CLASS="menu"><BR CLASS="menu"></A>
-->
<A HREF="http://www.sgi.com/solutions/broadband/"
ONMOUSEOVER="imagerep('telco', 'menu1overs')"
ONMOUSEOUT="eraseimage('telco', 'menu1overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Telecommunications and Media"
BORDER="0" HEIGHT="26" HSPACE="0" NAME="telco" VSPACE="0" WIDTH="110" CLASS="menu"><BR CLASS="menu"></A>
</DIV>
<DIV ID="menu2"><IMG SRC="/images/nav/drop_dev.gif" BORDER="0" WIDTH="119" HEIGHT="95" HSPACE="0" VSPACE="0" ALT="Developers Menu"></DIV>
<DIV ID="menu2overs">
<A HREF="http://www.sgi.com/developers/devtools/"
ONMOUSEOVER="imagerep('tools','menu2overs')"
ONMOUSEOUT="eraseimage('tools','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Developer Tools"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="tools" VSPACE="0" WIDTH="119" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/developers/program/"
ONMOUSEOVER="imagerep('programs','menu2overs')"
ONMOUSEOUT="eraseimage('programs','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Developer Programs"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="programs" VSPACE="0" WIDTH="119" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/developers/library/"
ONMOUSEOVER="imagerep('library','menu2overs')"
ONMOUSEOUT="eraseimage('library','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Developer Library"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="library" VSPACE="0" WIDTH="119" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/developers/marketing/"
ONMOUSEOVER="imagerep('resources','menu2overs')"
ONMOUSEOUT="eraseimage('resources','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Developer Resources"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="resources" VSPACE="0" WIDTH="119" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/developers/technology/"
ONMOUSEOVER="imagerep('opsys','menu2overs')"
ONMOUSEOUT="eraseimage('opsys','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Developer Technology"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="opsys" VSPACE="0" WIDTH="119" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/developers/oss/"
ONMOUSEOVER="imagerep('opensource','menu2overs')"
ONMOUSEOUT="eraseimage('opensource','menu2overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Open Source"
BORDER="0" HEIGHT="15" WIDTH="119" NAME="opensource" HSPACE="0" VSPACE="0" CLASS="menu"><BR CLASS="menu"></A>
</DIV>
<DIV ID="menu3"><IMG SRC="/images/nav/drop_supp.gif" BORDER="0" HEIGHT="79" HSPACE="0" VSPACE="0" WIDTH="167" ALT="Services and Support Menu"></DIV>
<DIV ID="menu3overs">
<A HREF="http://www.sgi.com/services/"
ONMOUSEOVER="imagerep('prof', 'menu3overs');"
ONMOUSEOUT="eraseimage('prof', 'menu3overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Professional Services"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="prof" VSPACE="0" WIDTH="167" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/support/patch_intro.html"
ONMOUSEOVER="imagerep('prdvty', 'menu3overs')"
ONMOUSEOUT="eraseimage('prdvty', 'menu3overs')"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Productivity Services"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="prdvty" VSPACE="0" WIDTH="167" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/support/custreg.html"
ONMOUSEOVER="imagerep('ort', 'menu3overs');"
ONMOUSEOUT="eraseimage('ort', 'menu3overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Support Services"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="ort" VSPACE="0" WIDTH="167" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/support/custeducation/"
ONMOUSEOVER="imagerep('edu', 'menu3overs');"
ONMOUSEOUT="eraseimage('edu', 'menu3overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Education Services"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="edu" VSPACE="0" WIDTH="167" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://support.sgi.com/"
ONMOUSEOVER="imagerep('online', 'menu3overs');"
ONMOUSEOUT="eraseimage('online', 'menu3overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Online Support"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="online" VSPACE="0" WIDTH="167" CLASS="menu"><BR CLASS="menu"></A>
</DIV>
<DIV ID="menu4"><A HREF="/fun/" onmouseout="clearmenus()"><IMG SRC="/images/nav/drop_fun.gif" WIDTH="116" HEIGHT="95" BORDER="0" ALT="Fun Menu"></A></DIV>
<DIV ID="menu4overs">
<A HREF="http://www.sgi.com/fun/freeware/games.html"
ONMOUSEOVER="imagerep('games', 'menu4overs');"
ONMOUSEOUT="eraseimage('games', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Games"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="games" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/fun/freeware/web.html"
ONMOUSEOVER="imagerep('webdev', 'menu4overs');"
ONMOUSEOUT="eraseimage('webdev', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Web Development"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="webdev" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/fun/freeware/software.html"
ONMOUSEOVER="imagerep('softdev', 'menu4overs');"
ONMOUSEOUT="eraseimage('softdev', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Software Development"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="softdev" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/fun/freeware/graphics.html"
ONMOUSEOVER="imagerep('graphics', 'menu4overs');"
ONMOUSEOUT="eraseimage('graphics', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Graphics"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="graphics" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://www.sgi.com/fun/freeware/sysadmin.html"
ONMOUSEOVER="imagerep('sysadmin', 'menu4overs');"
ONMOUSEOUT="eraseimage('sysadmin', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="System Administration"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="sysadmin" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
<A HREF="http://freeware.sgi.com/"
ONMOUSEOVER="imagerep('freeware', 'menu4overs');"
ONMOUSEOUT="eraseimage('freeware', 'menu4overs');"
CLASS="menu"><IMG
SRC="/images/dots/dot_clear.gif"
ALT="Freeware"
BORDER="0" HEIGHT="15" HSPACE="0" NAME="freeware" VSPACE="0" WIDTH="116" CLASS="menu"><BR CLASS="menu"></A>
</DIV>
<DIV ID="menu5overs">
<TABLE BORDER=0 BGCOLOR="#7C7F87" CELLPADDING=1 CELLSPACING=0><TR><TD>
<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="0" WIDTH="150">
<TR BGCOLOR="#7C7F87">
<TD>SGI Search</TD>
<TD ALIGN="right"><A HREF="javascript:void(0)" onClick="menuovers[5].visibility='hidden'"><IMG SRC="/images/common/srch_close_x.gif" ALT="X" BORDER=0></A></TD>
</TR>
<TR BGCOLOR="#CFCFCF">
<TD COLSPAN=2 ALIGN=CENTER>
<FORM ACTION="http://www.sgi.com/cgi-bin/surfsrch.cgi" METHOD="GET">
<INPUT TYPE="HIDDEN" NAME="cmd" VALUE="search">
<INPUT TYPE="HIDDEN" NAME="coll" VALUE="0650">
<SELECT NAME="db">
<OPTION VALUE="All" SELECTED>All of SGI
<OPTION VALUE="Hardware;Software">Products
<OPTION VALUE="Solutions">Solutions
<OPTION VALUE="Developer">Developers
<OPTION VALUE="Support">Services & Support
<OPTION VALUE="Fun">Fun
</SELECT>
<BR><BR>
<INPUT NAME="srch" SIZE="30">
<BR><NOBR>
<INPUT TYPE="submit" VALUE=" Search "> <INPUT TYPE="button" VALUE=" Cancel " onClick="menuovers[5].visibility='hidden'">
</NOBR>
</FORM>
</TD>
</TR>
</TABLE>
</TD></TR></TABLE>
</DIV>
<DIV ID="menu5"></DIV>
<SCRIPT LANGUAGE="JavaScript">
<!--
if(!isFour)document.write((navigator.appName.indexOf('Netscape'))?'</TD></TR>':'</STY'+'LE>');
//-->
</SCRIPT>
</FONT>
</TABLE>
</BODY>
</HTML>