~hloeung/maas/no-missing-packages

« back to all changes in this revision

Viewing changes to src/provisioningserver/drivers/power/tests/test_moonshot.py

  • Committer: MAAS Lander
  • Author(s): newell.jensen at canonical
  • Date: 2016-04-06 21:10:37 UTC
  • mfrom: (4874.1.2 maas-latest)
  • Revision ID: maas_lander-20160406211037-7g32f6tkhqcw8hy3
[r=blake-rouse][bug=1566503][author=newell-jensen] Update power drivers to by Python3 byte string compliant.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
from provisioningserver.utils.shell import (
18
18
    ExternalProcessError,
19
19
    has_command_available,
 
20
    select_c_utf8_locale,
20
21
)
21
22
from testtools.matchers import Equals
22
23
 
58
59
 
59
60
    def test__issue_ipmitool_command_issues_power_on(self):
60
61
        context = make_parameters()
61
 
        power_change = 'on'
62
 
        ipmitool_command = make_ipmitool_command(power_change, **context)
 
62
        env = select_c_utf8_locale()
 
63
        ipmitool_command = make_ipmitool_command('on', **context)
63
64
        moonshot_driver = MoonshotIPMIPowerDriver()
64
65
        call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
65
 
        call_and_check_mock.return_value = power_change
 
66
        call_and_check_mock.return_value = b'on'
66
67
 
67
 
        result = moonshot_driver._issue_ipmitool_command(
68
 
            power_change, **context)
 
68
        result = moonshot_driver._issue_ipmitool_command('on', **context)
69
69
 
70
70
        self.expectThat(
71
 
            call_and_check_mock, MockCalledOnceWith(ipmitool_command))
72
 
        self.expectThat(result, Equals(power_change))
 
71
            call_and_check_mock, MockCalledOnceWith(ipmitool_command, env=env))
 
72
        self.expectThat(result, Equals('on'))
73
73
 
74
74
    def test__issue_ipmitool_command_issues_power_off(self):
75
75
        context = make_parameters()
76
 
        power_change = 'off'
77
 
        ipmitool_command = make_ipmitool_command(power_change, **context)
 
76
        env = select_c_utf8_locale()
 
77
        ipmitool_command = make_ipmitool_command('off', **context)
78
78
        moonshot_driver = MoonshotIPMIPowerDriver()
79
79
        call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
80
 
        call_and_check_mock.return_value = power_change
 
80
        call_and_check_mock.return_value = b'off'
81
81
 
82
 
        result = moonshot_driver._issue_ipmitool_command(
83
 
            power_change, **context)
 
82
        result = moonshot_driver._issue_ipmitool_command('off', **context)
84
83
 
85
84
        self.expectThat(
86
 
            call_and_check_mock, MockCalledOnceWith(ipmitool_command))
87
 
        self.expectThat(result, Equals(power_change))
 
85
            call_and_check_mock, MockCalledOnceWith(ipmitool_command, env=env))
 
86
        self.expectThat(result, Equals('off'))
88
87
 
89
88
    def test__issue_ipmitool_command_raises_power_action_error(self):
90
89
        context = make_parameters()
91
 
        power_change = 'other'
92
 
        ipmitool_command = make_ipmitool_command(power_change, **context)
 
90
        env = select_c_utf8_locale()
 
91
        ipmitool_command = make_ipmitool_command('other', **context)
93
92
        moonshot_driver = MoonshotIPMIPowerDriver()
94
93
        call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
95
 
        call_and_check_mock.return_value = power_change
 
94
        call_and_check_mock.return_value = b'other'
96
95
 
97
96
        self.assertRaises(
98
97
            PowerActionError, moonshot_driver._issue_ipmitool_command,
99
 
            power_change, **context)
 
98
            'other', **context)
100
99
        self.expectThat(
101
 
            call_and_check_mock, MockCalledOnceWith(ipmitool_command))
 
100
            call_and_check_mock, MockCalledOnceWith(ipmitool_command, env=env))
102
101
 
103
102
    def test__issue_ipmitool_raises_power_fatal_error(self):
104
103
        context = make_parameters()