def main(): with MockSCSI(MockDevice(spc)) as s: # cdb for standard page request i = s.inquiry(alloclen=128) cdb = i.cdb assert cdb[0] == s.device.opcodes.INQUIRY.value assert cdb[1:3] == bytearray(2) assert scsi_ba_to_int(cdb[3:5]) == 128 assert cdb[5] == 0 cdb = i.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.INQUIRY.value assert cdb['evpd'] == 0 assert cdb['page_code'] == 0 assert cdb['alloc_len'] == 128 d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb)) assert d == cdb # supported vpd pages i = s.inquiry(evpd=1, page_code=0x88, alloclen=300) cdb = i.cdb assert cdb[0] == s.device.opcodes.INQUIRY.value assert cdb[1] == 0x01 assert cdb[2] == 0x88 assert scsi_ba_to_int(cdb[3:5]) == 300 assert cdb[5] == 0 cdb = i.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.INQUIRY.value assert cdb['evpd'] == 1 assert cdb['page_code'] == 0x88 assert cdb['alloc_len'] == 300 d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: # cdb for SMC: ReadElementStatus r = s.readelementstatus( 300, 700, element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE, voltag=1, curdata=1, dvcid=1) cdb = r.cdb assert cdb[0] == s.device.opcodes.READ_ELEMENT_STATUS.value assert cdb[1] == 0x10 | READELEMENTSTATUS.ELEMENT_TYPE.STORAGE assert scsi_ba_to_int(cdb[2:4]) == 300 assert scsi_ba_to_int(cdb[4:6]) == 700 assert cdb[6] == 0x03 assert scsi_ba_to_int(cdb[7:10]) == 16384 cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.READ_ELEMENT_STATUS.value assert cdb['voltag'] == 1 assert cdb['element_type'] == READELEMENTSTATUS.ELEMENT_TYPE.STORAGE assert cdb['starting_element_address'] == 300 assert cdb['num_elements'] == 700 assert cdb['curdata'] == 1 assert cdb['dvcid'] == 1 assert cdb['alloc_len'] == 16384 d = ReadElementStatus.unmarshall_cdb( ReadElementStatus.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockReadCapacity10(sbc)) as s: i = s.readcapacity10().result assert i['returned_lba'] == 65536 assert i['block_length'] == 4096 d = ReadCapacity10.unmarshall_datain(ReadCapacity10.marshall_datain(i)) assert d == i
def main(): with MockSCSI(MockDevice(smc)) as s: r = s.initializeelementstatus() cdb = r.cdb assert cdb[0] == s.device.opcodes.INITIALIZE_ELEMENT_STATUS.value cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.INITIALIZE_ELEMENT_STATUS.value d = InitializeElementStatus.unmarshall_cdb(InitializeElementStatus.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(sbc)) as s: r = s.readcapacity10() cdb = r.cdb assert cdb[0] == s.device.opcodes.READ_CAPACITY_10.value assert cdb[1:10] == bytearray(9) cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.READ_CAPACITY_10.value d = ReadCapacity10.unmarshall_cdb(ReadCapacity10.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: m = s.preventallowmediumremoval(prevent=3) cdb = m.cdb assert cdb[0] == s.device.opcodes.PREVENT_ALLOW_MEDIUM_REMOVAL.value assert cdb[4] == 0x03 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.PREVENT_ALLOW_MEDIUM_REMOVAL.value assert cdb['prevent'] == 3 d = PreventAllowMediumRemoval.unmarshall_cdb(PreventAllowMediumRemoval.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockGetLBAStatus(sbc)) as s: i = s.getlbastatus(0).result assert len(i['lbas']) == 2 assert i['lbas'][0]['lba'] == 1023 assert i['lbas'][0]['num_blocks'] == 27 assert i['lbas'][0]['p_status'] == P_STATUS.MAPPED assert i['lbas'][1]['lba'] == 200000 assert i['lbas'][1]['num_blocks'] == 9999 assert i['lbas'][1]['p_status'] == P_STATUS.DEALLOCATED d = GetLBAStatus.unmarshall_datain(GetLBAStatus.marshall_datain(i)) assert d == i
def main(): with MockSCSI(MockDevice(smc)) as s: # cdb for SMC: ElementAddressAssignment m = s.modesense10( page_code=MODESENSE10.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT) cdb = m.cdb assert cdb[0] == s.device.opcodes.MODE_SENSE_10.value assert cdb[1] == 0 assert cdb[2] == MODESENSE10.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT assert cdb[3] == 0 assert cdb[4:6] == bytearray(2) assert scsi_ba_to_int(cdb[7:9]) == 96 assert cdb[9] == 0 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.MODE_SENSE_10.value assert cdb['dbd'] == 0 assert cdb['llbaa'] == 0 assert cdb[ 'page_code'] == MODESENSE10.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT assert cdb['pc'] == 0 assert cdb['sub_page_code'] == 0 assert cdb['alloc_len'] == 96 d = ModeSense10.unmarshall_cdb(ModeSense10.marshall_cdb(cdb)) assert d == cdb m = s.modesense10(page_code=0, sub_page_code=3, llbaa=1, dbd=1, pc=MODESENSE10.PC.DEFAULT, alloclen=90) cdb = m.cdb assert cdb[0] == s.device.opcodes.MODE_SENSE_10.value assert cdb[1] == 0x18 assert cdb[2] == MODESENSE10.PC.DEFAULT << 6 assert cdb[3] == 3 assert scsi_ba_to_int(cdb[7:9]) == 90 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.MODE_SENSE_10.value assert cdb['dbd'] == 1 assert cdb['pc'] == MODESENSE10.PC.DEFAULT assert cdb['page_code'] == 0 assert cdb['sub_page_code'] == 3 assert cdb['alloc_len'] == 90 assert cdb['llbaa'] == 1 d = ModeSense10.unmarshall_cdb(ModeSense10.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockReadCapacity16(sbc)) as s: i = s.readcapacity16().result assert i['returned_lba'] == 281474976710656 assert i['block_length'] == 4096 assert i['p_type'] == 4 assert i['prot_en'] == 1 assert i['p_i_exponent'] == 8 assert i['lbppbe'] == 8 assert i['lbpme'] == 1 assert i['lbprz'] == 1 assert i['lowest_aligned_lba'] == 8193 d = ReadCapacity16.unmarshall_datain(ReadCapacity16.marshall_datain(i)) assert d == i
def main(): with MockSCSI(MockDevice(sbc)) as s: w = s.testunitready() cdb = w.cdb assert cdb[0] == s.device.opcodes.TEST_UNIT_READY.value assert cdb[1] == 0 assert cdb[2] == 0 assert cdb[3] == 0 assert cdb[4] == 0 assert cdb[5] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.TEST_UNIT_READY.value d = TestUnitReady.unmarshall_cdb(TestUnitReady.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(sbc)) as s: s.blocksize = 512 r = s.read12(1024, 27) cdb = r.cdb assert cdb[0] == s.device.opcodes.READ_12.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:6]) == 1024 assert scsi_ba_to_int(cdb[6:10]) == 27 assert cdb[10] == 0 assert cdb[11] == 0 cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.READ_12.value assert cdb['rdprotect'] == 0 assert cdb['dpo'] == 0 assert cdb['fua'] == 0 assert cdb['rarc'] == 0 assert cdb['lba'] == 1024 assert cdb['group'] == 0 assert cdb['tl'] == 27 d = Read12.unmarshall_cdb(Read12.marshall_cdb(cdb)) assert d == cdb r = s.read12(1024, 27, rdprotect=2, dpo=1, fua=1, rarc=1, group=19) cdb = r.cdb assert cdb[0] == s.device.opcodes.READ_12.value assert cdb[1] == 0x5c assert scsi_ba_to_int(cdb[2:6]) == 1024 assert scsi_ba_to_int(cdb[6:10]) == 27 assert cdb[10] == 0x13 assert cdb[11] == 0 cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.READ_12.value assert cdb['rdprotect'] == 2 assert cdb['dpo'] == 1 assert cdb['fua'] == 1 assert cdb['rarc'] == 1 assert cdb['lba'] == 1024 assert cdb['group'] == 19 assert cdb['tl'] == 27 d = Read12.unmarshall_cdb(Read12.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(spc)) as s: # cdb for SMC: ElementAddressAssignment m = s.modesense6( page_code=MODESENSE6.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT) cdb = m.cdb assert cdb[0] == s.device.opcodes.MODE_SENSE_6.value assert cdb[1] == 0 assert cdb[2] == MODESENSE6.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT assert cdb[3] == 0 assert cdb[4] == 96 assert cdb[5] == 0 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.MODE_SENSE_6.value assert cdb['dbd'] == 0 assert cdb['pc'] == 0 assert cdb[ 'page_code'] == MODESENSE6.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT assert cdb['sub_page_code'] == 0 assert cdb['alloc_len'] == 96 d = ModeSense6.unmarshall_cdb(ModeSense6.marshall_cdb(cdb)) assert d == cdb m = s.modesense6(page_code=0, sub_page_code=3, dbd=1, pc=MODESENSE6.PC.DEFAULT, alloclen=90) cdb = m.cdb assert cdb[0] == s.device.opcodes.MODE_SENSE_6.value assert cdb[1] == 0x08 assert cdb[2] == MODESENSE6.PC.DEFAULT << 6 assert cdb[3] == 3 assert cdb[4] == 90 assert cdb[5] == 0 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.MODE_SENSE_6.value assert cdb['dbd'] == 1 assert cdb['pc'] == MODESENSE6.PC.DEFAULT assert cdb['page_code'] == 0 assert cdb['sub_page_code'] == 3 assert cdb['alloc_len'] == 90 d = ModeSense6.unmarshall_cdb(ModeSense6.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(sbc)) as s: r = s.readcapacity16(alloclen=37) cdb = r.cdb assert cdb[0] == s.device.opcodes.SBC_OPCODE_9E.value assert cdb[1] == s.device.opcodes.SBC_OPCODE_9E.serviceaction.READ_CAPACITY_16 assert cdb[2:10] == bytearray(8) assert scsi_ba_to_int(cdb[10:14]) == 37 assert cdb[14:16] == bytearray(2) cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.SBC_OPCODE_9E.value assert cdb['service_action'] == s.device.opcodes.SBC_OPCODE_9E.serviceaction.READ_CAPACITY_16 assert cdb['alloc_len'] == 37 d = ReadCapacity16.unmarshall_cdb(ReadCapacity16.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(sbc)) as s: s.blocksize = 512 data = bytearray(27 * 512) w = s.write12(1024, 27, data) cdb = w.cdb assert cdb[0] == s.device.opcodes.WRITE_12.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:6]) == 1024 assert scsi_ba_to_int(cdb[6:10]) == 27 assert cdb[10] == 0 assert cdb[11] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.WRITE_12.value assert cdb['wrprotect'] == 0 assert cdb['dpo'] == 0 assert cdb['fua'] == 0 assert cdb['lba'] == 1024 assert cdb['group'] == 0 assert cdb['tl'] == 27 d = Write12.unmarshall_cdb(Write12.marshall_cdb(cdb)) assert d == cdb w = s.write12(65536, 27, data, wrprotect=2, dpo=1, fua=1, group=19) cdb = w.cdb assert cdb[0] == s.device.opcodes.WRITE_12.value assert cdb[1] == 0x58 assert scsi_ba_to_int(cdb[2:6]) == 65536 assert scsi_ba_to_int(cdb[6:10]) == 27 assert cdb[10] == 0x13 assert cdb[11] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.WRITE_12.value assert cdb['wrprotect'] == 2 assert cdb['dpo'] == 1 assert cdb['fua'] == 1 assert cdb['lba'] == 65536 assert cdb['group'] == 19 assert cdb['tl'] == 27 d = Write12.unmarshall_cdb(Write12.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(spc)) as s: r = s.reportpriority(priority=0x00, alloclen=1112527) cdb = r.cdb assert cdb[0] == s.device.opcodes.SPC_OPCODE_A3.value assert cdb[1] == s.device.opcodes.SPC_OPCODE_A3.serviceaction.REPORT_PRIORITY assert cdb[2] == 0 assert scsi_ba_to_int(cdb[6:10]) == 1112527 assert cdb[10:12] == bytearray(2) cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.SPC_OPCODE_A3.value assert cdb['service_action'] == s.device.opcodes.SPC_OPCODE_A3.serviceaction.REPORT_PRIORITY assert cdb['priority_reported'] == 0 assert cdb['alloc_len'] == 1112527 d = ReportPriority.unmarshall_cdb(ReportPriority.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: m = s.positiontoelement(15, 32, invert=1) cdb = m.cdb assert cdb[0] == s.device.opcodes.POSITION_TO_ELEMENT.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:4]) == 15 assert scsi_ba_to_int(cdb[4:6]) == 32 assert cdb[8] == 0x01 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.POSITION_TO_ELEMENT.value assert cdb['medium_transport_address'] == 15 assert cdb['destination_address'] == 32 assert cdb['invert'] == 1 d = PositionToElement.unmarshall_cdb( PositionToElement.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(sbc)) as s: r = s.getlbastatus(19938722, alloclen=1112527) cdb = r.cdb assert cdb[0] == s.device.opcodes.SBC_OPCODE_9E.value assert cdb[ 1] == s.device.opcodes.SBC_OPCODE_9E.serviceaction.GET_LBA_STATUS assert scsi_ba_to_int(cdb[2:10]) == 19938722 assert scsi_ba_to_int(cdb[10:14]) == 1112527 assert cdb[14:16] == bytearray(2) cdb = r.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.SBC_OPCODE_9E.value assert cdb[ 'service_action'] == s.device.opcodes.SBC_OPCODE_9E.serviceaction.GET_LBA_STATUS assert cdb['lba'] == 19938722 assert cdb['alloc_len'] == 1112527 d = GetLBAStatus.unmarshall_cdb(GetLBAStatus.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: m = s.opencloseimportexportelement( 32, s.device.opcodes.OPEN_CLOSE_IMPORT_EXPORT_ELEMENT. serviceaction.CLOSE_IMPORTEXPORT_ELEMENT) cdb = m.cdb assert cdb[ 0] == s.device.opcodes.OPEN_CLOSE_IMPORT_EXPORT_ELEMENT.value assert scsi_ba_to_int(cdb[2:4]) == 32 assert cdb[4] == 0x01 cdb = m.unmarshall_cdb(cdb) assert cdb[ 'opcode'] == s.device.opcodes.OPEN_CLOSE_IMPORT_EXPORT_ELEMENT.value assert cdb['element_address'] == 32 assert cdb[ 'action_code'] == s.device.opcodes.OPEN_CLOSE_IMPORT_EXPORT_ELEMENT.serviceaction.CLOSE_IMPORTEXPORT_ELEMENT d = OpenCloseImportExportElement.unmarshall_cdb( OpenCloseImportExportElement.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: m = s.movemedium(15, 32, 64, invert=1) cdb = m.cdb assert cdb[0] == s.device.opcodes.MOVE_MEDIUM.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:4]) == 15 assert scsi_ba_to_int(cdb[4:6]) == 32 assert scsi_ba_to_int(cdb[6:8]) == 64 assert cdb[8] == 0 assert cdb[9] == 0 assert cdb[10] == 0x01 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.MOVE_MEDIUM.value assert cdb['medium_transport_address'] == 15 assert cdb['source_address'] == 32 assert cdb['destination_address'] == 64 assert cdb['invert'] == 1 d = MoveMedium.unmarshall_cdb(MoveMedium.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: r = s.initializeelementstatuswithrange(15, 3, rng=1, fast=1) cdb = r.cdb assert cdb[ 0] == s.device.opcodes.INITIALIZE_ELEMENT_STATUS_WITH_RANGE.value assert cdb[1] == 0x03 assert scsi_ba_to_int(cdb[2:4]) == 15 assert scsi_ba_to_int(cdb[6:8]) == 3 cdb = r.unmarshall_cdb(cdb) assert cdb[ 'opcode'] == s.device.opcodes.INITIALIZE_ELEMENT_STATUS_WITH_RANGE.value assert cdb['starting_element_address'] == 15 assert cdb['number_of_elements'] == 3 assert cdb['fast'] == 1 assert cdb['range'] == 1 d = InitializeElementStatusWithRange.unmarshall_cdb( InitializeElementStatusWithRange.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockDevice(smc)) as s: m = s.exchangemedium(15, 32, 64, 32, inv1=1) cdb = m.cdb assert cdb[0] == s.device.opcodes.EXCHANGE_MEDIUM.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:4]) == 15 assert scsi_ba_to_int(cdb[4:6]) == 32 assert scsi_ba_to_int(cdb[6:8]) == 64 assert scsi_ba_to_int(cdb[8:10]) == 32 assert cdb[10] == 0x02 cdb = m.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.EXCHANGE_MEDIUM.value assert cdb['medium_transport_address'] == 15 assert cdb['source_address'] == 32 assert cdb['first_destination_address'] == 64 assert cdb['second_destination_address'] == 32 assert cdb['inv1'] == 1 assert cdb['inv2'] == 0 d = ExchangeMedium.unmarshall_cdb(ExchangeMedium.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockReadElementStatus(smc)) as s: i = s.readelementstatus( 300, 700, element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE, voltag=1, curdata=1, dvcid=1).result assert i['first_element_address'] == 12 assert i['num_elements'] == 3 assert len(i['element_status_pages']) == 2 page = i['element_status_pages'][0] assert page['element_type'] == 2 assert page['pvoltag'] == 0 assert page['avoltag'] == 0 assert len(page['element_descriptors']) == 1 assert page['element_descriptors'][0]['element_address'] == 12 assert page['element_descriptors'][0]['access'] == 1 assert page['element_descriptors'][0]['except'] == 1 assert page['element_descriptors'][0]['full'] == 1 assert page['element_descriptors'][0]['additional_sense_code'] == 55 assert page['element_descriptors'][0][ 'additional_sense_code_qualifier'] == 56 assert page['element_descriptors'][0]['svalid'] == 1 assert page['element_descriptors'][0]['invert'] == 1 assert page['element_descriptors'][0]['ed'] == 1 assert page['element_descriptors'][0]['medium_type'] == 2 assert page['element_descriptors'][0][ 'source_storage_element_address'] == 27 page = i['element_status_pages'][1] assert page['element_type'] == 4 assert page['pvoltag'] == 0 assert page['avoltag'] == 0 assert len(page['element_descriptors']) == 2 assert page['element_descriptors'][0]['element_address'] == 13 assert page['element_descriptors'][0]['access'] == 1 assert page['element_descriptors'][0]['except'] == 1 assert page['element_descriptors'][0]['full'] == 0 assert page['element_descriptors'][0]['additional_sense_code'] == 55 assert page['element_descriptors'][0][ 'additional_sense_code_qualifier'] == 56 assert page['element_descriptors'][0]['svalid'] == 1 assert page['element_descriptors'][0]['invert'] == 1 assert page['element_descriptors'][0]['ed'] == 1 assert page['element_descriptors'][0]['medium_type'] == 7 assert page['element_descriptors'][0][ 'source_storage_element_address'] == 28 assert page['element_descriptors'][1]['element_address'] == 14 assert page['element_descriptors'][1]['access'] == 1 assert page['element_descriptors'][1]['except'] == 0 assert page['element_descriptors'][1]['full'] == 0 assert page['element_descriptors'][1]['additional_sense_code'] == 55 assert page['element_descriptors'][1][ 'additional_sense_code_qualifier'] == 56 assert page['element_descriptors'][1]['svalid'] == 1 assert page['element_descriptors'][1]['invert'] == 0 assert page['element_descriptors'][1]['ed'] == 0 assert page['element_descriptors'][1]['medium_type'] == 6 assert page['element_descriptors'][1][ 'source_storage_element_address'] == 29 d = ReadElementStatus.unmarshall_datain( ReadElementStatus.marshall_datain(i)) assert d == i
def main(): # SMC ElementAddressAssignment with MockSCSI(MockModeSenseEAA(smc)) as s: i = s.modesense10( page_code=MODESENSE10.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT).result assert i['medium_type'] == 97 assert i['device_specific_parameter'] == 98 assert len(i['mode_pages']) == 1 assert i['mode_pages'][0]['ps'] == 1 assert i['mode_pages'][0]['spf'] == 0 assert i['mode_pages'][0][ 'page_code'] == MODESENSE10.PAGE_CODE.ELEMENT_ADDRESS_ASSIGNMENT assert i['mode_pages'][0][ 'first_medium_transport_element_address'] == 257 assert i['mode_pages'][0]['num_medium_transport_elements'] == 258 assert i['mode_pages'][0]['first_storage_element_address'] == 259 assert i['mode_pages'][0]['num_storage_elements'] == 260 assert i['mode_pages'][0]['first_import_element_address'] == 261 assert i['mode_pages'][0]['num_import_elements'] == 262 assert i['mode_pages'][0]['first_data_transfer_element_address'] == 263 assert i['mode_pages'][0]['num_data_transfer_elements'] == 264 d = ModeSense10.unmarshall_datain(ModeSense10.marshall_datain(i)) assert d == i # SPC Control s.device = MockModeSenseControl(smc) i = s.modesense10(page_code=MODESENSE10.PAGE_CODE.CONTROL).result assert i['medium_type'] == 0 assert i['device_specific_parameter'] == 0x90 assert len(i['mode_pages']) == 1 assert i['mode_pages'][0]['ps'] == 1 assert i['mode_pages'][0]['spf'] == 0 assert i['mode_pages'][0]['page_code'] == MODESENSE10.PAGE_CODE.CONTROL assert i['mode_pages'][0]['tst'] == 4 assert i['mode_pages'][0]['tmf_only'] == 1 assert i['mode_pages'][0]['dpicz'] == 1 assert i['mode_pages'][0]['d_sense'] == 1 assert i['mode_pages'][0]['gltsd'] == 1 assert i['mode_pages'][0]['rlec'] == 1 assert i['mode_pages'][0]['queue_algorithm_modifier'] == 9 assert i['mode_pages'][0]['nuar'] == 1 assert i['mode_pages'][0]['qerr'] == 3 assert i['mode_pages'][0]['vs'] == 1 assert i['mode_pages'][0]['rac'] == 1 assert i['mode_pages'][0]['ua_intlck_ctrl'] == 3 assert i['mode_pages'][0]['swp'] == 1 assert i['mode_pages'][0]['ato'] == 1 assert i['mode_pages'][0]['tas'] == 1 assert i['mode_pages'][0]['atmpe'] == 1 assert i['mode_pages'][0]['rwwp'] == 1 assert i['mode_pages'][0]['autoload_mode'] == 7 assert i['mode_pages'][0]['busy_timeout_period'] == 500 assert i['mode_pages'][0]['extended_self_test_completion_time'] == 700 d = ModeSense10.unmarshall_datain(ModeSense10.marshall_datain(i)) assert d == i # SPC Control Ext 1 s.device = MockModeSenseControlExt1(smc) i = s.modesense10(page_code=MODESENSE10.PAGE_CODE.CONTROL, sub_page_code=1).result assert i['medium_type'] == 0 assert i['device_specific_parameter'] == 0x90 assert len(i['mode_pages']) == 1 assert i['mode_pages'][0]['ps'] == 1 assert i['mode_pages'][0]['spf'] == 1 assert i['mode_pages'][0]['page_code'] == MODESENSE10.PAGE_CODE.CONTROL assert i['mode_pages'][0]['sub_page_code'] == 1 assert i['mode_pages'][0]['tcmos'] == 1 assert i['mode_pages'][0]['scsip'] == 1 assert i['mode_pages'][0]['ialuae'] == 1 assert i['mode_pages'][0]['initial_command_priority'] == 15 assert i['mode_pages'][0]['maximum_sense_data_length'] == 29 d = ModeSense10.unmarshall_datain(ModeSense10.marshall_datain(i)) assert d == i # SPC Disconnect s.device = MockModeSenseDisconnect(smc) i = s.modesense10( page_code=MODESENSE10.PAGE_CODE.DISCONNECT_RECONNECT).result assert i['medium_type'] == 0 assert i['device_specific_parameter'] == 0x90 assert len(i['mode_pages']) == 1 assert i['mode_pages'][0]['ps'] == 1 assert i['mode_pages'][0]['spf'] == 0 assert i['mode_pages'][0][ 'page_code'] == MODESENSE10.PAGE_CODE.DISCONNECT_RECONNECT assert i['mode_pages'][0]['buffer_full_ratio'] == 122 assert i['mode_pages'][0]['buffer_empty_ratio'] == 123 assert i['mode_pages'][0]['bus_inactivity_limit'] == 2371 assert i['mode_pages'][0]['disconnect_time_limit'] == 2372 assert i['mode_pages'][0]['connect_time_limit'] == 2373 assert i['mode_pages'][0]['maximum_burst_size'] == 2374 assert i['mode_pages'][0]['emdp'] == 1 assert i['mode_pages'][0]['fair_arbitration'] == 7 assert i['mode_pages'][0]['dimm'] == 1 assert i['mode_pages'][0]['dtdc'] == 7 assert i['mode_pages'][0]['first_burst_size'] == 2375 d = ModeSense10.unmarshall_datain(ModeSense10.marshall_datain(i)) assert d == i
def main(): with MockSCSI(MockDevice(sbc)) as s: s.blocksize = 512 data = bytearray(512) w = s.writesame16(1024, 27, data) cdb = w.cdb assert cdb[0] == s.device.opcodes.WRITE_SAME_16.value assert cdb[1] == 0 assert scsi_ba_to_int(cdb[2:10]) == 1024 assert scsi_ba_to_int(cdb[10:14]) == 27 assert cdb[14] == 0 assert cdb[15] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.WRITE_SAME_16.value assert cdb['wrprotect'] == 0 assert cdb['anchor'] == 0 assert cdb['unmap'] == 0 assert cdb['ndob'] == 0 assert cdb['lba'] == 1024 assert cdb['group'] == 0 assert cdb['nb'] == 27 d = WriteSame16.unmarshall_cdb(WriteSame16.marshall_cdb(cdb)) assert d == cdb w = s.writesame16(65536, 27, data, wrprotect=4, anchor=1, group=19) cdb = w.cdb assert cdb[0] == s.device.opcodes.WRITE_SAME_16.value assert cdb[1] == 0x90 assert scsi_ba_to_int(cdb[2:10]) == 65536 assert scsi_ba_to_int(cdb[10:14]) == 27 assert cdb[14] == 0x13 assert cdb[15] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.WRITE_SAME_16.value assert cdb['wrprotect'] == 4 assert cdb['anchor'] == 1 assert cdb['unmap'] == 0 assert cdb['ndob'] == 0 assert cdb['lba'] == 65536 assert cdb['group'] == 19 assert cdb['nb'] == 27 d = WriteSame16.unmarshall_cdb(WriteSame16.marshall_cdb(cdb)) assert d == cdb w = s.writesame16(65536, 27, data, wrprotect=4, unmap=1, ndob=1) cdb = w.cdb assert cdb[0] == s.device.opcodes.WRITE_SAME_16.value assert cdb[1] == 0x89 assert scsi_ba_to_int(cdb[2:10]) == 65536 assert scsi_ba_to_int(cdb[10:14]) == 27 assert cdb[14] == 0 assert cdb[15] == 0 cdb = w.unmarshall_cdb(cdb) assert cdb['opcode'] == s.device.opcodes.WRITE_SAME_16.value assert cdb['wrprotect'] == 4 assert cdb['anchor'] == 0 assert cdb['unmap'] == 1 assert cdb['ndob'] == 1 assert cdb['lba'] == 65536 assert cdb['group'] == 0 assert cdb['nb'] == 27 d = WriteSame16.unmarshall_cdb(WriteSame16.marshall_cdb(cdb)) assert d == cdb
def main(): with MockSCSI(MockInquiryStandard(sbc)) as s: cmd = s.inquiry() i = cmd.result assert i['peripheral_qualifier'] == 1 assert i['peripheral_device_type'] == 5 assert i['rmb'] == 1 assert i['version'] == 7 assert i['normaca'] == 1 assert i['hisup'] == 0 assert i['response_data_format'] == 3 assert i['additional_length'] == 64 assert i['sccs'] == 1 assert i['acc'] == 0 assert i['tpgs'] == 3 assert i['3pc'] == 1 assert i['protect'] == 1 assert i['encserv'] == 1 assert i['vs'] == 1 assert i['multip'] == 1 assert i['addr16'] == 1 assert i['wbus16'] == 1 assert i['sync'] == 1 assert i['cmdque'] == 1 assert i['vs2'] == 1 assert i['clocking'] == 2 assert i['qas'] == 0 assert i['ius'] == 1 assert i['t10_vendor_identification'].decode("utf-8") == 'abcdefgh' assert i['product_identification'].decode( "utf-8") == 'iiiiiiiijjjjjjjj' assert i['product_revision_level'].decode("utf-8") == 'revn' d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i)) assert d == i with MockSCSI(MockLBP(sbc)) as s: cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.LOGICAL_BLOCK_PROVISIONING) i = cmd.result assert i['peripheral_qualifier'] == 0 assert i['peripheral_qualifier'] == 0 assert i['threshold_exponent'] == 0x12 assert i['lbpu'] == 1 assert i['lpbws'] == 1 assert i['lbpws10'] == 1 assert i['lbprz'] == 1 assert i['anc_sup'] == 1 assert i['dp'] == 1 assert i[ 'provisioning_type'] == INQUIRY.PROVISIONING_TYPE.THIN_PROVISIONED d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1) assert d == i with MockSCSI(MockUSN(sbc)) as s: cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.UNIT_SERIAL_NUMBER) i = cmd.result assert i['peripheral_qualifier'] == 0 assert i['peripheral_qualifier'] == 0 assert i['unit_serial_number'].decode("utf-8") == "ABCD" d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1) assert d == i with MockSCSI(MockReferrals(sbc)) as s: cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.REFERRALS) i = cmd.result assert i['peripheral_qualifier'] == 0 assert i['peripheral_qualifier'] == 0 assert i['user_data_segment_size'] == 23 assert i['user_data_segment_multiplier'] == 37 d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1) assert d == i with MockSCSI(MockExtendedInquiry(sbc)) as s: cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.EXTENDED_INQUIRY_DATA) i = cmd.result assert i['peripheral_qualifier'] == 0 assert i['peripheral_qualifier'] == 0 assert i['activate_microcode'] == 1 assert i['spt'] == 2 assert i['grd_chk'] == 1 assert i['app_chk'] == 1 assert i['ref_chk'] == 1 assert i['uask_sup'] == 1 assert i['group_sup'] == 1 assert i['prior_sup'] == 0 assert i['headsup'] == 0 assert i['ordsup'] == 1 assert i['simpsup'] == 1 assert i['wu_sup'] == 0 assert i['crd_sup'] == 1 assert i['nv_sup'] == 0 assert i['v_sup'] == 1 assert i['p_i_i_sup'] == 1 assert i['luiclr'] == 1 assert i['r_sup'] == 1 assert i['cbcs'] == 1 assert i['multi_it_nexus_microcode_download'] == 3 assert i['extended_self_test_completion_minutes'] == 15 assert i['poa_sup'] == 1 assert i['hra_sup'] == 1 assert i['vsa_sup'] == 1 assert i['maximum_supported_sense_data_length'] == 5 d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1) assert d == i s.device = MockDevId(sbc) cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.DEVICE_IDENTIFICATION) i = cmd.result assert i['peripheral_qualifier'] == 0 assert i['peripheral_qualifier'] == 0 dd = i['designator_descriptors'] assert len(dd) == 2 # T10 designation descriptor assert dd[0]['association'] == 2 assert dd[0]['code_set'] == 2 assert dd[0]['designator_length'] == 8 assert dd[0]['designator_type'] == 1 assert dd[0]['piv'] == 1 assert dd[0]['protocol_identifier'] == 5 assert dd[0]['designator']['t10_vendor_id'].decode( "utf-8") == 'Test T10' assert dd[0]['designator']['vendor_specific_id'].decode("utf-8") == '' # EUI-64 designation descriptor assert dd[1]['association'] == 2 assert dd[1]['code_set'] == 1 assert dd[1]['designator_length'] == 8 assert dd[1]['designator_type'] == 2 assert dd[1]['piv'] == 0 assert not hasattr(dd[1], 'protocol_identifier') assert dd[1]['designator']['ieee_company_id'] == 0x112233 assert dd[1]['designator']['vendor_specific_extension_id'].decode( "utf-8") == 'abcde' d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1) assert d == i