def readelementstatus(self, start, num, **kwargs): """ Returns a ReadElementStatus Instance :param start: starting address for first element to return :param num: numbver of elements to return :param kwargs: a dict with key/value pairs element_type, type of elements to return voltag = 0, whether volume tag data should be returned curdata = 1, check current data dvcid = 0, whether to return device identifiers alloclen=16384, max amount od data to return :return: an ReadElementStatus instance """ opcode = self.device.opcodes.READ_ELEMENT_STATUS cmd = ReadElementStatus(opcode, start, num, **kwargs) self.execute(cmd) cmd.unmarshall() return cmd
def test_main(self): 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 self.assertEqual(cdb[0], s.device.opcodes.READ_ELEMENT_STATUS.value) self.assertEqual(cdb[1], 0x10 | READELEMENTSTATUS.ELEMENT_TYPE.STORAGE) self.assertEqual(scsi_ba_to_int(cdb[2:4]), 300) self.assertEqual(scsi_ba_to_int(cdb[4:6]), 700) self.assertEqual(cdb[6], 0x03) self.assertEqual(scsi_ba_to_int(cdb[7:10]), 16384) cdb = r.unmarshall_cdb(cdb) self.assertEqual(cdb['opcode'], s.device.opcodes.READ_ELEMENT_STATUS.value) self.assertEqual(cdb['voltag'], 1) self.assertEqual(cdb['element_type'], READELEMENTSTATUS.ELEMENT_TYPE.STORAGE) self.assertEqual(cdb['starting_element_address'], 300) self.assertEqual(cdb['num_elements'], 700) self.assertEqual(cdb['curdata'], 1) self.assertEqual(cdb['dvcid'], 1) self.assertEqual(cdb['alloc_len'], 16384) d = ReadElementStatus.unmarshall_cdb( ReadElementStatus.marshall_cdb(cdb)) self.assertEqual(d, cdb)
def main(): dev = MockReadElementStatus() dev.opcodes = smc s = SCSI(dev) s.device.opcodes = smc # 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(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 readelementstatus(self, start, num, **kwargs): """ Returns a ReadElementStatus Instance :param start: starting address for first element to return :param num: numbver of elements to return :param element_type=ELEMENT_TYPE.ALL: type of elements to return :param voltag = 0: whether volume tag data should be returned :param curdata = 1: check current data :param dvcid = 0: whether to return device identifiers :param alloclen=16384: max amount od data to return :return: an ReadElementStatus instance """ return ReadElementStatus(self, start, num, **kwargs)
def main(): dev = MockReadElementStatus() dev.opcodes = smc s = SCSI(dev) s.device.opcodes = smc 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(): dev = MockReadElementStatus() dev.opcodes = smc s = SCSI(dev) s.device.opcodes = smc 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 test_main(self): with MockSCSI(MockReadElementStatus(smc)) as s: i = s.readelementstatus( 300, 700, element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE, voltag=1, curdata=1, dvcid=1).result self.assertEqual(i['first_element_address'], 12) self.assertEqual(i['num_elements'], 3) self.assertEqual(len(i['element_status_pages']), 2) page = i['element_status_pages'][0] self.assertEqual(page['element_type'], 2) self.assertEqual(page['pvoltag'], 0) self.assertEqual(page['avoltag'], 0) self.assertEqual(len(page['element_descriptors']), 1) self.assertEqual(page['element_descriptors'][0]['element_address'], 12) self.assertEqual(page['element_descriptors'][0]['access'], 1) self.assertEqual(page['element_descriptors'][0]['except'], 1) self.assertEqual(page['element_descriptors'][0]['full'], 1) self.assertEqual( page['element_descriptors'][0]['additional_sense_code'], 55) self.assertEqual( page['element_descriptors'][0] ['additional_sense_code_qualifier'], 56) self.assertEqual(page['element_descriptors'][0]['svalid'], 1) self.assertEqual(page['element_descriptors'][0]['invert'], 1) self.assertEqual(page['element_descriptors'][0]['ed'], 1) self.assertEqual(page['element_descriptors'][0]['medium_type'], 2) self.assertEqual( page['element_descriptors'][0] ['source_storage_element_address'], 27) page = i['element_status_pages'][1] self.assertEqual(page['element_type'], 4) self.assertEqual(page['pvoltag'], 0) self.assertEqual(page['avoltag'], 0) self.assertEqual(len(page['element_descriptors']), 2) self.assertEqual(page['element_descriptors'][0]['element_address'], 13) self.assertEqual(page['element_descriptors'][0]['access'], 1) self.assertEqual(page['element_descriptors'][0]['except'], 1) self.assertEqual(page['element_descriptors'][0]['full'], 0) self.assertEqual( page['element_descriptors'][0]['additional_sense_code'], 55) self.assertEqual( page['element_descriptors'][0] ['additional_sense_code_qualifier'], 56) self.assertEqual(page['element_descriptors'][0]['svalid'], 1) self.assertEqual(page['element_descriptors'][0]['invert'], 1) self.assertEqual(page['element_descriptors'][0]['ed'], 1) self.assertEqual(page['element_descriptors'][0]['medium_type'], 7) self.assertEqual( page['element_descriptors'][0] ['source_storage_element_address'], 28) self.assertEqual(page['element_descriptors'][1]['element_address'], 14) self.assertEqual(page['element_descriptors'][1]['access'], 1) self.assertEqual(page['element_descriptors'][1]['except'], 0) self.assertEqual(page['element_descriptors'][1]['full'], 0) self.assertEqual( page['element_descriptors'][1]['additional_sense_code'], 55) self.assertEqual( page['element_descriptors'][1] ['additional_sense_code_qualifier'], 56) self.assertEqual(page['element_descriptors'][1]['svalid'], 1) self.assertEqual(page['element_descriptors'][1]['invert'], 0) self.assertEqual(page['element_descriptors'][1]['ed'], 0) self.assertEqual(page['element_descriptors'][1]['medium_type'], 6) self.assertEqual( page['element_descriptors'][1] ['source_storage_element_address'], 29) d = ReadElementStatus.unmarshall_datain( ReadElementStatus.marshall_datain(i)) self.assertEqual(d, i)