Example #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
Example #2
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 test_main(self):
        with MockSCSI(MockDevice(spc)) as s:
            # cdb for standard page request
            i = s.inquiry(alloclen=128)
            cdb = i.cdb
            self.assertEqual(cdb[0], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb[1:3], bytearray(2))
            self.assertEqual(scsi_ba_to_int(cdb[3:5]), 128)
            self.assertEqual(cdb[5], 0)
            cdb = i.unmarshall_cdb(cdb)
            self.assertEqual(cdb['opcode'], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb['evpd'], 0)
            self.assertEqual(cdb['page_code'], 0)
            self.assertEqual(cdb['alloc_len'], 128)

            d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
            self.assertEqual(d, cdb)

            # supported vpd pages
            i = s.inquiry(evpd=1, page_code=0x88, alloclen=300)
            cdb = i.cdb
            self.assertEqual(cdb[0], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb[1], 0x01)
            self.assertEqual(cdb[2], 0x88)
            self.assertEqual(scsi_ba_to_int(cdb[3:5]), 300)
            self.assertEqual(cdb[5], 0)
            cdb = i.unmarshall_cdb(cdb)
            self.assertEqual(cdb['opcode'], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb['evpd'], 1)
            self.assertEqual(cdb['page_code'], 0x88)
            self.assertEqual(cdb['alloc_len'], 300)

            d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
            self.assertEqual(d, cdb)
Example #4
0
    def inquiry(self, evpd=0, page_code=0, alloclen=96):
        """
        Returns a Inquiry Instance

        :param evpd: a byte indicating if vital product data is supported
        :param page_code: a byte representing a page code for vpd
        :param alloclen: the size of the data_in buffer
        :return: a Inquiry instance
        """
        opcode = self.device.opcodes.INQUIRY
        cmd = Inquiry(opcode,
                      evpd=evpd,
                      page_code=page_code,
                      alloclen=alloclen)
        self.execute(cmd)
        cmd.unmarshall(evpd=evpd)
        return cmd
Example #5
0
    def inquiry(self, **kwargs):
        """
        Returns a Inquiry Instance

        :param evpd = 0: a byte indicating if vital product data is supported
        :param page_code = 0: a byte representing a page code for vpd
        :param alloc_len = 96: a integer , the size of the data_in buffer
        :return: a Inquiry instance
        """
        return Inquiry(self, **kwargs)
Example #6
0
    def inquiry(self,
                evpd=0,
                page_code=0,
                alloclen=96):
        """
        Returns a Inquiry Instance

        :param evpd: a byte indicating if vital product data is supported
        :param page_code: a byte representing a page code for vpd
        :param alloclen: the size of the data_in buffer
        :return: a Inquiry instance
        """
        opcode = self.device.opcodes.INQUIRY
        cmd = Inquiry(opcode,
                      evpd=evpd,
                      page_code=page_code,
                      alloclen=alloclen)
        self.execute(cmd)
        cmd.unmarshall(evpd=evpd)
        return cmd
Example #7
0
    def inquiry(self, **kwargs):
        """
        Returns a Inquiry Instance

        :param kwargs: a dict with key/value pairs
                       evpd = 0, a byte indicating if vital product data is supported
                       page_code = 0, a byte representing a page code for vpd
                       alloc_len = 96, the size of the data_in buffer
        :return: a Inquiry instance
        """
        opcode = self.device.opcodes.INQUIRY
        cmd = Inquiry(opcode, **kwargs)
        self.execute(cmd)
        SCSI.unmarshall(cmd)
        return cmd
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
Example #9
0
def main():
    dev = MockInquiryStandard()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry().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

    dev = MockLBP()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry(evpd=1, page_code=INQUIRY.VPD.LOGICAL_BLOCK_PROVISIONING).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

    dev = MockUSN()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry(evpd=1, page_code=INQUIRY.VPD.UNIT_SERIAL_NUMBER).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

    dev = MockReferrals()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry(evpd=1, page_code=INQUIRY.VPD.REFERRALS).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

    dev = MockExtendedInquiry()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry(evpd=1, page_code=INQUIRY.VPD.EXTENDED_INQUIRY_DATA).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

    dev = MockDevId()
    dev.opcodes = sbc
    s = SCSI(dev)
    i = s.inquiry(evpd=1, page_code=INQUIRY.VPD.DEVICE_IDENTIFICATION).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
    def test_main(self):
        with MockSCSI(MockInquiryStandard(sbc)) as s:
            cmd = s.inquiry()
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 1)
            self.assertEqual(i['peripheral_device_type'], 5)
            self.assertEqual(i['rmb'], 1)
            self.assertEqual(i['version'], 7)
            self.assertEqual(i['normaca'], 1)
            self.assertEqual(i['hisup'], 0)
            self.assertEqual(i['response_data_format'], 3)
            self.assertEqual(i['additional_length'], 64)
            self.assertEqual(i['sccs'], 1)
            self.assertEqual(i['acc'], 0)
            self.assertEqual(i['tpgs'], 3)
            self.assertEqual(i['3pc'], 1)
            self.assertEqual(i['protect'], 1)
            self.assertEqual(i['encserv'], 1)
            self.assertEqual(i['vs'], 1)
            self.assertEqual(i['multip'], 1)
            self.assertEqual(i['addr16'], 1)
            self.assertEqual(i['wbus16'], 1)
            self.assertEqual(i['sync'], 1)
            self.assertEqual(i['cmdque'], 1)
            self.assertEqual(i['vs2'], 1)
            self.assertEqual(i['clocking'], 2)
            self.assertEqual(i['qas'], 0)
            self.assertEqual(i['ius'], 1)
            self.assertEqual(i['t10_vendor_identification'].decode("utf-8"), 'abcdefgh')
            self.assertEqual(i['product_identification'].decode("utf-8"), 'iiiiiiiijjjjjjjj')
            self.assertEqual(i['product_revision_level'].decode("utf-8"), 'revn')

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i))
            self.assertEqual(d, i)

        with MockSCSI(MockLBP(sbc)) as s:
            cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.LOGICAL_BLOCK_PROVISIONING)
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['threshold_exponent'], 0x12)
            self.assertEqual(i['lbpu'], 1)
            self.assertEqual(i['lpbws'], 1)
            self.assertEqual(i['lbpws10'], 1)
            self.assertEqual(i['lbprz'], 1)
            self.assertEqual(i['anc_sup'], 1)
            self.assertEqual(i['dp'], 1)
            self.assertEqual(i['provisioning_type'], INQUIRY.PROVISIONING_TYPE.THIN_PROVISIONED)

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1)
            self.assertEqual(d, i)

        with MockSCSI(MockUSN(sbc)) as s:
            cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.UNIT_SERIAL_NUMBER)
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['unit_serial_number'].decode("utf-8"), "ABCD")

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1)
            self.assertEqual(d, i)

        with MockSCSI(MockReferrals(sbc)) as s:
            cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.REFERRALS)
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['user_data_segment_size'], 23)
            self.assertEqual(i['user_data_segment_multiplier'], 37)

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1)
            self.assertEqual(d, i)

        with MockSCSI(MockExtendedInquiry(sbc)) as s:
            cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.EXTENDED_INQUIRY_DATA)
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['activate_microcode'], 1)
            self.assertEqual(i['spt'], 2)
            self.assertEqual(i['grd_chk'], 1)
            self.assertEqual(i['app_chk'], 1)
            self.assertEqual(i['ref_chk'], 1)
            self.assertEqual(i['uask_sup'], 1)
            self.assertEqual(i['group_sup'], 1)
            self.assertEqual(i['prior_sup'], 0)
            self.assertEqual(i['headsup'], 0)
            self.assertEqual(i['ordsup'], 1)
            self.assertEqual(i['simpsup'], 1)
            self.assertEqual(i['wu_sup'], 0)
            self.assertEqual(i['crd_sup'], 1)
            self.assertEqual(i['nv_sup'], 0)
            self.assertEqual(i['v_sup'], 1)
            self.assertEqual(i['p_i_i_sup'], 1)
            self.assertEqual(i['luiclr'], 1)
            self.assertEqual(i['r_sup'], 1)
            self.assertEqual(i['cbcs'], 1)
            self.assertEqual(i['multi_it_nexus_microcode_download'], 3)
            self.assertEqual(i['extended_self_test_completion_minutes'], 15)
            self.assertEqual(i['poa_sup'], 1)
            self.assertEqual(i['hra_sup'], 1)
            self.assertEqual(i['vsa_sup'], 1)
            self.assertEqual(i['maximum_supported_sense_data_length'], 5)

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1)
            self.assertEqual(d, i)

            s.device = MockDevId(sbc)
            cmd = s.inquiry(evpd=1, page_code=INQUIRY.VPD.DEVICE_IDENTIFICATION)
            i = cmd.result
            self.assertEqual(i['peripheral_qualifier'], 0)
            self.assertEqual(i['peripheral_qualifier'], 0)
            dd = i['designator_descriptors']
            self.assertEqual(len(dd), 2)
            # T10 designation descriptor
            self.assertEqual(dd[0]['association'], 2)
            self.assertEqual(dd[0]['code_set'], 2)
            self.assertEqual(dd[0]['designator_length'], 8)
            self.assertEqual(dd[0]['designator_type'], 1)
            self.assertEqual(dd[0]['piv'], 1)
            self.assertEqual(dd[0]['protocol_identifier'], 5)
            self.assertEqual(dd[0]['designator']['t10_vendor_id'].decode("utf-8"), 'Test T10')
            self.assertEqual(dd[0]['designator']['vendor_specific_id'].decode("utf-8"), '')
            # EUI-64 designation descriptor
            self.assertEqual(dd[1]['association'], 2)
            self.assertEqual(dd[1]['code_set'], 1)
            self.assertEqual(dd[1]['designator_length'], 8)
            self.assertEqual(dd[1]['designator_type'], 2)
            self.assertEqual(dd[1]['piv'], 0)
            self.assertFalse(hasattr(dd[1], 'protocol_identifier'))
            self.assertEqual(dd[1]['designator']['ieee_company_id'], 0x112233)
            self.assertEqual(dd[1]['designator']['vendor_specific_extension_id'].decode("utf-8"), 'abcde')

            d = Inquiry.unmarshall_datain(Inquiry.marshall_datain(i), evpd=1)
            self.assertEqual(d, i)