RASCSI/test/robot/Resources/rascsi_utils.resource
akuker 7c5b645c48
Created an initial suite of tests to make sure that the RaSCSI is working properly (#33)
* First cut of very simple robot tests

* Remove log files and change test to use rascsi host name instead of hard-coded IP

* Added more keywords

* Added tests to check the reported SCSI vendor, revision, model and type

* Moved the Linux (host) utilities to a different file

* Added cdrom tests

* Added cdrom tests

* Finished up cd-rom tests. All tests pass, except for Anex86 drive

Co-authored-by: akuker <akuker@gmail.com>
2020-09-10 13:06:36 -05:00

125 lines
5.6 KiB
Plaintext

*** Settings ***
Library SSHLibrary
Library Process
Library String
Resource linux_services.resource
*** Variables ***
${Rascsi_Host} rascsi.local
${Rascsi_Username} pi
${Rascsi_Password} raspberry
*** Keywords ***
Open Connection to Rascsi and Log In
Open Connection ${Rascsi_Host}
Login ${Rascsi_Username} ${Rascsi_Password}
Create Blank Rascsi Drive Image of Size ${drive_size} megabytes named ${file_name}
[Documentation] Creates an empty drive image on the Rascsi host of the specified size and file name
Execute Command dd if=/dev/zero of=/home/pi/images/${file_name} bs=1M count=${drive_size}
Delete drive image ${file_name}
[Documentation] Delete a disk drive image that was created on the raspberry pi
Remove File /home/pi/images/${file_name}
Delete all RaSCSI drive images
[Documentation] Delete all of the temporary drive images that were created on the RaSCSI host
Remove File /home/pi/images/tmp_*
Drive image ${drive_image_file} is attached as SCSI ID ${scsi_id}
[Documentation] Attaches an existing drive image to the RaSCSI
${rasctl_output}= Execute Command rasctl -i ${scsi_id} -c attach -f /home/pi/images/${drive_image_file}
log ${rasctl_output}
${rasctl_output}= Execute Command rasctl -l
log ${rasctl_output}
Rescan SCSI Bus
CD-ROM drive is attached as SCSI ID ${scsi_id}
[Documentation] Attaches a CD-ROM device (without any media) to the RaSCSI
${rasctl_output}= Execute Command rasctl -i ${scsi_id} -c attach -t cd
log ${rasctl_output}
${rasctl_output}= Execute Command rasctl -l
log ${rasctl_output}
Rescan SCSI Bus
Magneto Optical drive is attached as SCSI ID ${scsi_id}
[Documentation] Attaches a Magneto Optical device (without any media) to the RaSCSI
Execute Command rasctl -i ${scsi_id} -c attach -t mo
${rasctl_output}= Execute Command rasctl -l
log ${rasctl_output}
Rescan SCSI Bus
Detach all RaSCSI SCSI Devices
[Documentation] Send detach commands for all of the SCSI IDs to make sure that there
... aren't any left over before/after a test
FOR ${scsi_id} IN RANGE 0 7
Detach RaSCSI SCSI ID ${scsi_id}
END
Detach RaSCSI SCSI ID ${scsi_id:\d+}
[Documentation] Detaches the specified SCSI ID from Rascsi
Execute Command rasctl -c detach -i ${scsi_id}
Rasctl reports SCSI ID ${scsi_id} of type ${type:CD|MO|HD}
[Documentation] Executes rasctl and verifies that the drive is configured as the specified type
${rasctl_output}= Execute Command rasctl -l
log ${rasctl_output}
Should Contain ${rasctl_output} |${SPACE*2}${scsi_id}${SPACE}|${SPACE*2}0${SPACE}|${SPACE}SC${type}${SPACE}|
# Create a ${iso_size} megabyte ISO named ${image_name} with random data
# [Documentation] Creates a file on the RaSCSI with random data (from /dev/urandom),
# ... then creates an ISO image with that data
# Execute Command mkdir /tmp/new_iso
# Execute Command dd if=/dev/urandom of=/tmp/new_iso/data.dat bs=1M count=${iso_size}
# Execute Command genisoimage -o /home/pi/images/${image_name} /tmp/new_iso/
Insert Removable Media ${image} into SCSI ID ${scsi_id}
Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image}
${result}= Execute Command rasctl -l
Log ${result}
Removable media ${image} is inserted into SCSI ID ${scsi_id:/d+}
[Documentation] Inserts the sepecified image name into the removable media drive
Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image}
# Insert removable media ${image_name} into SCSI ID ${scsi_id:/d+}
# [Documentation] Inserts the sepecified image name into the removable media drive
# Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image_name}
Eject removable media from SCSI ID ${scsi_id:/d+}
[Documentation] Inserts the sepecified image name into the removable media drive
Execute Command rasctl -c eject -i ${scsi_id}
Checksum of Random Data File from RaSCSI
[Documentation] Calcualte the SHA signature of the random data that was generated
... on the RaSCSI host
${sha_output}= Execute Command sha512sum /tmp/new_iso/data.dat | cut -f 1
Log Checksum of the file was ${sha_output}
[Return] ${sha_output}
Get checksum of RaSCSI Image ${image_name}
[Documentation] Calculate the checksum of the disk image on the RaSCSI host
${checksum}= Execute Command md5sum /home/pi/images/${image_name} | cut -f 1 --delimiter=" "
[Return] ${checksum}
Get Size of RaSCSI Image ${image_name} in bytes
[Documentation] Return the size of the specified disk image in bytes
${size_output}= Execute Command du -b /home/pi/images/${image_name} | cut -f 1
[Return] ${size_output}
Get checksum of ${filename} from ISO ${image_name} on the RaSCSI Host
[Documentation] Extracts the specified file from the ISO, calculates the checksum
... then returns that value
${temp_dirname}= Generate Random String 10 [LETTERS]
Execute Command mkdir /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password}
Execute Command mount /home/pi/images/${image_name} /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password}
${checksum}= Execute Command md5sum /tmp/${temp_dirname}/${filename} | cut -f 1 --delimiter=" "
Execute Command umount /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password}
Execute Command rm -rf /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password}
[Return] ${checksum}