summaryrefslogtreecommitdiff
path: root/ceilometer/tests/ipmi/platform/fake_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ceilometer/tests/ipmi/platform/fake_utils.py')
-rw-r--r--ceilometer/tests/ipmi/platform/fake_utils.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/ceilometer/tests/ipmi/platform/fake_utils.py b/ceilometer/tests/ipmi/platform/fake_utils.py
new file mode 100644
index 00000000..d5fe47fb
--- /dev/null
+++ b/ceilometer/tests/ipmi/platform/fake_utils.py
@@ -0,0 +1,98 @@
+# Copyright 2014 Intel Corp.
+#
+# Author: Zhai Edwin <edwin.zhai@intel.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import binascii
+
+from ceilometer.ipmi.platform import exception as nmexcept
+from ceilometer.ipmi.platform import intel_node_manager as node_manager
+from ceilometer.tests.ipmi.platform import ipmitool_test_data as test_data
+
+
+def get_sensor_status_init(parameter=''):
+ return (' 01\n', '')
+
+
+def get_sensor_status_uninit(parameter=''):
+ return (' 00\n', '')
+
+
+def init_sensor_agent(parameter=''):
+ return (' 00\n', '')
+
+
+def sdr_dump(data_file=''):
+ if data_file == '':
+ raise ValueError("No file specified for ipmitool sdr dump")
+ fake_slave_address = '2c'
+ fake_channel = '60'
+ hexstr = node_manager.INTEL_PREFIX + fake_slave_address + fake_channel
+ data = binascii.unhexlify(hexstr)
+ with open(data_file, 'wb') as bin_fp:
+ bin_fp.write(data)
+
+ return ('', '')
+
+
+def _execute(funcs, *cmd, **kwargs):
+
+ datas = {
+ test_data.device_id_cmd: test_data.device_id,
+ test_data.nm_device_id_cmd: test_data.nm_device_id,
+ test_data.get_power_cmd: test_data.power_data,
+ test_data.get_temperature_cmd: test_data.temperature_data,
+ test_data.sdr_info_cmd: test_data.sdr_info,
+ test_data.read_sensor_temperature_cmd: test_data.sensor_temperature,
+ test_data.read_sensor_voltage_cmd: test_data.sensor_voltage,
+ test_data.read_sensor_current_cmd: test_data.sensor_current,
+ test_data.read_sensor_fan_cmd: test_data.sensor_fan,
+ }
+
+ if cmd[1] == 'sdr' and cmd[2] == 'dump':
+ # ipmitool sdr dump /tmp/XXXX
+ cmd_str = "".join(cmd[:3])
+ par_str = cmd[3]
+ else:
+ cmd_str = "".join(cmd)
+ par_str = ''
+
+ try:
+ return datas[cmd_str]
+ except KeyError:
+ return funcs[cmd_str](par_str)
+
+
+def execute_with_nm(*cmd, **kwargs):
+ """test version of execute on Node Manager platform."""
+
+ funcs = {test_data.sensor_status_cmd: get_sensor_status_init,
+ test_data.init_sensor_cmd: init_sensor_agent,
+ test_data.sdr_dump_cmd: sdr_dump}
+
+ return _execute(funcs, *cmd, **kwargs)
+
+
+def execute_without_nm(*cmd, **kwargs):
+ """test version of execute on Non-Node Manager platform."""
+
+ funcs = {test_data.sensor_status_cmd: get_sensor_status_uninit,
+ test_data.init_sensor_cmd: init_sensor_agent,
+ test_data.sdr_dump_cmd: sdr_dump}
+
+ return _execute(funcs, *cmd, **kwargs)
+
+
+def execute_without_ipmi(*cmd, **kwargs):
+ raise nmexcept.IPMIException