File: test_diskinfo.py

package info (click to toggle)
python-hardware 0.32.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,560 kB
  • sloc: python: 6,364; makefile: 24; sh: 6
file content (70 lines) | stat: -rw-r--r-- 2,711 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright (C) 2013 eNovance SAS <licensing@enovance.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 sys
import unittest
from unittest import mock

from hardware import diskinfo

if sys.version_info.major == 3:
    builtin_module_name = 'builtins'
    long = int
else:
    builtin_module_name = '__builtin__'


class TestDiskinfo(unittest.TestCase):

    def test_sizeingb(self):
        return self.assertEqual(diskinfo.sizeingb(977105060), 500)

    def test_parse_hdparm_output(self):
        return self.assertEqual(
            diskinfo.parse_hdparm_output(
                '\n/dev/sda:\n Timing buffered disk reads: 1436 MB '
                'in  3.00 seconds = 478.22 MB/sec'),
            478.22)

    def test_parse_hdparm_output2(self):
        return self.assertEqual(
            diskinfo.parse_hdparm_output(
                '\n/dev/sdc:\n Timing buffered disk reads:  30 MB '
                'in  3.01 seconds =   9.97 MB/sec\n'),
            9.97)

    @mock.patch('{}.open'.format(builtin_module_name), create=True)
    @mock.patch('os.path.exists', return_value=True)
    def test_get_disk_info(self, mock_os_path_exists, mock_open):
        fake_disk_values = ['Cyberdyne Systems', 'T1000', '0x00', '0',
                            '512', '0', '1023', '[none]']
        mock_open.side_effect = [
            mock.mock_open(read_data=fake_value).return_value
            for fake_value in fake_disk_values]
        hw = []
        sizes = {'fake': 100}
        diskinfo.get_disk_info('fake', sizes, hw)
        self.assertEqual(hw, [('disk', 'fake', 'size', '100'),
                              ('disk', 'fake', 'vendor', 'Cyberdyne Systems'),
                              ('disk', 'fake', 'model', 'T1000'),
                              ('disk', 'fake', 'rev', '0x00'),
                              ('disk', 'fake', 'optimal_io_size', '0'),
                              ('disk', 'fake', 'physical_block_size', '512'),
                              ('disk', 'fake', 'rotational', '0'),
                              ('disk', 'fake', 'nr_requests', '1023'),
                              ('disk', 'fake', 'scheduler', 'none')])


if __name__ == "__main__":
    unittest.main()