summaryrefslogtreecommitdiff
path: root/README.FIRST
blob: 4e31f220b6403a7b5331685dfda3e89dc0afe4ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
SCCS: @(#)README.FIRST	1.3 99/09/07 TET release 3.3

TET3 is the latest version of the Test Environment Toolkit.
This is an UNSUPPORTED  source release.

See http://tetworks.opengroup.org for more information

For quick installation instructions see below.

For full  documentation refer to the TETware 3.3 documentation
available on http://tetworks.opengroup.org/docs.html

Please note that TET3.3 does not include support
for Microsoft Windows NT, Windows 95 or Java - that support
is only included in the supported TETware releases.



Quick Start for Installation.
-----------------------------

Typical installation is as follows:

Install a .profile for the test suite user
Example:
        TET_ROOT=/home/tet
        PATH=$PATH:$TET_ROOT/bin
        export TET_ROOT PATH 

To configure TET3
	cd $TET_ROOT
	sh configure -t lite   # for TETware lite
	cd src
	make install    
(the final command below is not necessary)
	make compat  # for backwards compatibility for include directories
	
If the build fails check the makefiles in src/defines

Note: some Make utilities may have trouble with the include directive,
this is a known problem on BSDI systems. In this case use GNU Make
(gmake). Version 3.75 and higher is known to work.



New features in this release
----------------------------

The following features appear for the first time in this release of TETware:

   + Support is provided to enable shared versions of the C API libraries to
     be built.  The shared library schemes that are supported on UNIX systems
     are described in the chapter entitled ``Support for shared API
     libraries'' in the TETware Installation Guide for UNIX Operating Systems.

     Information regarding the use of shared API libraries is presented in the
     chapter entitled ``Using shared API libraries'' in the TETware
     Programmers Guide.


 + A document has been added to the TETware document set; its title is
     TETware Knowledge Base.  It contains information extracted from replies
     to requests that have been handled by the TETware support service.  An
     HTML version of this document is included in the distribution in addition
     to the usual PostScript version.

   + A shell script exec tool has been added to the distribution which enables
     user interaction with test cases when Distributed TETware is used.  The
     name of this tool is tet_start and it is described in the chapter
     entitled ``Interacting with test cases in Distributed TETware'' in the
     TETware User Guide.

   + It is now possible to specify tccd's well-known port number in the
     systems file when Distributed TETware is built to use the socket network
     interface.  Thus it is possible to have tccd listening on different port
     numbers on different systems, or to have several instances of tccd
     running with different options on a particular system.

   + Support for multiple network interfaces has been added when Distributed
     TETware is built to use the socket interface.  This support is provided
     through the TET_LOCALHOST distributed configuration variable.

     Note:  The circumstances under which you might need to specify
           TET_LOCALHOST are rare when Distributed TETware is built to use the
           socket interface. Do not specify this variable unless you really
           need it.

   + A keyword %include has been added to the scenario language.  This keyword
     can be used in a scenario file in much the same way as #include is used
     in a C program.

    Note that the %include keyword provides different functionality from that
    provided by the :include: scenario directive.

   + A configuration variable expansion mechanism has been added to tcc.  This
     feature is described in the section entitled ``Configuration variable
     expansion'' in the TETware Programmers Guide.



   + It is now possible to specify a number range with the :remote: and
     :distributed: scenario directives.

   + The maximum number of test cases that tcc can process in parallel has
     been increased from 26 to 676.



   + New makefile variables have been introduced to provide a finer degree of
     control over the specification of compiler options when the Thread-safe
     APIs are built.  The names of these variables are TET_THR_CDEFS and
     DTET_THR_CDEFS, and they are described in the section entitled ``Support
     for Threads'' in the TETware Installation Guide for UNIX Operating
     Systems.

   + A command-line option has been added to tcc.  When tcc is invoked with
     the -V option, it prints out version information and exits.

   + A shell script called configure has been added to the distribution in the
     tet-root directory.  On platforms for which a suitable defines.mk file is
     provided in the distribution this script automates the tasks that must be
     performed before TETware can be built.

   + A shell script called sigtool has been added to the distribution in the
     tet-root/src/helpers directory.  This script is useful when preparing to
     build TETware on a platform for which no defines.mk file is provided in
     the distribution.  The function of this script is to generate values for
     makefile variables that must be specified for use when the Shell APIs are
     built.

   + The header files inc/tet3/tet_api.h and inc/tet3/tet_jrnl.h are now
     protected against multiple inclusion.

   + The Korn Shell API has been updated to work with ksh93.

   + A number of problems reported after the previous TETware release have
     been fixed.  All the source code patches issued since the last TETware
     release have been incorporated into this release.

   + The documentation has been revised and updated.






===========================================================================
Problems fixed since the last release


The following problems have been fixed since the last TETware release:

   + When a test purpose failed to register a result in Distributed TETware,
     the result generated by the API was UNRESOLVED instead of NORESULT.

   + When the underlying call to execve() failed in a call to tet_spawn() on a
     UNIX system, the error condition was not returned to the process that
     called tet_spawn().




   + When remote (non-distributed) test cases were processed on more than one
     system, the test cases on the second and subsequent systems did not print
     TCM Start, IC Start and IC End messages to the journal, and a call to
     tet_result() failed with an ER_DONE error.

   + When a ^scenario-name appeared within the scope of a :distributed:
     scenario directive, test cases in the scenario referenced by scenario-
     name were unable to synchronise with each other.

   + Under certain circumstances it was possible for tcc to terminate with a
     memory fault when removing the temporary directory after processing a
     test case in execute mode.

   + When the TET_RUN environment variable was specified, tcc attempted to
     create a file with a garbage name on some platforms.

   + When tcc processed a test case in execute mode with TET_EXEC_IN_PLACE set
     to False, the test case was copied to a location immediately below the
     temporary directory and executed from there rather than to a location
     below the temporary directory which included the path name of the test
     case relative to the test suite root directory.  Thus it was not possible
     for a test case to use the tet_pname variable in the C API to determine
     its full path name relative to the test suite root directory.

   + The thread cleanup code in the Thread-safe API assumed that a thread ID
     would not be re-used by the implementation immediately after the
     corresponding thread had been joined.  This caused problems on threads
     implementations where this assumption is not true.

   + If none of the test cases within the scope of a :timed_loop: directive
     can be built, the loop is effectively empty during execute mode.  Under
     these circumstances, tcc -be would thrash when in execute mode (possibly
     generating huge volumes of journal output).

   + There was a name space clash when building the Thread-safe APIs on some
     platforms which support both UI threads and POSIX threads.

   + If a locking failure prevented tcc -be from building a test case, tcc
     still attempted to execute the test case that could not be built.

   + There were a few references in the code to the non-standard interfaces
     sys_errlist and sys_nerr.  The functions that referred to these symbols
     have been re-written to make calls to strerror() instead.

   + Descriptions of compiler options used when building Distributed TETware
     to use XTI were missing from the TETware Installation Guide for UNIX
     Operating Systems.

   + In Distributed TETware, if a configuration variable exchange between the
     local system and a remote system failed because the related configuration
     file was missing on the remote system, the error message printed by tcc
     was not particularly useful.  The error message now states that the
     remote configuration file could not be opened.

   + A feature of the Linux implementation of getopt() caused tcc to terminate
     with a memory fault when tcc was invoked in rerun or resume mode.  The
     code that calls getopt() has been changed to work around this feature.

   + The -I option was missing in tcc's usage message.



Other problems fixed:

Problem:
When TET_EXEC_IN_PLACE=false, tcc/tccd copies the contents of the test
case execution directory to a location below the temporary directory.
During this processing the code attempts to detect a recursive copy.
This code incorrectly reports a recursive copy when the source directory
name is an initial substring of the destination directory name.

Fixed.

Files changed:
src/tet3/dtet2lib/fcopy.c	1.14

------------------------------------------------------------------------
Problem:
On UNIX systems, tet_eaccess() doesn't check group access permissions
w.r.t. the supplementary groups list.

Fixed.

Files changed:
src/tet3/dtet2lib/eaccess.c	1.12
src/tet3/dtet2lib/shared.mk	1.14

------------------------------------------------------------------------
Problem:
tccd dies on RedHat Linux while performing a configuration variable
exchange with tcc.

Analysis:
When tcc sends the result code file to tccd, the file gets closed twice
in tccd.
It seems that the glibc version of fclose(fp) frees the area at *fp.
This causes problems with the malloc subsystem when fclose() is called a
second time.

Fixed.

Files changed:
src/tet3/servlib/fio.c          1.7

------------------------------------------------------------------------
Problem:
If a test case changes the system time, this can sometimes confuse the
timeout mechanism in tcc's execution engine.
When this happens, tcc fails with an ASSERT error.

Fix:
Instead of checking the delay with ASSERT(), just change it so that it
is within the expected range.

Files changed:
src/tet3/tcc/scenario.c		1.8

------------------------------------------------------------------------
Enhancement:
Added user-contributed defines.mk files for DYNIX/ptx, Solaris 2.7, BSDI.
Enhanced configure and GuessOS to recognise these systems and choose the
appropriate defines.mk file.

Originally these files were written by their contributors for use with
the TETware 3.2 makefile scheme.
The makefile scheme changed between release 3.2 and release 3.3.
The contributed files have been modified for use with the 3.3 makefile
scheme but haven't been tested yet.

Files changed:
configure                       1.9
src/helpers/GuessOS             1.3

New files:
src/defines/UNTESTED/bsdi.mk    1.1
src/defines/UNTESTED/dynix.mk   1.1
src/defines/UNTESTED/solaris7.mk        1.1

Problem:
There is no makefile target to remove the compatibility links that are
installed below {inc|lib}/{dtet2|posix_c} by 'make compat'.

Fix:
Added new target: compat_clean
The following commands can now be used to remove the compatibility links
that are installed by 'make compat':

	cd $TET_ROOT/src
	make compat_clean

Note:
As with make compat, make compat_clean is not supported on Win32 systems.

Files changed:
src/makefile		1.7

------------------------------------------------------------------------
Problem:
'tcc -i results-dir' can overwrite an existing journal file in
results-dir.

Fixed.

Files changed:
src/tet3/tcc/journal.c	1.12

------------------------------------------------------------------------
Problem:
tcm/ictp.c needs <string.h> when building TETware-Lite.

Fixed.

Files changed:
src/tet3/tcm/ictp.c	1.22

------------------------------------------------------------------------
Problem:
In TETware-Lite, expanded configuration variables are not visible to
test cases.

The Lite version of tcc passes the master configs to a test case.
Since configuration variable expansion is performed on the per-system
configurations, the test case only sees the unexpanded variables.

Fix:
Write the per-system configurations for the local system to the
TET_CONFIG file(s) instead of the master configurations.

Files changed:
src/tet3/tcc/config.c	1.12

------------------------------------------------------------------------
Problem:
Korn Shell API fails with EBADF error when used with ksh 93.

This is due to a bug in ksh 93.
When a numbered file descriptor is closed in a subshell (i.e., a
sequence of commands enclosed in parentheses) this has the effect of
closing the file descriptor in the parent shell as well.
Previous versions of ksh did not contain this bug.

The TCM main loop reads IC numbers from fd 3.
Each test purpose defined in the IC list is executed in a subshell.
If the test purpose also manipulates fd 3 (as does the SHELL-API demo),
it upsets the execution of the main loop when ksh93 is used.

Workaround:
The main IC loop has been recoded to eliminate the use of numbered file
descriptors in the parent shell.


Files changed:
src/ksh/api/tcm.ksh	1.6

------------------------------------------------------------------------
Enhancement:
Added support for FreeBSD.

Note:
This enhancement based on information kindly supplied by someone at
freebsd.org.
It has not been tested by the TETware development team at this time.

Files changed:
configure			1.8
src/defines/UNTESTED/freebsd.mk	1.1
src/tet3/inc/tetdir.h		1.3
src/tet3/tcclib/lsdir.c		1.3