Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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')
Exemplo n.º 3
0
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')
Exemplo n.º 4
0
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')
Exemplo n.º 5
0
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')
Exemplo n.º 6
0
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')
Exemplo n.º 7
0
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')
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
 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')
Exemplo n.º 11
0
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')
Exemplo n.º 12
0
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')
Exemplo n.º 13
0
 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')
Exemplo n.º 14
0
 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')
Exemplo n.º 15
0
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')
Exemplo n.º 16
0
 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')
Exemplo n.º 17
0
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')
Exemplo n.º 18
0
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')
Exemplo n.º 19
0
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')
Exemplo n.º 20
0
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')
Exemplo n.º 21
0
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')
Exemplo n.º 22
0
 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')
Exemplo n.º 23
0
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')
Exemplo n.º 24
0
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')
Exemplo n.º 25
0
 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")
Exemplo n.º 26
0
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')
Exemplo n.º 27
0
 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')
Exemplo n.º 28
0
 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')
Exemplo n.º 29
0
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')
Exemplo n.º 30
0
 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')
Exemplo n.º 31
0
 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')
Exemplo n.º 32
0
 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')
Exemplo n.º 33
0
 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')
Exemplo n.º 34
0
 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')
Exemplo n.º 35
0
 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')
Exemplo n.º 36
0
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')
Exemplo n.º 37
0
 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')
Exemplo n.º 38
0
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')
Exemplo n.º 39
0
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')
Exemplo n.º 40
0
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')
Exemplo n.º 41
0
 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')
Exemplo n.º 42
0
 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')
Exemplo n.º 43
0
 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')
Exemplo n.º 44
0
 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')
Exemplo n.º 45
0
 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')
Exemplo n.º 46
0
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')
Exemplo n.º 47
0
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')
Exemplo n.º 48
0
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')
Exemplo n.º 49
0
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')
Exemplo n.º 50
0
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')