示例#1
0
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
示例#3
0
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
示例#6
0
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
示例#8
0
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
示例#9
0
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
示例#10
0
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
示例#11
0
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
示例#19
0
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
示例#21
0
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
示例#22
0
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
示例#23
0
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
示例#24
0
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
示例#25
0
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