def test_readfrudatareq_encode_valid_req(): m = pyipmi.msgs.fru.ReadFruDataReq() m.fru_id = 1 m.offset = 0x302 m.count = 4 data = encode_message(m) eq_(data, '\x01\x02\x03\x04')
def test_writefrudatareq_encode_valid_req_wo_data(): m = pyipmi.msgs.fru.WriteFruDataReq() m.fru_id = 1 m.offset = 0x302 m.data = array('B') data = encode_message(m) eq_(data, '\x01\x02\x03')
def test_readfrudatarsp_encode_valid_rsp(): m = pyipmi.msgs.fru.ReadFruDataRsp() m.completion_code = 0 m.count = 5 m.data = array('B', b'\x01\x02\x03\x04\x05') data = encode_message(m) eq_(data, '\x00\x05\x01\x02\x03\x04\x05')
def test_setsensorthresholds_encode_req_set_unc(): m = pyipmi.msgs.sensor.SetSensorThresholdsReq() m.sensor_number = 0x55 m.set_mask.unc = 1 m.threshold.unc = 0xaa data = encode_message(m) eq_(data, '\x55\x08\x00\x00\x00\xaa\x00\x00')
def test_get_username_req(): m = pyipmi.msgs.device_messaging.GetUserNameReq() m.userid.userid = 2 data = encode_message(m) eq_(m.cmdid, 0x46) eq_(m.netfn, 6) eq_(m.userid.userid, 2)
def send_and_receive(self, msg): """Sends an IPMI request message and waits for its response. `msg` is a IPMI Message containing both the request and response. """ log().debug('IPMI Request [%s]', msg) retries = 0 while retries < self.max_retries: try: rx_data = self._send_and_receive_raw(msg.target, msg.lun, msg.netfn, chr(msg.cmdid) + encode_message(msg)) break except TimeoutError: pass retries += 1 else: raise TimeoutError() msg = create_message(msg.cmdid, msg.netfn + 1) decode_message(msg, rx_data[5:-1]) log().debug('IPMI Response [%s])', msg) return msg
def test_set_deactivation_lock_req(self): m = pyipmi.msgs.picmg.SetFruActivationPolicyReq() m.fru_id = 1 m.mask.deactivation_locked = 1 m.set.deactivation_locked = 1 data = encode_message(m) self.assertEqual(data, '\x00\x01\x02\x02')
def test_get_session_challenge_req(): m = pyipmi.msgs.device_messaging.GetSessionChallengeReq() m.authentication.type = 1 # m.user_name = "helloworld" data = encode_message(m) eq_(m.cmdid, 0x39) eq_(m.netfn, 6) eq_(data, b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') m.authentication.type = 1 m.user_name = '0123456789abcdef' data = encode_message(m) eq_(m.cmdid, 0x39) eq_(m.netfn, 6) eq_(data, b'\x010123456789abcdef')
def test_chassiscontrol_encode_valid_req(): m = pyipmi.msgs.chassis.ChassisControlReq() m.control.option = 1 data = encode_message(m) eq_(m.__netfn__, 0) eq_(m.__cmdid__, 2) eq_(data, '\x01')
def test_encode_valid_req(self): m = pyipmi.msgs.fru.ReadFruDataReq() m.fru_id = 1 m.offset = 0x302 m.count = 4 data = encode_message(m) self.assertEqual(data, '\x01\x02\x03\x04')
def test_encode_valid_rsp(self): m = pyipmi.msgs.fru.ReadFruDataRsp() m.completion_code = 0 m.count = 5 m.data = array('B', '\x01\x02\x03\x04\x05') data = encode_message(m) self.assertEqual(data, '\x00\x05\x01\x02\x03\x04\x05')
def test_chassis_id_encode_valid_req(): m = pyipmi.msgs.chassis.ChassisIdentifyReq() m.interval = 0x1f m.force_id_on.turn_on = 0 data = encode_message(m) eq_(m.__netfn__, 0) eq_(m.__cmdid__, 4) eq_(data, b'\x1f\x00') m = pyipmi.msgs.chassis.ChassisIdentifyReq() m.interval = 0x1f m.force_id_on.turn_on = 1 data = encode_message(m) eq_(m.__netfn__, 0) eq_(m.__cmdid__, 4) eq_(data, b'\x1f\x01')
def test_encode_valid_req_wo_data(self): m = pyipmi.msgs.fru.WriteFruDataReq() m.fru_id = 1 m.offset = 0x302 m.data = array('B') data = encode_message(m) self.assertEqual(data, '\x01\x02\x03')
def test_set_activation_lock_req(): m = pyipmi.msgs.picmg.SetFruActivationPolicyReq() m.fru_id = 1 m.mask.activation_locked = 1 m.set.activation_locked = 1 data = encode_message(m) eq_(data, b'\x00\x01\x01\x01')
def test_clear_deactivation_lock_req(): m = pyipmi.msgs.picmg.SetFruActivationPolicyReq() m.fru_id = 1 m.mask.deactivation_locked = 1 m.set.deactivation_locked = 0 data = encode_message(m) eq_(data, b'\x00\x01\x02\x00')
def test_setsensorthresholds_encode_req_set_ucr(): m = pyipmi.msgs.sensor.SetSensorThresholdsReq() m.sensor_number = 0x55 m.set_mask.ucr = 1 m.threshold.ucr = 0xaa data = encode_message(m) eq_(data, b'\x55\x10\x00\x00\x00\x00\xaa\x00')
def test_getselentry_encode_valid_rsp(): m = pyipmi.msgs.sel.GetSelEntryRsp() m.completion_code = 0 m.next_record_id = 0x0102 m.record_data = array('B', b'\x01\x02\x03\x04') data = encode_message(m) eq_(data, '\x00\x02\x01\x01\x02\x03\x04')
def test_setsensorhysteresis_encode_req(): m = pyipmi.msgs.sensor.SetSensorHysteresisReq() m.sensor_number = 0xab m.positive_going_hysteresis = 0xaa m.negative_going_hysteresis = 0xbb data = encode_message(m) eq_(data, b'\xab\xff\xaa\xbb')
def test_encode_valid_rsp(self): m = pyipmi.msgs.sel.GetSelEntryRsp() m.completion_code = 0 m.next_record_id = 0x0102 m.record_data = array('B', '\x01\x02\x03\x04') data = encode_message(m) self.assertEqual(data, '\x00\x02\x01\x01\x02\x03\x04')
def test_get_session_challenge_rsp_cc_not_ok(): m = pyipmi.msgs.device_messaging.GetSessionChallengeRsp() m.completion_code = 0xc1 m.temporary_session_id = 0x11121314 m.challenge_string = '0123456789abcdef' data = encode_message(m) eq_(data, b'\xc1\x14\x13\x12\x110123456789abcdef')
def test_setsensorhysteresis_encode_req(): m = pyipmi.msgs.sensor.SetSensorHysteresisReq() m.sensor_number = 0xab m.positive_going_hysteresis = 0xaa m.negative_going_hysteresis = 0xbb data = encode_message(m) eq_(data, '\xab\xff\xaa\xbb')
def test_clear_activation_lock_req(self): m = pyipmi.msgs.picmg.SetFruActivationPolicyReq() m.fru_id = 1 m.mask.activation_locked = 1 m.set.activation_locked = 0 data = encode_message(m) self.assertEqual(data, "\x00\x01\x01\x00")
def test_encode_req_set_ucr(self): m = pyipmi.msgs.sensor.SetSensorThresholdsReq() m.sensor_number = 0x55 m.set_mask.ucr = 1 m.threshold.ucr = 0xaa data = encode_message(m) self.assertEqual(data, '\x55\x10\x00\x00\x00\x00\xaa\x00')
def test_getselentry_encode_valid_rsp(): m = pyipmi.msgs.sel.GetSelEntryRsp() m.completion_code = 0 m.next_record_id = 0x0102 m.record_data = array('B', b'\x01\x02\x03\x04') data = encode_message(m) eq_(data, b'\x00\x02\x01\x01\x02\x03\x04')
def test_encode_req(self): m = pyipmi.msgs.sensor.SetSensorHysteresisReq() m.sensor_number = 0xab m.positive_going_hysteresis = 0xaa m.negative_going_hysteresis = 0xbb data = encode_message(m) self.assertEqual(data, '\xab\xff\xaa\xbb')
def test_encode_req(self): m = pyipmi.msgs.sensor.GetDeviceSdrReq() m.reservation_id = 0x0123 m.record_id = 0x4567 m.offset = 0x89 m.length = 0xab data = encode_message(m) self.assertEqual(data, '\x23\x01\x67\x45\x89\xab')
def test_encode_event_enabled_req(self): m = pyipmi.msgs.sensor.SetSensorEventEnableReq() m.sensor_number = 0xab m.enable.config = 0 m.enable.event_message = 1 m.enable.sensor_scanning = 0 data = encode_message(m) self.assertEqual(data, '\xab\x80')
def test_encode_req(self): m = pyipmi.msgs.sensor.GetDeviceSdrReq() m.reservation_id = 0x0123 m.record_id = 0x4567 m.offset = 0x89 m.bytes_to_read = 0xab data = encode_message(m) self.assertEqual(data, '\x23\x01\x67\x45\x89\xab')
def test_setsensoreventenable_encode_event_enabled_req(): m = pyipmi.msgs.sensor.SetSensorEventEnableReq() m.sensor_number = 0xab m.enable.config = 0 m.enable.event_message = 1 m.enable.sensor_scanning = 0 data = encode_message(m) eq_(data, '\xab\x80')
def test_encode_req(self): m = pyipmi.msgs.sdr.GetSdrReq() m.reservation_id = 0x1122 m.record_id = 0x3344 m.offset = 0xaa m.bytes_to_read = 0x55 data = encode_message(m) eq_(data, '\x22\x11\x44\x33\xaa\x55')
def test_getdevicesdr_encode_req(): m = pyipmi.msgs.sensor.GetDeviceSdrReq() m.reservation_id = 0x0123 m.record_id = 0x4567 m.offset = 0x89 m.bytes_to_read = 0xab data = encode_message(m) eq_(data, '\x23\x01\x67\x45\x89\xab')
def test_getsdr_encode_req(): m = pyipmi.msgs.sdr.GetSdrReq() m.reservation_id = 0x1122 m.record_id = 0x3344 m.offset = 0xaa m.bytes_to_read = 0x55 data = encode_message(m) eq_(data, b'\x22\x11\x44\x33\xaa\x55')
def test_encode_req_all_zero_read(self): m = pyipmi.msgs.bmc.MasterWriteReadReq() m.bus_id.type = 0 m.bus_id.id = 0 m.bus_id.channel = 0 m.bus_id.slave_address = 0 m.read_count = 0 data = encode_message(m) self.assertEqual(data,'\x00\x00\x00')
def test_encode_req_for_read(self): m = pyipmi.msgs.bmc.MasterWriteReadReq() m.bus_id.type = 1 m.bus_id.id = 2 m.bus_id.channel = 4 m.bus_id.slave_address = 0x3a m.read_count = 5 data = encode_message(m) self.assertEqual(data,'\x45\x74\x05')
def test_encode_req_for_read(self): m = pyipmi.msgs.bmc.MasterWriteReadReq() m.bus_id.type = 1 m.bus_id.id = 2 m.bus_id.channel = 4 m.bus_id.slave_address = 0x3a m.read_count = 5 data = encode_message(m) self.assertEqual(data, '\x45\x74\x05')
def test_encode_req_all_zero_read(self): m = pyipmi.msgs.bmc.MasterWriteReadReq() m.bus_id.type = 0 m.bus_id.id = 0 m.bus_id.channel = 0 m.bus_id.slave_address = 0 m.read_count = 0 data = encode_message(m) self.assertEqual(data, '\x00\x00\x00')
def test_encode_req(self): m = pyipmi.msgs.sdr.PartialAddSdrReq() m.reservation_id = 0x2211 m.record_id = 0x4433 m.offset = 0xaa m.status.in_progress = 0xaa m.data = array('B', [0x55, 0x44]) data = encode_message(m) eq_(data, '\x11\x22\x33\x44\xaa\x0a\x55\x44')
def test_partialaddsdr_encode_req(): m = pyipmi.msgs.sdr.PartialAddSdrReq() m.reservation_id = 0x2211 m.record_id = 0x4433 m.offset = 0xaa m.status.in_progress = 0xaa m.record_data = array('B', [0x55, 0x44]) data = encode_message(m) eq_(data, b'\x11\x22\x33\x44\xaa\x0a\x55\x44')
def test_masterwriteread_encode_req_all_zero_read(): m = pyipmi.msgs.device_messaging.MasterWriteReadReq() m.bus_id.type = 0 m.bus_id.id = 0 m.bus_id.channel = 0 m.bus_id.slave_address = 0 m.read_count = 0 data = encode_message(m) eq_(data, b'\x00\x00\x00')
def test_masterwriteread_encode_req_for_read(): m = pyipmi.msgs.device_messaging.MasterWriteReadReq() m.bus_id.type = 1 m.bus_id.id = 2 m.bus_id.channel = 4 m.bus_id.slave_address = 0x3a m.read_count = 5 data = encode_message(m) eq_(data, b'\x45\x74\x05')
def test_get_channel_authentication_capabilities_req(): m = pyipmi.msgs.device_messaging.GetChannelAuthenticationCapabilitiesReq() m.channel.number = 6 m.channel.type = 1 m.privilege_level.requested = 5 data = encode_message(m) eq_(m.cmdid, 0x38) eq_(m.netfn, 6) eq_(data, b'\x86\x05')
def test_masterwriteread_encode_req_for_write(): m = pyipmi.msgs.device_messaging.MasterWriteReadReq() m.bus_id.type = 0 m.bus_id.id = 0 m.bus_id.channel = 0 m.bus_id.slave_address = 0 m.read_count = 0 m.data = [1, 0x23, 0x45] data = encode_message(m) eq_(data, b'\x00\x00\x00\x01\x23\x45')