コード例 #1
0
    def test_set_power_good(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)

        psu_status = psud.PsuStatus(mock_logger, mock_psu)
        assert psu_status.power_good == False

        # Test toggling power_good to True
        ret = psu_status.set_power_good(True)
        assert ret == True
        assert psu_status.power_good == True

        # Test attempting to set power_good to the same as the current value (return value should be False)
        ret = psu_status.set_power_good(True)
        assert ret == False
        assert psu_status.power_good == True

        # Test toggling power_good to False
        ret = psu_status.set_power_good(False)
        assert ret == True
        assert psu_status.power_good == False

        # Test attempting to set power_good to the same as the current value (return value should be False)
        ret = psu_status.set_power_good(False)
        assert ret == False
        assert psu_status.power_good == False
コード例 #2
0
    def test_update_led_color(self):
        mock_psu = MockPsu("PSU 1", 0, True, True)
        mock_logger = mock.MagicMock()
        psu_status = psud.PsuStatus(mock_logger, mock_psu)

        daemon_psud = psud.DaemonPsud(SYSLOG_IDENTIFIER)
        daemon_psud.psu_tbl = mock.MagicMock()
        daemon_psud._update_psu_fan_led_status = mock.MagicMock()

        # If psud.platform_chassis is None, _update_psu_fan_led_status() should do nothing
        psud.platform_chassis = None
        daemon_psud._update_led_color()
        assert daemon_psud.psu_tbl.set.call_count == 0
        assert daemon_psud._update_psu_fan_led_status.call_count == 0

        psud.platform_chassis = MockChassis()
        daemon_psud.psu_status_dict[1] = psu_status
        expected_fvp = psud.swsscommon.FieldValuePairs([('led_status', MockPsu.STATUS_LED_COLOR_OFF)])
        daemon_psud._update_led_color()
        assert daemon_psud.psu_tbl.set.call_count == 1
        daemon_psud.psu_tbl.set.assert_called_with(psud.PSU_INFO_KEY_TEMPLATE.format(1), expected_fvp)
        assert daemon_psud._update_psu_fan_led_status.call_count == 1
        daemon_psud._update_psu_fan_led_status.assert_called_with(mock_psu, 1)

        daemon_psud.psu_tbl.reset_mock()
        daemon_psud._update_psu_fan_led_status.reset_mock()

        mock_psu.set_status_led(MockPsu.STATUS_LED_COLOR_GREEN)
        expected_fvp = psud.swsscommon.FieldValuePairs([('led_status', MockPsu.STATUS_LED_COLOR_GREEN)])
        daemon_psud._update_led_color()
        assert daemon_psud.psu_tbl.set.call_count == 1
        daemon_psud.psu_tbl.set.assert_called_with(psud.PSU_INFO_KEY_TEMPLATE.format(1), expected_fvp)
        assert daemon_psud._update_psu_fan_led_status.call_count == 1
        daemon_psud._update_psu_fan_led_status.assert_called_with(mock_psu, 1)

        daemon_psud.psu_tbl.reset_mock()
        daemon_psud._update_psu_fan_led_status.reset_mock()

        mock_psu.set_status_led(MockPsu.STATUS_LED_COLOR_RED)
        expected_fvp = psud.swsscommon.FieldValuePairs([('led_status', MockPsu.STATUS_LED_COLOR_RED)])
        daemon_psud._update_led_color()
        assert daemon_psud.psu_tbl.set.call_count == 1
        daemon_psud.psu_tbl.set.assert_called_with(psud.PSU_INFO_KEY_TEMPLATE.format(1), expected_fvp)
        assert daemon_psud._update_psu_fan_led_status.call_count == 1
        daemon_psud._update_psu_fan_led_status.assert_called_with(mock_psu, 1)

        daemon_psud.psu_tbl.reset_mock()
        daemon_psud._update_psu_fan_led_status.reset_mock()

        # Test exception handling
        mock_psu.get_status_led = mock.Mock(side_effect=NotImplementedError)
        expected_fvp = psud.swsscommon.FieldValuePairs([('led_status', psud.NOT_AVAILABLE)])
        daemon_psud._update_led_color()
        assert daemon_psud.psu_tbl.set.call_count == 1
        daemon_psud.psu_tbl.set.assert_called_with(psud.PSU_INFO_KEY_TEMPLATE.format(1), expected_fvp)
        assert daemon_psud._update_psu_fan_led_status.call_count == 1
        daemon_psud._update_psu_fan_led_status.assert_called_with(mock_psu, 1)
コード例 #3
0
    def test_set_psu_led(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)
        psu_status = psud.PsuStatus(mock_logger, mock_psu)

        daemon_psud = psud.DaemonPsud(SYSLOG_IDENTIFIER)

        psu_status.presence = True
        psu_status.power_good = True
        psu_status.voltage_good = True
        psu_status.temperature_good = True
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_GREEN

        psu_status.presence = False
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_RED

        psu_status.presence = True
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_GREEN

        psu_status.power_good = False
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_RED

        psu_status.power_good = True
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_GREEN

        psu_status.voltage_good = False
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_RED

        psu_status.voltage_good = True
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_GREEN

        psu_status.temperature_good = False
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_RED

        psu_status.temperature_good = True
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert mock_psu.get_status_led() == mock_psu.STATUS_LED_COLOR_GREEN

        # Test set_status_led not implemented
        mock_psu.set_status_led = mock.MagicMock(
            side_effect=NotImplementedError)
        daemon_psud.log_warning = mock.MagicMock()
        daemon_psud._set_psu_led(mock_psu, psu_status)
        assert daemon_psud.log_warning.call_count == 1
        daemon_psud.log_warning.assert_called_with(
            "set_status_led() not implemented")
コード例 #4
0
    def test_set_temperature(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)

        psu_status = psud.PsuStatus(mock_logger, mock_psu)
        assert psu_status.temperature_good == False

        # Pass in a good temperature
        ret = psu_status.set_temperature(20.123, 50.0)
        assert ret == True
        assert psu_status.temperature_good == True

        # Pass in a another good temperature successively (return value should be False)
        ret = psu_status.set_temperature(31.456, 50.0)
        assert ret == False
        assert psu_status.temperature_good == True

        # Pass in a high temperature
        ret = psu_status.set_temperature(50.001, 50.0)
        assert ret == True
        assert psu_status.temperature_good == False

        # Pass in a another bad temperature successively (return value should be False)
        ret = psu_status.set_temperature(50.0, 50.0)
        assert ret == False
        assert psu_status.temperature_good == False

        # Pass in a good (high edge case) temperature
        ret = psu_status.set_temperature(49.999, 50.0)
        assert ret == True
        assert psu_status.temperature_good == True

        # Test passing parameters as None when temperature_good == True
        ret = psu_status.set_temperature(psud.NOT_AVAILABLE, 50.0)
        assert ret == False
        assert psu_status.temperature_good == True
        ret = psu_status.set_temperature(20.123, psud.NOT_AVAILABLE)
        assert ret == False
        assert psu_status.temperature_good == True

        # Test passing parameters as None when temperature_good == False
        psu_status.temperature_good = False
        ret = psu_status.set_temperature(psud.NOT_AVAILABLE, 50.0)
        assert ret == False
        assert psu_status.temperature_good == True
        psu_status.temperature_good = False
        ret = psu_status.set_temperature(20.123, psud.NOT_AVAILABLE)
        assert ret == False
        assert psu_status.temperature_good == True
コード例 #5
0
    def test_is_ok(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)

        psu_status = psud.PsuStatus(mock_logger, mock_psu)
        psu_status.presence = True
        psu_status.power_good = True
        psu_status.voltage_good = True
        psu_status.temperature_good = True
        ret = psu_status.is_ok()
        assert ret == True

        psu_status.presence = False
        ret = psu_status.is_ok()
        assert ret == False

        psu_status.presence = True
        ret = psu_status.is_ok()
        assert ret == True

        psu_status.power_good = False
        ret = psu_status.is_ok()
        assert ret == False

        psu_status.power_good = True
        ret = psu_status.is_ok()
        assert ret == True

        psu_status.voltage_good = False
        ret = psu_status.is_ok()
        assert ret == False

        psu_status.voltage_good = True
        ret = psu_status.is_ok()
        assert ret == True

        psu_status.temperature_good = False
        ret = psu_status.is_ok()
        assert ret == False

        psu_status.temperature_good = True
        ret = psu_status.is_ok()
        assert ret == True
コード例 #6
0
    def test_set_presence(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)

        psu_status = psud.PsuStatus(mock_logger, mock_psu)
        assert psu_status.presence == False

        # Test toggling presence to True
        ret = psu_status.set_presence(True)
        assert ret == True
        assert psu_status.presence == True

        # Test toggling presence to False
        ret = psu_status.set_presence(False)
        assert ret == True
        assert psu_status.presence == False

        # Test attempting to set presence to the same as the current value
        ret = psu_status.set_presence(False)
        assert ret == False
        assert psu_status.presence == False
コード例 #7
0
    def test_set_voltage(self):
        mock_logger = mock.MagicMock()
        mock_psu = MockPsu("PSU 1", 0, True, True)

        psu_status = psud.PsuStatus(mock_logger, mock_psu)
        assert psu_status.voltage_good == False

        # Pass in a good voltage
        ret = psu_status.set_voltage(12.0, 12.5, 11.5)
        assert ret == True
        assert psu_status.voltage_good == True

        # Pass in a another good voltage successively (return value should be False)
        ret = psu_status.set_voltage(11.9, 12.5, 11.5)
        assert ret == False
        assert psu_status.voltage_good == True

        # Pass in a high voltage
        ret = psu_status.set_voltage(12.6, 12.5, 11.5)
        assert ret == True
        assert psu_status.voltage_good == False

        # Pass in a another bad voltage successively (return value should be False)
        ret = psu_status.set_voltage(12.7, 12.5, 11.5)
        assert ret == False
        assert psu_status.voltage_good == False

        # Pass in a good (high edge case) voltage
        ret = psu_status.set_voltage(12.5, 12.5, 11.5)
        assert ret == True
        assert psu_status.voltage_good == True

        # Pass in a low voltage
        ret = psu_status.set_voltage(11.4, 12.5, 11.5)
        assert ret == True
        assert psu_status.voltage_good == False

        # Pass in a good (low edge case) voltage
        ret = psu_status.set_voltage(11.5, 12.5, 11.5)
        assert ret == True
        assert psu_status.voltage_good == True

        # Test passing parameters as None when voltage_good == True
        ret = psu_status.set_voltage(psud.NOT_AVAILABLE, 12.5, 11.5)
        assert ret == False
        assert psu_status.voltage_good == True
        ret = psu_status.set_voltage(11.5, psud.NOT_AVAILABLE, 11.5)
        assert ret == False
        assert psu_status.voltage_good == True
        ret = psu_status.set_voltage(11.5, 12.5, psud.NOT_AVAILABLE)
        assert ret == False
        assert psu_status.voltage_good == True

        # Test passing parameters as None when voltage_good == False
        psu_status.voltage_good = False
        ret = psu_status.set_voltage(psud.NOT_AVAILABLE, 12.5, 11.5)
        assert ret == False
        assert psu_status.voltage_good == True
        psu_status.voltage_good = False
        ret = psu_status.set_voltage(11.5, psud.NOT_AVAILABLE, 11.5)
        assert ret == False
        assert psu_status.voltage_good == True
        psu_status.voltage_good = False
        ret = psu_status.set_voltage(11.5, 12.5, psud.NOT_AVAILABLE)
        assert ret == False
        assert psu_status.voltage_good == True