1 # 2 # CDDL HEADER START 3 # 4 # The contents of this file are subject to the terms of the 5 # Common Development and Distribution License (the "License"). 6 # You may not use this file except in compliance with the License. 7 # 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 # or http://www.opensolaris.org/os/licensing. 10 # See the License for the specific language governing permissions 11 # and limitations under the License. 12 # 13 # When distributing Covered Code, include this CDDL HEADER in each 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 # If applicable, add the following below this CDDL HEADER, with the 16 # fields enclosed by brackets "[]" replaced with your own identifying 17 # information: Portions Copyright [yyyy] [name of copyright owner] 18 # 19 # CDDL HEADER END 20 # 21 22 # 23 # Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24 # Use is subject to license terms. 25 # 26 # ident "@(#)README 1.59 08/12/04 SMI" 27 # 28 29 ======================================================================== 30 === Java Technology based Interoperability Storage Testsuite (JIST) === 31 ======================================================================== 32 33 ************************************************************************ 34 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 35 ************************************************************************ 36 37 Java Technology based Interoperability Storage Testsuite (JIST) is 38 designed to validate ANSI T10 SCSI and Sun Microsystems, Inc ("Sun") 39 SCSI Array Standards for conformity with Sun StorEdge[tm] Open SAN 40 Architecture. 41 42 The JIST Test Suite is divided between the following Test Levels, based 43 on Sun SCSI Array Standards, mandatory and optional: 44 45 * Sun Mandatory, Shall Pass Tests 46 47 * Sun Optional, Should Pass Tests 48 49 The JIST Test Suite organizes the Test Suites and Test Cases in 50 hierarchical groupings. The Minimal Testing Requirements for 51 Non-Clustered and Clustered Products are as follows: 52 53 * Non-Clustered Configuration Components Must Complete ANSI T10 SCSI 54 Single Initiator Test Suite with Level 1 Test Level, report NO 55 Faults, and report NO Defects. (See Sun Mandatory Single Initiator 56 Test Execution) 57 58 * Clustered Configurations Components Must Complete ANSI T10 SCSI 59 Reservation Test Suite with Level 1 Test Level and report NO 60 Faults, and report NO Defects. (See Sun Mandatory Multiple 61 Initiator Test Execution) 62 63 * Fibre Channel Configured Components Must Complete ANSI T10 FCP and 64 ANSI T11 Fibre Channel Single Initiator Test Suite with Level 1 65 Test Level, report NO Faults, and report NO Defects. (See Sun 66 Mandatory Single Initiator Test Execution) 67 68 * iSCSI Configured Components Must Complete IETF IPS iSCSI Single 69 Initiator Test Suite with Level 1 Test Level, report NO Faults, 70 and report NO Defects. (See Sun Mandatory Single Initiator Test 71 Execution) 72 73 The JIST Test Suite also has utility methods to conduct additional 74 custom testing. The primary utilities are as follows: 75 76 * Accuracy Focused SCSI Write/Read/Compare Load Testing. (See 77 Write/Read/Compare Load Test Execution) 78 79 * SCSI PERSISTENT RESERVATION Removal Testing. (See Persistent 80 Reservation Removal Test Execution) 81 82 * Fibre Channel Switch Port Fault Stress Testing. (See Fibre 83 Channel Switch Port Stress Test Execution) 84 85 * SCSI & iSCSI Man-in-the-Middle Data and Network Fault Stress 86 Testing. (See JIST Agent Test Execution) 87 88 Minimum Configuration Requirements are listed in "README.CONFIG". 89 90 Please enter bugs related to the JIST Tool under BugTraq+ hierarchy in 91 the "STC_BUG*" section of the STC.INFO file. 92 93 Please direct results, questions, and comments to the mail alias listed 94 in the "STC_CONTACT" in the STC.INFO file. 95 96 97 JIST Makefile Build Procedure: 98 ======================================================================== 99 100 USAGE: /usr/ccs/bin/make clean && /usr/ccs/bin/make package 101 102 Run this as yourself from "<workspace>/usr/src/suites/storage/jist" 103 on a Solaris 9 9/04, 10, 11, or later Sparc or x64 host. This method 104 requires Sun Studio[tm] 12 or later and Sun Java[tm] 2 Standard Edition 105 (J2SE) 1.5.0, 6, or later build tools, available via local or "/ws" NFS 106 mounts. See the README.CONFIG file for more details on the Development 107 Host requirements. This method requires "$HOME/.rhosts" to allow remote 108 access. If you wish to avoid "$HOME/.rhosts" use, then simply run the 109 steps manually. 110 111 Should Prototypes & Packages be forced to rebuild? 112 Use the "make clean" command if you wish to force rebuild of all 113 packages. This is necessary if JIST Classes are added or removed since 114 the last full build. 115 116 Are any other gates referenced/required? 117 This Makefile utilizes the fcio.h header file from the ONNV Gate and 118 RFE 5029712 (PSARC 2006/063 fp(7d) FCRAW Interface). With 5029712, 119 Fibre Channel Passthru testing is possible. Without 5029712, Fibre 120 Channel Passthru testing is aborted in "lib/com/sun/jist/JIST.c". If 121 on SWAN, no changes are needed. If off SWAN, download the latest ONNV 122 source and expand under "/usr/src". 123 124 Here is the Works: 125 1. Remove previous Prototypes & Packages, if requested. 126 2. Make JIST Java Class Archive (JAR). 127 3. Make JIST Javadoc Documentation Archive (JAR). 128 4. Make JIST Native C Shared Library (SO) for SPARC or X86 Arch. 129 5. Make JIST Solaris SUNWstc-jist Package & Offplatform Tar File. 130 131 132 JIST Installation Procedure: 133 ======================================================================== 134 135 ************************************************************************ 136 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 137 ************************************************************************ 138 139 If you have previously installed SUNWstc-jist or JAVAjist or SUNWjist, 140 remove the old package with the following: 141 142 * pkgrm SUNWstc-jist 143 * pkgrm JAVAjist 144 * pkgrm SUNWjist 145 146 If you have previously installed a JIST Archive, remove the archive 147 with the following: 148 149 * rm -rf /opt/SUNWstc-jist 150 151 On Solaris hosts, install the latest JIST Package with the following: 152 153 * Download SUNWstc-jist.pkg from 154 "http://dlc.sun.com/osol/test/downloads/current/" to /tmp. 155 * pkgadd -d /tmp/SUNWstc-jist.pkg all 156 157 On non-Solaris hosts, install the latest JIST Archive with the following: 158 159 * Download SUNWstc-jist.zip from 160 "http://dlc.sun.com/osol/test/downloads/current/" to /tmp. 161 * cd /;unzip SUNWstc-jist.zip;chmod +x /opt/SUNWstc-jist/bin/jist 162 163 Proceed to Test Execution Procedures. 164 165 166 Sun Mandatory Single Initiator Test Execution: 167 ======================================================================== 168 169 ************************************************************************ 170 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 171 ************************************************************************ 172 173 Start a JIST Single Initiator Test Tree from Initiator Host: 174 175 * Become UNIX/Linux Root or Windows Administrator on Initiator Host 176 177 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 178 179 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 180 181 * Select a "Single Initiator" Test Tree and follow prompts. 182 183 Conduct additional JIST Testing or proceed to JIST Results Analysis. 184 185 186 Sun Mandatory Multiple Initiator Test Execution: 187 ======================================================================== 188 189 ************************************************************************ 190 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 191 ************************************************************************ 192 193 Start a JIST Agent for each Initiator/Target/LUN (ITL) Combination Tested: 194 195 * Become UNIX/Linux Root or Windows Administrator on Initiator Host 196 197 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 198 199 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 200 201 * Select "JIST Agent" Test Tree and follow prompts. 202 203 Start a JIST Multiple Initiator Test Tree from a Remote Host: 204 205 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 206 207 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 208 209 * Select a "Multiple Initiator" Test Tree and follow prompts. 210 211 Stop each JIST Agent started earlier by either telneting to the 212 mangement port & entering "exitall" or by entering CTRL-C where the 213 JIST Agent was started. 214 215 Conduct additional JIST Testing or proceed to JIST Results Analysis. 216 217 218 Write/Read/Compare Load Test Execution: 219 ======================================================================== 220 221 ************************************************************************ 222 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 223 ************************************************************************ 224 225 Start a JIST Write/Read/Compare Load Test Tree from Initiator Host: 226 227 * Become UNIX/Linux Root or Windows Administrator on Initiator Host 228 229 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 230 231 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 232 233 * Select a "Write/Read/Compare Load" Test Tree and follow prompts. 234 235 Conduct additional JIST Testing or proceed to JIST Results Analysis. 236 237 238 Persistent Reservation Removal Test Execution: 239 ======================================================================== 240 241 ************************************************************************ 242 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 243 ************************************************************************ 244 245 Start a JIST PERSISTENT RESERVE Clear Test Tree from Initiator Host: 246 247 * Become UNIX/Linux Root or Windows Administrator on Initiator Host 248 249 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 250 251 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 252 253 * Select a "PERSISTENT RESERVE Clear" Test Tree and follow prompts. 254 255 Conduct additional JIST Testing or proceed to JIST Results Analysis. 256 257 258 Fibre Channel Switch Port Stress Test Execution: 259 ======================================================================== 260 261 ************************************************************************ 262 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 263 ************************************************************************ 264 265 Start a JIST Fibre Channel Switch Port Stress Test Tree from Any Host: 266 267 * Become UNIX/Linux Root or Windows Administrator on Any Host 268 269 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 270 271 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 272 273 * Select a "Fibre Channel Switch Port Stress" Test Tree and follow 274 prompts. 275 276 Conduct additional JIST Testing or proceed to JIST Results Analysis. 277 278 279 JIST Agent Test Execution: 280 ======================================================================== 281 282 ************************************************************************ 283 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 284 ************************************************************************ 285 286 Start a JIST Agent for a Initiator/Target/LUN (ITL) Combination: 287 288 * Become UNIX/Linux Root or Windows Administrator on Initiator Host 289 290 * On UNIX/Linux, execute "/opt/SUNWstc-jist/bin/jist". 291 292 * On Windows, execute "cd \opt\jist\bin" and then ".\jist.bat". 293 294 * Select a "JIST Agent" Test Tree and follow prompts. 295 296 Once started, a JIST Agent can be accessed by telneting to the 297 management port. Once connected, a "JIST Agent: " prompt indicates 298 the JIST Agent is ready to take the next request. JIST Agent Requests 299 fall into 3 categories: 300 301 * Exit Current or All JIST Agent Connections. 302 303 * Execute a JIST Agent Test Tree or Leaf. 304 305 * Inject a JIST Agent Fault Condition. 306 307 Exiting the JIST Agent Connections is accomplished via the following 308 JIST Agent Requests: 309 310 * "exit" to exit the current JIST Agent Telnet connection and keep 311 the JIST Agent operational. 312 313 * "exitall" to exit all JIST Agent connections and gracefully 314 shutdown the JIST Agent. 315 316 Executing a JIST Agent Test Tree or Leaf is accomplished via the 317 following JIST Agent Request formats: 318 319 * "full.class.Name [option1=value1[,option2=value2[...]]]" to 320 execute a JIST Test Tree. An example execute ANSI T10 SCSI 321 Write/Read/Compare Load Testing with 32 block maximum Transfer 322 Length via 16 threads is 323 "com.sun.jist.scsi.test.SBCrwStress maxTL=20,numThreads=10". 324 325 * "full.class.Name#testMethod [option1=value1[,option2=value2[...]]]" 326 to execute a JIST Test Leaf. An example to execute ANSI T10 327 SCSI INQUIRY EVPD Page 83 "Device Identifier" Test Leaf is 328 "com.sun.jist.scsi.test.SPC12Test#testPage83". 329 330 Injecting a JIST Agent Fault Condition is accomplished via the 331 following JIST Agent Request formats: 332 333 * "inject [Where[,option3=value3[...],]Return[,option4=value4[...]]" 334 to inject a Return (Modified) Condition. In this format, if 335 option3 is equal to value3 statements are true for an iSCSI PDU, 336 then the PDU is returned with modified value of option4 set to 337 value4. Multiple option=value statements can be include for either 338 following the Where or Return keywords. 339 340 * "inject [Where[,option3=value3[...],]Delete" to inject a Delete 341 Condition. This operates the same as above, except if the 342 Where statements are true, then the iSCSI PDU is removed from 343 the data stream. 344 345 * "inject [Where[,option3=value3[...],]Delay[Unit][=count]" to inject 346 a Delay Condition. This operates the same as above, except if the 347 Where statements are true, then the iSCSI PDU data streams are 348 delayed or a count of Unit Seconds. "Unit" can be any of "Sec", 349 "Milli", or "Nano". By default, the Unit is Seconds. The count 350 is a count, in Hexadecimal, of how long to delay before allowing 351 the PDUs to continue. 352 353 * "inject [Where[,option3=value3[...],]Disconnect[Unit][=count]" to 354 inject a Disconnect Condition. This operates the same as the 355 above Delay Condition, except the connection is closed after the 356 count delay. 357 358 JIST Agent Fault Condition "option" variables can be specified via 359 the following formats: 360 361 * "Offset[start[:length]]=value" to inject based on offset within 362 the iSCSI PDU. "start" and "length" specify the starting byte 363 offset and length in bytes to be verified or modified. "value" 364 is a Hexadecimal encoded byte array. This is useful for mass 365 verifications and/or modifications PDU data. Care must be taken 366 to modify offsets for Digests and other length changing parameters. 367 368 * "[protocol]VariableName=value" to inject based on JIST get/set 369 method names. "protocol" can be set to "scsi" or "iscsi" to 370 explicitly refer to SCSIData or iSCSIData values. "VariableName" 371 refers to a variable with corresponding "getVariableName" and 372 "setVariableName" methods. Any variable with these entries can 373 be modified in this manner. This method automatically handles 374 variable length offsets caused by Digests and related parameters. 375 376 Stop each JIST Agent started earlier by either telneting to the 377 mangement port & entering "exitall" or by entering CTRL-C where the 378 JIST Agent was started. 379 380 Conduct additional JIST Testing or proceed to JIST Results Analysis. 381 382 383 JIST Results Analysis: 384 ======================================================================== 385 386 ************************************************************************ 387 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 388 ************************************************************************ 389 390 JIST is composed of Tens of Thousands of Low Level Tests. To manage 391 the large number of tests, the tests are groups into Trees, Branches, 392 and Leaves. The status of the Test Tree, Test Branches, and Test Leaves 393 have increasing detail within the JIST Test Report. 394 395 JIST provides additional documentation in the "doc" subdirectory of the 396 JIST Log Directory. The JIST Log Directory defaults to "/var/tmp/JIST" 397 and be changed with the "logDir=..." parameter. This is useful when 398 multiple initiators are generating reports or for automatic report 399 archiving. The user running JIST will have to have write permissions 400 to the directory. 401 402 * To specify an alternate logging directory, execute 403 "/opt/SUNWstc-jist/bin/jist logDir=/net/host/export/jist_logs". 404 405 JIST provides a user selectable Report Detail Level setting 406 "reportLevel". JIST Report Detail Levels range from 0 to 9. If not 407 specified, the default JIST Report Detail Level is 5. This can be 408 provided as a option to the "/opt/SUNWstc-jist/bin/jist" script as follows. 409 410 * To specify level 7, execute "/opt/SUNWstc-jist/bin/jist reportLevel=7". 411 412 Here is a breakdown of the JIST Report Detail Levels. 413 414 JIST Report Detail Level 0: 415 416 * JIST Summary Report: This is the initial report to be reviewed once 417 a Test Tree completes execution. This contains summary information 418 on Test Tree Status, Test Configuration, Test Leaf Runs, Test Leaf 419 Passes, Test Leaf Faults, Test Leaf Defects, Test Leaf Bypasses, and 420 Total Execution Time. This report gives a one screen summary of the 421 test tree execution. Based on the "reportLevel" option specified, 422 additional information will be provided and linked to this report. 423 This report is called "index.html" in the report directory. 424 425 * JIST Test Leaf Runs Report: This report provides a listing of all 426 JIST Test Leaf Passes, Faults, Defects, & Bypasses in the order they 427 are executed. This is a good report to monitor during the execution 428 of a Test Tree. Based on the "reportLevel" option specified, 429 additional information will be provided in this report. This report 430 is called "total.html" in the report directory. 431 432 * JIST Test Leaf Detail Reports: This is a grouping of reports, one 433 per Test Leaf. These reports contain a 3 column table of records 434 of test execution and/or test result information. Based on the 435 "reportLevel" option specified, additional information will be 436 provided in this report. These reports are called "test###.html" 437 in the report directory, with "###" is a increasing hexadecimal 438 number. 439 440 JIST Report Detail Level 1: 441 442 * JIST Report Detail Level 0 reports. 443 444 * JIST Test Configuration Report: This is the configuration snapshot 445 of the device path being tested. This was formerly the top of the 446 JIST Report. This report is called "config.html" in the report 447 directory. 448 449 * JIST Test Report, "CONFIG" Records: Any "CONFIG" records will be 450 logged at this level. 451 452 JIST Report Detail Level 2: 453 454 * JIST Report Detail Level 1 reports. 455 456 * JIST Test Leaf Faults Report: This report provides a listing of 457 all Test Leaves ending due to a fault, such as out of memory. 458 All faults should be corrected prior to reviewing additional test 459 results. This report is called "fault.html" in the report 460 directory. 461 462 * JIST Test Report, "FAULT" Records: Any "FAULT" records will be 463 logged at this level. 464 465 JIST Report Detail Level 3: 466 467 * JIST Report Detail Level 2 reports. 468 469 * JIST Test Leaf Defects Report: This report provides a listing of 470 all Test Leaves ending with one or more defects identified, such 471 as unexpected SCSI Status value. Defects indicate design issues 472 in the test configuration and most likely require software and/or 473 hardware changes to be addressed. No faults or defects can be 474 identified to pass a Test Tree. This report is called "defect.html" 475 in the report directory. 476 477 * JIST Test Report, "DEFECT" Records: Any "DEFECT" records will be 478 logged at this level. 479 480 JIST Report Detail Level 4: 481 482 * JIST Report Detail Level 3 reports. 483 484 * JIST Test Report, "SENT" Records: This is not an additional report, 485 but rather additional detail within JIST Detail Reports. "SENT" 486 records are used to log the outgoing SCSI Command Descriptor Block 487 being sent. 488 489 JIST Report Detail Level 5: 490 491 * JIST Report Detail Level 4 reports. 492 493 * JIST Test Leaf Bypasses Report: This report provides a listing of 494 all Test Leaves ending due to an acceptable bypass condition, 495 such as bypassing Sun Optional Test Leaves during testing of Sun 496 Mandatory Test Leaves. Bypasses indicate a condition necessary for 497 the Test Leaf to execute was not present in the Test Configuration. 498 This is normally only reviewed after no faults or defects were 499 identified. This report is called "bypass.html" in the report 500 directory. 501 502 * JIST Test Report, "BYPASS" Records: Any "BYPASS" records will be 503 logged at this level. 504 505 JIST Report Detail Level 6: 506 507 * JIST Report Detail Level 5 reports. 508 509 * JIST Test Report, "DATA" and "SENSE" Records: This is not an 510 additional report, but rather additional detail within JIST Detail 511 Reports. "DATA" and "SENSE" records are used to log the resulting 512 SCSI Data Buffer and the incoming SCSI Sense Buffer related to the 513 above "SENT" record. "DATA" records are logged when SCSI Status 514 and SCSI Sense Key/ASC/ASCQ are both zero. "SENSE" records are 515 logged when either are non-zero. 516 517 JIST Report Detail Level 7: 518 519 * JIST Report Detail Level 6 reports. 520 521 * JIST Test Leaf Passes Report: This report provides a listing of 522 all Test Leaves ending without any fault, defect, or bypass 523 identified. This report is called "pass.html" in the report 524 directory. 525 526 * JIST Test Report, "PASS" Records: Any "PASS" records will be 527 logged at this level. 528 529 JIST Report Detail Level 8: 530 531 * JIST Report Detail Level 7 reports. 532 533 * JIST Test Report, Logic "DEBUG" Records: This is not an additional 534 report, but rather additional detail within JIST Detail Reports. 535 Level 8 provides JIST Debugging information in the JIST Logic 536 through JIST Remote Test layers. This level of logging is not 537 normally needed by users of JIST. 538 539 JIST Report Detail Level 9: 540 541 * JIST Report Detail Level 8 reports. 542 543 * JIST Test Report, Dispatch "DEBUG" Records: This is not an 544 additional report, but rather additional detail within JIST Detail 545 Reports. Level 9 provides the most verbose logging including 546 detailed JIST Agent Proxy Intercepts and JIST Dispatch logging. 547 This level of logging is not normally needed by users of JIST. 548 549 ************************************************************************ 550 **** WARNING : JIST DESTROYS DATA STORED ON THE TARGET DEVICE **** 551 ************************************************************************ 552