Automated test harness5909544Abstract An apparatus and method for temporarily slaving and configuring a plurality of hardware resources such as computers, microprocessor-based devices, and the like, over a network, and then emancipating the resources to operate independently. Resources or targets may be enslaved at an operating system level. A controller may configure a plurality of hardware resources such as computers, microprocessor-based devices, and the like, to operate autonomously over a network. Resources or targets may be enslaved at an operating system level, configured with commands from a controller, and emancipated to operate independently. Emancipated resources may download applications, read and write files, communicate with other devices, and otherwise operate as independent computers. Data corresponding to test instructions may be downloaded from, and data corresponding to results may be recorded and saved on, a network server by a resource operating independently. Upon completion of a test or a series of tests, a resource may again report back to a controller, be enslaved and reconfigured, and be emancipated to operate other test software. Claims What is claimed and desired to be secured by United States Letters Patent is: Description BACKGROUND
TABLE 1
__________________________________________________________________________
OPCODES FROM SCHEDULER TO RESOURCE MANAGER
INITIATED BY
FROM
OPCODE TO RETURNS TO
__________________________________________________________________________
SCH INIT.sub.--
RM 108
INIT.sub.--
SCH
110 QUEUES 230 SUCCESS 242
110
SCH INIT.sub.--
RM 108
INIT.sub.--
SCH
110 QUEUES 230 FAIL 244 110
BLD.sub.--
SCH SETUP.sub.--
RM 108
SETUP.sub.--
SCH
SUCCESS 220
110 PROGRAM 232 FAIL 248 110
BLD.sub.--
SCH SETUP.sub.--
RM 108
SETUP.sub.--
SCH
SUCCESS 220
110 PROGRAM 232 SUCCESS 246
110
BLD.sub.--
SCH SETUP.sub.--
RM 108
RESERVE.sub.--
SCH
SUCCESS 220
110 PROGRAM 232 PENDING 258
110
BLD.sub.--
SCH SETUP.sub.--
RM 108
RESERVE.sub.--
SCH
SUCCESS 220
110 PROGRAM 232 SUCCESS 260
110
TEST.sub.--
SCH CLEANUP 234
RM 108
CLEANUP.sub.--
SCH
COMPLETE 214
110 SUCCESS 250
110
TEST.sub.--
SCH CLEANUP 234
RM 108
CLEANUP.sub.--
SCH
COMPLETE 214
110 FAIL 248 110
RESOURCE.sub.--
SCH CLEANUP 234
RM 108
CLEANUP.sub.--
SCH
REBOOT 256
110 SUCCESS 250
110
RESOURCE.sub.--
SCH CLEANUP 234
RM 108
CLEANUP.sub.--
SCH
REBOOT 256
110 FAIL 248 110
LAUNCHER.sub.--
SCH CLEANUP.sub.--
RM 108
CLEANUP.sub.--
SCH
FAIL 218
110 LAUNCHER.sub.--
LAUNCHER.sub.--
110
FAIL 236 FAIL.sub.-- FAIL 268
LAUNCHER.sub.--
SCH CLEANUP.sub.--
RM 108
CLEANUP.sub.--
SCH
FAIL 218
110 LAUNCHER.sub.--
LAUNCHER.sub.-- FAIL
110
FAIL 236 .sub.--
SUCCESS 266
(LAUNCH SCH RESERVE.sub.--
RM 108
RESERVE.sub.--
SCH
ENTRY 110 REMOVE 238 REMOVE.sub.--
110
DELETED) SUCCESS 262
(LAUNCH SCH RESERVE.sub.--
RM 108
RESERVE.sub.--
SCH
ENTRY 110 REMOVE 238 REMOVE.sub.--
110
DELETED) FAIL 264
CONSOLE.sub.--
SCH EXIT 204
RM 108
EXIT 229
110
__________________________________________________________________________
One may note that no return opcodes are shown in Table 2, and thus no fifth and sixth columns. This is merely for presentation here. That is, only the opcode RESOURCE.sub.-- REBOOT 256 sent to the scheduler 110 has an associated return. The CLEANUP 234 opcode is returned to the resource manager 108.
TABLE 2
__________________________________________________________________________
OPCODES FROM RESOURCE MANAGER TO SCHEDULER
INITIATED BY FROM OPCODE TO
__________________________________________________________________________
INIT.sub.-- QUEUES 230
RM 108
INIT.sub.-- SUCCESS 242
SCH 110
INIT.sub.-- QUEUES 230
RM 108
INIT.sub.-- FAIL 244
SCH 110
SETUP.sub.-- PROGRAM 232
RM 108
SETUP.sub.-- SUCCESS 246
SCH 110
SETUP.sub.-- PROGRAM 232
RM 108
SETUP.sub.-- FAIL 248
SCH 110
CLEANUP 234 RM 108
CLEANUP.sub.-- SUCCESS 250
SCH 110
CLEANUP 234 RM 108
CLEANUP.sub.-- FAIL 252
SCH 110
(UNIDENTIFIED RM 108
INCONSISTENT.sub.--
SCH 110
OPCODE) DATA 254
(RESOURCE REBOOTED)
RM 108
RESOURCE.sub.-- REBOOT 256
SCH 110
SETUP.sub.-- PROGRAM 232
RM 108
RESERVE.sub.-- PENDING 158
SCH 110
(R.sub.-- P 158 SENT PREVIOUSLY)
RM 108
RESERVE.sub.-- SUCCESS 160
SCH 110
RESERVE.sub.-- REMOVE 238
RM 108
RESERVE.sub.-- REMOVE.sub.--
SCH 110
SUCCESS 262
RESERVE.sub.-- REMOVE 238
RM 108
RESERVE.sub.-- REMOVE.sub.--
SCH 110
FAIL 264
CLEANUP.sub.-- LAUNCHER.sub.--
RM 108
CLEANUP.sub.-- LAUNCHER.sub.--
SCH 110
FAIL 236 FAIL.sub.-- SUCCESS 266
CLEANUP.sub.-- LAUNCHER.sub.--
RM 108
CLEANUP.sub.-- LAUNCHER.sub.--
SCH 110
FAIL 236 FAIL.sub.-- FAIL 268
__________________________________________________________________________
Referring to FIG. 3, the controller 12 may operate several processes 108, 110, 112, 116, 118. In addition, each process 108, 110, 112, 116, 118 may include multiple threads. For example, the scheduler 110 may include a main thread 160 communicating with a configuration file builder thread 162, a scanner thread 164, a data base watch thread 166, and an exit thread 168. In one embodiment, the data base watch thread 166 may be incorporated, included in, the main thread 160. Similarly, the exit thread 168 may be included in the main thread 160. In general, the individual threads 162, 164, 166, 168 may be included within a main thread 160 or separated out to operate on the multi-tasking operating system 104. The scheduler 110 may be made to operate on the controller 12, providing feedback and prompts to a user in a window of a graphical user interface of the console main thread 172, providing visible output to a user on an output device 44 of the controller 12. The output device 44 may be, for example, a monitor associated with the controller 12.
TABLE 3
__________________________________________________________________________
OTHER OPCODES
INITIATED BY
FROM
OPCODE TO RETURNS TO
__________________________________________________________________________
RESERVE.sub.--
SCH SUITES.sub.--
SCH SETUP.sub.--
RM
SUCCESS 260
110 READY 121
110 PROGRAM 232
108
SCH TEST.sub.--
SCH CLEANUP 234
RM
110 COMPLETE 214
110 108
SETUP.sub.--
SCH BLD.sub.--
SCH BLD.sub.--
SCH
SUCCESS 246
110 CONFIG 224
110 SUCCESS 220
110
SETUP.sub.--
SCH BLD.sub.--
SCH BLD.sub.--
SCH
SUCCESS 246
110 CONFIG 224
110 FAIL 222 110
BLD.sub.--
SCH BLD.sub.--
SCH (LAUNCHER 112
CONFIG 224
110 SUCCESS 220
110 INITIATED)
BLD.sub.--
SCH BLD.sub.--
SCH
CONFIG 224
110 FAIL 222
110
ANY SYSTEM.sub.--
SCH
LOG 210 110
LAU LAUNCHER.sub.--
SCH
112 PASS 216
110
LAU LAUNCHER.sub.--
SCH
112 FAIL 218
110
CON CONSOLE.sub.--
SCH
116 ADDRESS 225
110
CON CONSOLE.sub.--
RM 108
116 ADDRESS 225
(USER ON
CON ADD.sub.--
RM 108
CONSOLE GUI)
116 PREFIX 226
(USER ON
CON DEL.sub.--
RM 108
CONSOLE GUI)
116 PREFIX 228
(USER ON
CON CONSOLE.sub.--
SCH
CONSOLE GUI)
116 EXIT 229
110
__________________________________________________________________________
The main thread 170 of the resource manager 108 may provide management of all the resources 18 connected to the network 16. That is, the resource manager 108 tracks all resources 18, their status, their capabilities, their physical and software limitations, and provides information regarding these resources 18 and their availability to the scheduler 110, and more particularly to the main thread 160. The console 116, although it may have multiple threads, in one embodiment presently preferred, may include a main thread 172 for implementing a graphical user interface for a user operating the controller 12. The console main thread 172 communicates to the scheduler main thread 160 and the resource manager main thread 170. By contrast, the scheduler main thread 160 and resource manager main thread 170 may communicate back and forth with one another. However, in one embodiment, the console main thread 172 may simply send out information and not receive information from the main threads 160, 170. Alternatively, other tasks and functions may be provided for or executed by the console 116. The launcher 112 may include a launcher main thread 174, and may be configured to have other threads. However, the launcher 112 may be "spawned" in multiple versions by the scheduler main thread 160. That is, the launcher 112 may be simultaneously running in more than one instantiation, to accommodate the multiple resources 18 that must be configured and run. Each of the threads 160, 162, 164, 166, 168, 170, 172, 174 may communicate with one another by a series of opcodes 180. For example, the opcodes 180 may be referred to as opcodes 180, and may be illustrated by the opcodes 182 communicating between the exit thread 168 and the main thread 160. Similarly, the opcodes 184 may communicate between the data base watch thread 166 and the main thread 160. The opcodes 186 may be passed from the scanner thread 164 to the main thread 160, while the opcodes 188 are passed from the launcher main thread 174 to the scheduler main thread 160. Similarly, the opcodes 192 pass from the scheduler 110 to the scheduler main thread 160 to the configuration file builder thread 162, the opcodes 194 pass from the configuration file builder thread 162 back to the scheduler main thread 160, the opcodes 196 pass from the console main thread 172 to the resource manager main thread 170, and the opcodes 198 pass from the console main thread 172 to the scheduler main thread 160. The opcodes 200 may pass from the scheduler main thread 160 to the resource manager main thread 170 while the opcodes 202 pass from the resource manager main thread 170 to the scheduler main thread 160. In general, each opcode 180 may have a generic opcode structure 270. In one presently preferred embodiment of an apparatus 10 in accordance with the invention, an opcode structure 270 may include three pieces of information, each comprising three long (32 bit) words. The first piece of information is an identifier 272 that may be a name, or a number that uniquely identifies a particular opcode 180. A generic pointer 274 may follow the identifier 272 and may include an address for identifying generic data that may be used by the process receiving the opcode 180. Following the generic pointer 274, a resource pointer 276 may contain a memory address associated with data stored in the memory device 32 of this controller 12, or similar devices specifically for use in identifying and managing resources 18. The purpose of a generic pointer 274 and resource pointer 276 rather than a single pointer, is to simplify logic and speed up operation. As referenced earlier, the data base watch thread 166 and the exit thread 168 may be incorporated directly into the scheduler main thread 160. Similarly, the scanner thread 164 in one embodiment of an apparatus 10 in accordance with the invention, may be incorporated into the scheduler main thread 160. However, in general, opcodes may each be made to operate similarly, or even identically. At a source thread, an opcode indicates to the source thread to reserve a memory block, that is, a specific segment of memory in a memory device such as the memory device 32. The source thread then writes the identifier 272, a generic pointer 274, and a resource pointer 276 into the reserved block of memory. The source thread then sends the address of the opcode 180 to a destination thread by writing the address to a message queue associated with the destination thread. A destination thread periodically reads all messages in a message queue associated with a destination thread. Upon reading the message received from the source thread, the destination thread receives the address of the opcode 180. The destination thread then reads the opcode in the memory block, ascertaining the identifier 272, and the pointers 274, 276. The destination thread then may move an execution pointer in the opcode associated with the thread that has received the opcode 180, and may begin executing the opcode at the designated location. Thus, the opcode identifier 272 has served to move an execution pointer within the coded executable of the destination thread. The destination thread then executes the opcode using the data pointed to by the pointers 274, 276. In certain circumstances, the destination thread may return an opcode 180 to the source thread, or to another thread in the controller 12, and particularly the controller modules 92. In one embodiment, opcodes 182 may include an EXIT 204. The data base watch thread 166 may send opcodes 184 to the scheduler main thread 160, including a POLL.sub.-- LAUNCHQ 206, a DB.sub.-- WATCH.sub.-- SIGNAL 208, and a SYSTEM.sub.-- LOG 210. The scanner thread 164 may send opcodes 186 including a SUITES.sub.-- READY 212, a TEST.sub.-- COMPLETE 214, and a SYSTEM.sub.-- LOG 210 to the main thread 160. The launcher main thread 174 of any individual launcher 112 "spawned" by the scheduler 110, may return to the scheduler main thread 160 any of the opcodes 188 including a LAUNCHER.sub.-- PASS 216, LAUNCHER.sub.-- FAIL 218, SYSTEM.sub.-- LOG 210, and others as appropriate. The configuration file builder thread 162 may send the opcodes 194 to the main thread 160, which opcodes 194 may include a BLD.sub.-- SUCCESS 220, a BLD.sub.-- FAIL 222, or SYSTEM.sub.-- LOG 210. The opcodes 194 may be sent by the configuration file builder thread 162 in response to one of the opcodes 192, which may include a BLD.sub.-- CONFIG 224 opcode. The console main thread 172 may send a CONSOLE.sub.-- ADDRESS 225 to the resource manager main thread 170. In addition, an ADD.sub.-- PREFIX 226 or DEL.sub.-- PREFIX 228 may be sent from the console main thread 172 to the resource manager main thread 170. The console main thread 172 may receive no opcodes 180 from other threads. Rather, the console main thread 172 may receive its principal direction from inputs from a graphical user interface gathering inputs from a user. The console main thread 172 does send a CONSOLE.sub.-- EXIT 229 opcode to the scheduler main thread 160, indicating that a system exit is in order. The CONSOLE.sub.-- ADDRESS 225 may also be sent from the console main thread 172 to the scheduler main thread 160. The SYSTEM.sub.-- LOG 210 may be sent by any thread to the scheduler main thread 160. The scheduler main thread 160 may send an INIT.sub.-- QUEUES 230 opcode to the resource manager main thread 170. Similarly, a SETUP.sub.-- PROGRAM 232 may be forwarded to the resource manager main thread 170, which like all main threads may be referred to as the main thread 170. A CLEANUP 234 or CLEANUP.sub.-- LAUNCHER.sub.-- FAIL 236 may be sent from the scheduler main thread 160 to the resource manager main thread 170. A RESERVE.sub.-- REMOVE 238 or an EXIT 240 may be passed from the scheduler main thread 160 to the resource manager main thread 170. In the return direction from the resource manager main thread 170 back to the scheduler main thread 160, a host of opcodes 202 may be sent, including INIT.sub.-- SUCCESS 242, INIT.sub.-- FAIL 244, SETUP.sub.-- SUCCESS 246, SETUP.sub.-- FAIL 248, CLEANUP.sub.-- SUCCESS 250, and CLEANUP.sub.-- FAIL 252. Each of the opcodes 202 provides information from the resource manager 108 to the scheduler 110 to indicate the status of a given resource 18 selected for a particular test. In addition, the resource manager main thread 170 may send INCONSISTENT.sub.-- DATA 254, RESOURCE.sub.-- REBOOT 256, RESERVE.sub.-- PENDING 258, RESERVE.sub.-- SUCCESS 260, RESERVE.sub.-- REMOVE.sub.-- SUCCESS 262, or RESERVE.sub.-- REMOVE.sub.-- FAIL 264 in response to various opcodes 200 received by the resource manager main thread 170. The resource manager main thread 170 may send a CLEAN.sub.-- UP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- SUCCESS 266 or a CLEANUP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- FAIL 268 to the scheduler main thread 160. As with other threads in communication with the scheduler 160, the resource manager main thread 170 may send a SYSTEM.sub.-- LOG 210 to the scheduler main thread 160. Referring now to FIG. 4, before returning to the definitions and further relationships illustrated in FIG. 3, the operation of a source thread 280 and a destination thread 290 are shown with respect to each other and an opcode 180 contained in the opcode structure 270 of FIG. 3. In general, any thread 150 may be regarded as a source thread 280 and any other thread 150 may be regarded as a destination thread 290. Each opcode 180 may be used by a source thread 280 as illustrated in FIG. 4. At an appropriate point in the execution of the source thread 280, the reserve memory 282 step may be executed. The effect of the reserve memory 282 may be to reserve a segment or block of memory, typically in the memory device 32 of the controller 12. The write opcode 284 step may then follow, in which the source thread 280 writes an opcode 180 including all of the elements of the opcode structure 270 to the memory block reserved by the reserve memory 282 step. After writing the identifier 272, generic pointer 274, if applicable, and resource pointer 276, as required, the source thread 280 executes a SEND.sub.-- ADDRESS 286 step. The SEND.sub.-- ADDRESS 286 step may include sending the address in the memory device 32 or other memory device to which the opcode 180 may be stored, to a message queue readable by a destination thread 290. A destination thread 290 may include an operation read address 288, that may have the effect of reading the code address written by the source thread 280 in the SEND.sub.-- ADDRESS operation 286. The destination thread 290 periodically may read the message queue. Thus, the READ.sub.-- ADDRESS 288 operation will effectively read the code address from the message queue. The destination thread 150 next may read the opcode 180 itself at the address in the memory block, as designated by the code address read in the READ.sub.-- ADDRESS operation 288. The effect of the READ opcode 292 may be to provide an identifier 272 from the opcode structure 270 of the opcode 180, which identifier 272 indicates a location for an execution pointer in the destination thread 290. The destination thread 290 then executes a move pointer operation 294 in which the execution pointer of the processor 30 may be moved to the appropriate location designated by the identifier 272. The destination thread 290 then executes 296. The executing 296 operation effectively executes the code beginning at the execution pointer designated in the MOVE.sub.-- POINTER 294 operation. The code of the destination thread 290 may have a return, or may itself write a new opcode 180 and return it to the source thread 280 or to some other thread 150. In sending a return opcode 180, the destination thread 290 may use the same operations or steps 282, 284, 286 since in such an operation, the destination thread 290 becomes the new source thread 280 for the returned opcode 180. Referring again to FIG. 3, the operational codes 180 or opcodes 180, remembering that auxiliary thread 150 such as the threads 164, 166, 168 may optionally be incorporated into the main thread 160 of the scheduler 110. It may be instructive to discuss the opcodes 180 associated with the scheduler 110. The EXIT opcode 204 initiates a scheduler 160 to signal the resource manager 108 with an EXIT opcode 240 to exit the system 10. Alternatively, the EXIT opcode 204 may be sent from within the scheduler main thread 160, or may be replaced by the CONSOLE.sub.-- EXIT opcode 229. The POLL.sub.-- LAUNCHQ 206 may be used to instruct the main thread 160 to periodically, or upon occurrence of a signalling event, poll the launch queue data base 302 for a new record 303, indicating an addition to the launch queue. The DB.sub.-- WATCH.sub.-- SIGNAL 208 opcode may be used to indicate to the main thread 160 that certain of the data bases 300 have had records 301 recently written to them. Since the apparatus 10 in one currently preferred embodiment may be queue-driven, one methodology for prompting a thread 150 to execute an instruction, may be to provide reading of data bases 300, or reading of fields in data bases written with the specific purpose of operating as flags to indicate occurrence of an awaited event or triggering event. The SYSTEM.sub.-- LOG 210 may be sent by the data base watch thread 166 to the main thread 160 to produce a message that may eventually be saved in a system log data base 310. Since the scheduler 110 manages most of the interaction between the processor 30 of the controller 12 and the data bases 300, the main thread 160 may be tasked with the operation of reporting or writing all entries into the system log data base 310. The system log data base 310 may be normally used to store reports of system errors. Thus, the SYSTEM.sub.-- LOG 210 opcode may be normally sent to the scheduler main thread 160 to report system errors. No initiation opcode 180 may be required to send the SYSTEM.sub.-- LOG 210, and no return opcode 180 need be returned in reply or as a direct result. The SUITES.sub.-- READY 212 opcode may be sent to the scheduler main thread 160 when a test is ready for running on a resource 18. The SUITES.sub.-- READY 212 may also be sent as a result of a RESERVE.sub.-- SUCCESS 260 opcode received. Thus, the main thread 160 may typically receive the SUITES.sub.-- READY 212 opcode, and may actually initiate it within the main thread 160 in response to a RESERVE.sub.-- SUCCESS 260 initiation opcode 180 received from the resource manager 108. The scheduler main thread 160 may send a SETUP.sub.-- PROGRAM 232 return opcode to the resource manager main thread 170. The TEST.sub.-- COMPLETE 214 opcode may be sent when the scheduler 110, and more particularly the scanner thread 164 has detected that a test has completed running. Thus, no initiation opcode 180 may be required, but the main thread 160 may then send, in response, or as a result, a CLEANUP 234 return opcode to the resource manager main thread 170. The LAUNCHER.sub.-- PASS 216 opcode may be returned by a launcher main thread 174 to the scheduler 110, and more particularly to the scheduler main thread 160 when a test has been successfully launched. A successful launch of a test 305 indicates that the launcher 112 was able to configure a resource 18, also referred to as a target 18 or target resource 18, at an operating system level, and the subject resource 18 has successfully loaded the test program and the necessary data. The test 305 is therefore running. No initiation opcode 180 may be required for the LAUNCHER.sub.-- PASS 216, but the launcher 112 is itself "spawned" by the scheduler main thread 160, which may be itself an initiating event. No return opcode 180 may be necessary from the main thread 160. The LAUNCHER.sub.-- FAIL 218 may be sent by the launcher main thread 174 to the scheduler main thread 160 if a test 305 has not been successfully launched. Some reasons why a launch may fail may include the failure of a "login" command from a launcher 112 to a resource 18, failure of a "map" command to map the necessary drives, or perhaps more properly, for example, virtual drives on the storage devices 54, 64 or memory devices 52, 62, 72 of the resources 18. As discussed above, the resource 18 refers generally to all resources 18, 20, 22, and the like. The LAUNCHER.sub.-- FAIL 218 requires no initiation opcode 180, since a launcher is "spawned" by the scheduler 110. No return opcode 180 may be required. The BLD.sub.-- SUCCESS 220 may be sent from the configuration file builder thread 162 to the scheduler main thread 160 when the scheduler 110, and more specifically, the configuration file builder thread 162 has successfully organized the information necessary to run a test 305. The initiation opcode BLD.sub.-- CONFIG 224 may be first received by the configuration file builder thread 162 from the main thread 160. No return opcode 180 may be required. The receipt of the BLD.sub.-- SUCCESS 220 may be an initiating event for the scheduler main thread 160. The response by the scheduler main thread 160 may be to "spawn" a launcher 112, which will itself initiate a test 305, setting up the proper resources 18 to conduct the test 305. The BLD.sub.-- FAIL 222 opcode may be returned to the main thread 160 from the configuration file builder thread 162 when the information necessary to operate a test 305 has not been successfully organized by the configuration file builder thread 162. For example, if datafiles are not present, if required entries are not available, if a token value is not defined, if an operating system refuses to function properly, or if any flaw in logic or data, then the configuration file builder thread 162 may not be able to provide all of the configuration information needed by the launcher 112. The initiation opcode 180 may be a BLD.sub.-- CONFIG 224 opcode, but no return opcode 180 may be necessary. The BLD.sub.-- CONFIG 224 may be sent to the configuration file builder thread 162 of the scheduler 110 by the main thread 160. The function of the opcode 224 may be to compile and organize all information associated with the opcode 224 so that a launcher 112 may be "spawned" by the main thread 160, and will have all of the data necessary to run a test 305. An initiation opcode 180 for the opcode 224 may be the SETUP.sub.-- SUCCESS 246 received from the resource manager main thread 170. Thus, the resource manager main thread 170, having identified that the hardware resources 18 are available, properly equipped, and otherwise ready for employment in a test 305, sends the initiation opcode SETUP.sub.-- SUCCESS 246 to the main thread 160 of the scheduler 110. Possible return opcodes sent from the scheduler 110 to the configuration file builder thread 162 may include the BLD.sub.-- SUCCESS 220 or the BLD.sub.-- FAIL 222 opcodes. Thus, the opcodes 212, 214, 220, 222, 224 originate in a thread of the scheduler 110 and may be sent to the originating thread or another thread of the scheduler 110. The SYSTEM.sub.-- LOG 210, in contrast, may be returned by any process 106 to the scheduler main thread 160. The CONSOLE.sub.-- ADDRESS 225 may be sent by the console main thread 172 to the resource manager main thread 170. This opcode 225 may be sent during an initialization for the automated test harness 10 for the purpose of sending an address of global memory, available to all processes 106 and threads 150, to the resource manager 108, and more particularly to the main thread 170. Similarly, the CONSOLE.sub.-- ADDRESS 225 opcode may be sent from the console 116 to the scheduler 110, typically from the main thread 172 to the main thread 160. Since global memory may be used for all the data structures associated with any opcode, the block of global memory established by the CONSOLE.sub.-- ADDRESS 225 may be available to all processes 106. No initiation opcode 180 may be necessary, since the opcode 225 may be sent during the start-up phase for the automated test harness 10. Similarly, no return opcode 180 may be necessary. The main thread 172 may also send an ADD.sub.-- PREFIX 226 or a DEL.sub.-- PREFIX 228 to the resource manager main thread 170. The opcode ADD.sub.-- PREFIX 226 may be a signal to the resource manager 108 that another resource prefix should be added to a list. That is, a prefix may be an initiation opcode 180 in the name of a service advertising protocol (SAP) in a slaving program protocol. For example, a slaving program such as NCONTROL.TM. is a Novell.TM. slaving program that has been found suitable for facilitating the temporary slaving operation for setup, configuring the resource 18 through its operating system by the controller 12. After the setup operation, the resource 18 may be "emancipated," left to operate independently, loading applications and files over the network as needed by applications running on the resource 18. Thus, a prefix may be added to a SAP string by a resource manager 108 in response to the opcode 226. The resource manager 108 then uses the prefix to know which resources 18 are to be used for a given task. The resource manager 108 may handle multiple prefixes. An initiation opcode 180 is not necessarily required, although the opcode 226 may be initiated by another opcode 180. However, in one embodiment of an apparatus 10 made in accordance with the invention, a user may make a selection from a graphical user interface hosted by the console 116. A selection of the feature designated to add a prefix may be selected by a user. In response to the selection by a user, the console 116 sends the ADD.sub.-- PREFIX 226 to the scheduler 110. The DEL.sub.-- PREFIX 228 effectively instructs the resource manager 108 to cease looking for resources 18 that are advertising with the SAP prefix associated with the opcode 228. As with the ADD.sub.-- PREFIX 226, the opcode 228 has no return opcode 180. Similarly, no initiation opcode 180 may be required. However, as with the opcode 226, a selection by a user of an icon, such as a delete button, selection box, or the like presented on screen of a graphical user interface of the console 172 may be used to initiate the opcode 228. The CONSOLE.sub.-- EXIT 229 opcode may be sent to the scheduler 110 to signal a system exit. As with other opcodes 180 initiated by the console 116, the opcode 229 may be initiated by a user selection from the graphical user interface presented on a screen of a monitor associated with the console 116. Thus, no initiation opcode 180, that is opcode 180 associated with initiation, is required. Similarly, no return opcode 180 may be appropriate. The appropriate response by the scheduler 160 may be a system exit. The INIT.sub.-- QUEUES 230 may be sent by the scheduler 110 to synchronize with the resource manager 108, thus ensuring that all queues are properly set up, identified, and functioning for receiving messages for the appropriate threads 150. No initiation opcode 180 may be required, although possible return opcodes may include INIT.sub.-- SUCCESS 242 or INIT.sub.-- FAIL 244 opcodes returned by the resource manager 108. The SETUP.sub.-- PROGRAM 232 opcode sent by the scheduler 110 has the effect of requesting resources 18 needed for a test 305. The information associated with the opcode 232 identifies resource information structures identifying the nature of the needed resources 18. Thus, a "specification" of sorts may be associated with the opcode 232. An initiation opcode BLD.sub.-- SUCCESS 220 gives rise to the opcode 232. Thus, when configuration by the thread 162 is complete, the scheduler main thread 160 makes a resource request of the resource manager 108 with the opcode 232. Possible return opcodes may include SETUP.sub.-- SUCCESS 246, SETUP.sub.-- FAIL 248, RESERVE.sub.-- PENDING 258, or RESERVE.sub.-- SUCCESS 260 sent by the resource manager 108 to the scheduler 160. The CLEANUP 234 opcode may be used by the scheduler 110 to instruct the resource manager 108 to free resources 18, making those resources 18 available for use in a new test 305. This is usually done when a resource 18 has been allocated or reserved for a particular test 305 needing the capabilities of the selected resource 18. With each opcode 234, a list of information structures associated with the selected resource 18 is associated. Although information may be sent with an opcode 180, information may also be stored and pointed to by the pointers 274, 276 associated with the opcode 234. Initiation opcodes 180 giving rise to the CLEANUP 234 opcode may include TEST.sub.-- COMPLETE 214, from the scanner thread 164, or RESOURCE.sub.-- REBOOT 256 sent by the resource manager 108 in response to a reboot, typically occurring outside of the control of the automated test harness 10. Possible return opcodes 180 may include CLEANUP.sub.-- SUCCESS 250, and CLEANUP.sub.-- FAIL 252. The CLEANUP.sub.-- LAUNCHER.sub.-- FAIL 236 bears some resemblance to the CLEANUP 234 opcode. However, the opcode 236 may be sent after the scheduler 110 receives a LAUNCHER.sub.-- FAIL 218 opcode from the launcher 112. Thus, the effects are the same, although the initiation sources are different. The initiation opcode 180 for the opcode 236 may include the LAUNCHER.sub.-- FAIL 218, while possible return opcodes may include CLEANUP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- SUCCESS 266, or CLEANUP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- FAIL 268. The RESERVE.sub.-- REMOVE 238 opcode may be sent by the scheduler 110 to the resource manager 108 when an entry is deleted from the launch queued data base 302. That is, to the extent that an entry in the launch queue data base 302 has certain resources 18 reserved for the test 305 specified, those resources 18 need to be released when a test 305 is canceled. Thus, the opcode 238 instructs the resource manager 108 to release the reserve resources 18 and delete the reservation entry from any internal tables maintained by the resource manager 108. The opcode 238 may have associated with it an instance identification of a deleted entry in the launch queue data base 302. The instance identification, sometimes referred to as instance ID, may be a unique number assigned by an automated test harness 10 to each test 305 that is to be run. Thus, with each instance of a launcher 112, or of a test 305 to be run by a launcher 112, an instance ID may be assigned. Thus, any test 305 may be tracked according to its unique instance ID. Possible initiation opcodes 180 for the opcode 238 may be used, but in one embodiment of an apparatus 10 in accordance with the invention, the deletion of an entry from the launch queue data base 302 may be detected by the scheduler main thread 160 monitoring the launch queue 302. Thus, the main thread 160 may then initiate the opcode 238 upon detection of deletion of an entry. Possible return opcodes 180 may include RESERVE.sub.-- REMOVE.sub.-- SUCCESS 262 and RESERVE.sub.-- REMOVE.sub.-- FAIL 264, returned by the resource manager 108 to the scheduler 110. Although return opcodes 180 are often returned to an initiating or source thread 280, such need not be the case. A return opcode 180, in general, may be simply an output opcode 180 associated with a thread 150 operating in accordance with another received opcode 180. The EXIT 240 opcode may be sent to the resource manager 108 to signal a system exit. The initiation opcode 180 may be controlled by an exit thread 168 sending an EXIT 204 opcode to the scheduler main thread 160. However, in one presently preferred embodiment of an apparatus 10 made in accordance with the invention, all control over the EXIT 204 opcode may reside in the console 116. Thus, an appropriate initiation opcode 180 may be a CONSOLE.sub.-- EXIT 229 sent from the console main thread 170 to the scheduler main thread 160. No return opcode 180 may be required, since a resource manager 108 may be programmed to properly log off or otherwise exit all resources 18 from the system 10. The INIT.sub.-- SUCCESS 242 opcode may be sent from the resource manager 108 to the scheduler 110 to instruct the scheduler 110 to complete synchronization, thus ensuring that all queues (message queues of all threads 150) are functioning. Thus, all protocols are properly operating to synchronize messaging between the resource manager 108 and scheduler 110. Initiation opcodes 180 may include INIT.sub.-- QUEUES 230, although no return opcode 180 may be required. The INIT.sub.-- FAIL 244 opcode 180 may be sent by the resource manager 108 when initialization fails. Initiation opcodes 180 may include INIT.sub.-- QUEUES 230, although no return opcode 180 may be required, similar to the opcode 242. The SETUP.sub.-- SUCCESS 246 opcode 180 may be sent when the resource manager 108 is successful in allocating all of the resources requested by the scheduler 110 for a specified test 305. Initiation opcodes 180 may include SETUP.sub.-- PROGRAM 232 from the scheduler 110, but no return opcode 180 may be required. The SETUP.sub.-- FAIL 248 may be sent to the scheduler 110 when an error occurs with respect to information supplied with or associated with the SETUP.sub.-- PROGRAM 232 opcode 180 received by the resource manager 170. Thus if the request for information identified with a request for preparation with a test 305 is improper, the opcode 232 acts as an initiation opcode 180 for the opcode 248. The CLEANUP.sub.-- SUCCESS 250 opcode may be returned when the resource manager 108 has been successful in freeing up the necessary resources 18 identified in data associated with the CLEANUP 234 opcode. Thus, the CLEANUP 234 operates as an initiation opcode 180, although no return opcode 180 may be required. Identification of resources 18, as discussed above, may occur by specification of any or all of several parameters identifying the capacity of a resource 18 required to run a test 305. Similarly, the CLEANUP.sub.-- FAIL 252 opcode may be returned by the resource manager 108 in response to a CLEANUP 234 opcode. When the resource manager 108 is unable to free up the necessary resources 18 identified in data associated with the opcode 234, the opcode 252 may be appropriate. No return opcodes 180 may be required from the scheduler 110 in response to the opcode 252. An INCONSISTENT.sub.-- DATA 254 opcode may be sent by the resource manager 108 when an unrecognized opcode 180 is received. Theoretically, an unrecognized opcode 180 should not occur, particularly in a compiled code or in a previously debugged code. However, the opcode 254 serves as a backup, an initiation opcode 180 being any undefined opcode 180 received by the resource manager 108. No return opcode 180 may be required. A RESOURCE.sub.-- REBOOT 256 may be sent when the resource manager 108 detects that a resource 18 has been rebooted. Rebooting should not normally occur, and therefore indicates that a person or program independent of the apparatus 10 has rebooted a resource 18 that was originally logged on to the network 16 as an available resource 18 for the apparatus 10. Also, if a resource 18 has been temporarily enslaved by a controller 12, it may be unloaded (have its software removed) and then be loaded again. Thus, if the slaving software (e.g. NControl.TM.) has been unloaded from the resource 18 in question and then loaded again, the resource 18 has effectively been removed from the apparatus 10 and then replaced. The opcode 256 treats this operation as a reboot. No initiation opcode 180 may be required, since the initiating event may be an outside action, typically by a user, detected by the resource manager 108 upon polling of its resources 18. Possible return opcodes 180 sent by the scheduler 110 in response to the opcode 256 may include CLEANUP 234. The RESERVE.sub.-- PENDING 258 opcode may be sent by the resource manager 108 to the scheduler 110 if requested resources 18 are not available to the resource manager 108. The opcode 258 indicates to the scheduler 110 that the resource manager 108 will notify the scheduler 110 when the appropriate resources 18 become available to run the designated test 305. Thus, whenever the resource manager 108 has been unable to locate sufficient resources 18 having the appropriate capabilities to run a test 305, the opcode 258 may be returned. Thereafter, the resource manager 108 waits for sufficient resources 18 to become available to conduct the requested tests 305. When the resource manager 108 has previously sent a RESERVE.sub.-- PENDING 258 opcode to the scheduler 110, it may subsequently send a RESERVE.sub.-- SUCCESS 260 opcode. Thus, whereas an initiation opcode 180 of SETUP.sub.-- PROGRAM 232 may result in a RESERVE.sub.-- PENDING 258 opcode from the resource manager 108, no return opcode 180 is sent immediately. Rather, the resource manager 108 simply tracks the resources 18 in view of the pending request, and sends the opcode 260 when the proper resources 18 are available. Thus, once the resource manager 108 has "collected" sufficient resources 18, those resources 18 are designated in the data associated with the opcode 260. Thus, although no initiation opcode 180 or return opcode 180 may be required, a SETUP.sub.-- PROGRAM 232 may be regarded as a quasi-initiation opcode 180, but cannot control the timing of the opcode 260 being returned. The RESERVE.sub.-- REMOVE.sub.-- SUCCESS 262 may be sent when the resource manager 108 has been able to remove a test reservation (an entry in its table of resources 18 maintained for allocation to tests 305) associated with tests 305, from the launch queue 302. That is, when the resource manager 170 will no longer attempt to reserve resources 18 for a test 305, it may send the opcode 262 without ever devoting those resources 18 to that test 305. The initiation opcode 180 may be a RESERVE.sub.-- REMOVE 238, although no return opcode 180 may be necessary for the opcode 262 or the opcode 264. The RESERVE.sub.-- REMOVE.sub.-- FAIL 264 opcode may be sent when the resource manager 108 has been unable to remove a test reservation from the table of resources 18 maintained. Thus, the entry may never have existed, or the appropriate resources 18 may have been located and allocated previously, making the initiation opcode 180, opcode 238, unnecessary. No return opcode 180 may be required. The CLEANUP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- SUCCESS 266 may be sent when the resource manager 108 has successfully freed up those resources 18 to be allocated to a test 305 that previously failed to launch properly. Similarly, the CLEANUP.sub.-- LAUNCHER.sub.-- FAIL.sub.-- FAIL 268 opcode may be sent when the resources 18 have not been successfully freed up. Either opcode 266, 268 may be initiated by the initiation opcode CLEANUP.sub.-- LAUNCHER.sub.-- FAIL 236, and may require no return opcode 180. Several data bases 300 are associated with the data base manager 114 of the automated test harness 10. Each data base 300 may be comprised of a number of records 301, each record 301 containing some number of fields 320 for containing data. Referring now to FIGS. 5-6, the data bases 300 are designated by a reference number although it is proper to speak of a database 300 or a record 301 in the database 300 interchangeably in certain circumstances. The launch queue data base 302 stores data associated with each launch. A launch may be made by a launcher 112 "spawned" by the scheduler 110 in order to run either a test 305 (actually a test identified by a record 305) from the test data base 304, a suite 307 of tests 305, (identified by the records 307 from the suite data base 306), or a group 309 (or group identified by record 309) of tests 305, suites 307, or groups 309, from the group data base 308. After running a test 305, or a suite 307 or group 309 of tests 305, the automated test harness 10 may store the results in a launch history data base 310. Other data bases 300 or files may be filled with any information desired from a test 305. However, in general, the automated test harness 10 may run any test 305 without regard to what operations are conducted or what data may be generated by the test 305. Thus, a user may determine any number of executable files and output files for a test 305, independent of the automated test harness 10. Thus, the launch history data base 310 concerns primarily the history of the automated test harness 10 and launching and completing tests 305. To set up the automated test harness 10, certain settings may be saved in a settings data base 312. The settings data base 312 facilitates rapid set-up and reconfiguration of the automated test harness 10, including the controller 12, and any associated hardware and software. The system log data base 314 may be used to store errors encountered during attempts by the automated test harness 10 to launch and run a test 305 or tests 305. Information particular to each resource 18 in the apparatus 10 may be stored in a resource data base 316. Thus, when the resource manager 108 seeks resources 18 to run a test 305 scheduled by the scheduler 110, the resource manager 108 may make a determination of the suitability of any resource 18, based on a record 317 of the resource data base 316. Referring now to FIGS. 5-6, fields 320 in each of the data bases 300 may be configured in a variety of ways. In one presently preferred embodiment of an apparatus 10 made in accordance with the invention, the fields 320 of the launch queue may include a type 331 designating the type of launch, whether a test 305, suite 307, or group 309. A name 332 of the launch may correspond to the test name 340, suite name 361, or group name 368 as appropriate. The launcher 333 indicates the launcher 112 responsible for the test 305 in question. The status 334 may store information relative to the current status in operation of the automated test harness 10 occupied by the launch 332 in question. The priority 335 indicates a designation of importance assigned by a user. Items with lowest priority numbers, highest priority, will be launched first from first received in the launch queue 302 to last received in the launch queue 302, followed by all launches next in priority. The iterations field 336 indicates how many times an individual launch should be run. That is, one may speak of tests 305 or launches 333, but each may refer to an instance 339 corresponding to one instantiation of a launcher 112 tasked by the main thread 160 of the scheduler 110 to slave resources 18, configure those resources 18 to operate, and then emancipate those resources 18 to act in accordance with instructions obtained in consequence of the launcher 112 setting up the resources 18. Token definitions 337 may be stored in the token definitions field 337 and token files may be identified in the token files field 338. Tokens are those parameters or variables replaceable during any individual operation with specific data, but defined by place holders within a code. Each record 305 in the test data base 304 may include a test name 340, a description 341, and an executable name 342. A path directing a resource 18 to the actual software to operate a test 305 may be stored at the path field 343, along with parameters 344 for a specific instance 339. Usage information between a programmer and a user may be stored at field 345, while a wrapper name, indicating the designation of a test 305, may be stored in 346. Network dependencies, including types of networks and protocols may be stored in the network dependencies field 347. The type of the controller 12 may be stored at master resource types 348, while resource 18 types may be identified at slave resource types 349. A server 24 may be designated by the server 350 field, whereas the context 351, user 352, and password 353 may be filled with individualized information particular to a user and testing scenario. The drive mapping 354 field may enable additional drives to be mapped on a computer such as a controller 12 or server 24 on a network 16. The files to tokenize 355 allows each token in a user-specified file to be replaced with a specified value defined elsewhere and stored in memory device 32. The instance 356 may be a unique serial number assigned to each test name 340 and peculiar to the particular instantiation of that test name 340 by a launcher 112. Similarly, each suite 307 may have a suite name 361, also referred to simply as a name 361, in the name field 361. A text description may be provided in the description field 362, along with instructions for usage in the usage field 363. The individual responsible, typically a user, and possible a directing individual requesting certain testing, may be identified as a contact in the contact field 364. All test names 340 that are included within a suite 361 may be listed, separated by some delimiter, in the test list field 365. The number of tests 305 may be input in number tests field 366, or the number of tests 305 may simply be determined automatically by the coding for reading the delimiters in the test list field 365. To the extent that certain code may be tokenized, a token file path field 367 may be filled with information to direct a resource 18 to the proper token files to fill in dummy variables. Each group 309 of tests 305, group 309 of suites 307, or group 309 of groups 309, may be assigned a group name in the group name field 368. A description, such as a textual description may be stored in the description field 369. A contact or responsible individual may be identified in the entered by field 370, while usage instructions may be stored in the usage field 371. Similar to the test data base 304 and suite data base 306, token files may be identified in a token file field 372. Since, unlike the test data base 304 and suite data base 306, the group data base 308 may accept any type of testing grouping, a member type, whether a test 305, suite 307, or group 309, within a group name 368 may be identified in the member type field 373. A name, such as a test name 340, suite name 361, or group name 368, from a test 305, suite 307, or group 309, respectively, associated with the group name 368 in question, may be stored in the member main field 374. A priority may be assigned by a user in the priority field 375, and a group 309 may be repeated, just as a test 305 or suite 307 may be repeated, some number of iterations designated in the iterations field 376. Parameters to be passed may be stored in the parameters field 378, while the instance number unique to the group name 368 and its instantiation by the launcher 112 may be identified by an instance field 379. The instance fields 339, 356, and 379 may be used as indices to associate any testing instantiation with the test data and any record 311 in the launch history data base 310. The launch history data base 310 may include a launch time set by a clock, and recorded in a launch time field 381, as well as a most recent time in which the record 311 of the data base 310 in question was last updated or stored in an update time field 382. With each instantiation of a launch by the launcher 112, a type may be stored in the type field 384 and a name in the name field 385, corresponding to the type (test 305, suite 307, group 309) and the name 340, 361, 368 corresponding thereto in the name field 385. The corresponding instance 356, 377, 379 may be stored in the instance field 386. Thus, the launch data base 302 may be indexed to the individual test 305, suite 307, or group 309, as is the launch history data base 310. The status field 387 may be used to store information regarding the status of the launch being recorded, while the data field 388 may be used to gather other data pertinent to the individual launch. The automated test harness data base 312, also referred to as the ATH data base 312, may be used to specify particular, standardized, configurations of the automated test harness 10. Each record 313 of the ATH data base 312 may include a name field 391 for identifying a standardized setup configuration, an automated test harness server identifier in the ATH server field 392, the path in an ATH path field 393, with a test directory or subdirectory for the location of executables associated with a test 305 stored in the test directory field 394. The path to the databases 300 may be specified in the DB manager path field 395, while a text editor of choice may be specified by a user or for a user in the text editor field 396 to enable modification of coding, comments, and other text strings by an appropriate engine. The system log data base 314 may contain various error messages. In general, however, a message information field 397 may contain the text of a message or additional de-bugging information relating to possible sources of a message, or both. The reported by field 398 may store information regarding a process 106 or a hardware resource 18 responsible for generating a particular error message. The resources 18 may be specified in substantial detail. Similarly, any particular testing set-up may be provided with a specification for resources 18 according to any or all fields 320 in the resource data base 316. The resource data base 316 may contain information regarding the automated test harness 10, in general. However, in one embodiment of the apparatus 10 made in accordance with the invention, the resource database 316 contains information touching configuration of the hardware suite employed in the resources 18, and, optionally, the server 24. In addition, certain other information, such as specifications related to peripheral equipment attached to a resource 18, may be significant to an individual laboratory using the automated test harness 10. General information concerning the automated test harness 10 may include a location field 402 for specifying a geographical location such as a laboratory room number or other geographical identifier. A node address field 404 may store the actual network node address of the controller 12 on the network 16. The status field 406 may identify the state of readiness or configuration, while the prefix field 408 may contain a prefix for uniquely identifying files pertaining to the automated test harness. The operating system type field 410 may contain information regarding the particular operating system type associated with a controller 12, or may be made to list a number of operating systems that may be hosted by the controller 12. The instance field 412 may temporarily contain one of the instances from an instance field 356, 377, 379 associated with a testing regimen associated with a resource 18 identified by a record 317 in the data base 316. Thus, the instance field 412 does not contain a permanently associated number unique to a resource 18, but rather the designation of the current instance to which the resource 18 is dedicated. Each of the data bases 302, 304, 306, 308, 310, 312, 314, 316 has associated with it a series of individual records 303, 305, 307, 309, 311, 313, 315, 317, respectively. Each record 303, 305, 307, 309, 311, 313, 315, 317 has associated with it a plurality of fields 320. Related to the hardware of a resource 18 may be the brand field 414 identifying the actual brand name of the resource 18. The CPU field 416 and the speed field 418 in the record 317 of the resource data base 316 identify exactly the CPU identifying number or name and the speed or megahertz at which the processor 70 of the resource 18 operates. The drive size field 422 and the drive size field 424 may identify the size and megabytes of hard drives associated with the resource 18. Topology field 426 identified the topology discussed above under which a resource 18 may be connected to the network 16, while the net card field 428 identifies the type of network card 14C, 14B, 14E associated with a particular resource 18. The IPX backbone field 430 may be the identifier for the network protocol used by the automated test harness 10 for communicating over an internetwork through a router 25 connecting the network 16 to an internetwork 17 (refer to FIG. 1). The IPX internal field 432 and IP internal field 434 may contain identifying numbers, names, or other strings to identify the protocols used within the automated test harness 10 over the network 26 between the network cards 14A, 14B, 14C, 14D, 14E, 14F. IPX is a potential protocol that has been used in various networks, and indicates in general the network protocol of the network 16. Similarly, the IP internal field 434 relates to the internetwork protocol and may be replaced by some other protocol as appropriate. Relating to the software suite of the automated test harness 10, the function field 436 may contain data relating to software that may be or has been organically hosted on a resource 18. The OS type field 438 and OS version field 440 identify the operating system type as well as the current version number hosted by each resource 18. For some resources 18, operating system types may be changed readily, in which event a second OS field 442 and second OS version field 444 may be used to store information relating to a second operating system under which a resource 18 may operate. Other information that may be pertinent to a laboratory or organization operating an automated test harness 10 may include a capital asset number field 446 for containing a capital inventory number such as is assigned by most companies in controlling capital assets. Similarly, a machine serial number may be stored in a serial number field 448, while the bus type may be identified in a bus type field 450 and the video card type and drive controller may be designated in a video card field 452 and drive controller field 454. Alternate topology may be designated by another topology field 456, while an additional network card 14 may be hosted in certain types of systems, such as a wireless card and a wired card, one of which may be a default card. Thus, a net card field 458 may be used to designate an additional network card 14, associated with a resource 18, or an alternative network card 14. Similarly, a network backbone protocol for the network 16 or internetwork 17 may be designated in the IPX back field 460 and the IP back field 462, respectively. Similarly, the data link layer addressing information associated with the MAC-LAYER protocols according to the International Organization for Standardization Open Systems Interconnection model (ISO/OSI) model may be designated in a MAC back field 464. The software associated with the slaving model 446 for slaving the operating system 144 of a resource 18 to the controller 12 of the automated test harness 10, may be specified in a slave type field 466. Other fields may be created in records 303-317 in the data bases 302-316, respectively, or other new data bases or records may be created as convenient. However, in one embodiment of an apparatus 10 made in accordance with the invention, the foregoing fields 320, records 303-317, and data bases 302-316 may be used to identify data determined to be useful in operating an automated test harness 10. From the above discussion, it will be appreciated that the present invention provides an apparatus and method for temporarily slaving a resource 18 or target computer 18 to a controller 12, during which event the controller 12 operates as a command line controller communicating with the operating system of the resource 18 to configure the resource 18, and after which the resource 18 may load and run software for conducting tests independently. The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative, and not restrictive. The scope of the invention is, therefore, indicated by the appended claims, rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
|
| ||||||||||
