blob: b9554ed735cd02ce36c50db52018826353a76217 [file] [log] [blame]
Fang Deng71c4b1f2013-05-20 09:55:04 -07001#!/usr/bin/python
2# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import __builtin__
7import mox
8import os
9import unittest
10from StringIO import StringIO
11
12import utils
13
14
15class TestUtils(mox.MoxTestBase):
16 """Test utility functions."""
17
18
19 def test_load_servo_interface_mapping(self):
20 """Test servo-interface mapping file can be loaded."""
21 self.mox.StubOutWithMock(__builtin__, 'open')
22 fake_content = (
23 'chromeos1-rack5-host10-servo, chromeos1-poe-switch1, fa42\n'
24 'chromeos1-rack5-host11-servo, chromeos1-poe-switch1, fa43\n'
25 ', chromeos2-poe-switch8, fa43\n'
26 'chromeos2-rack5-host11-servo, chromeos2-poe-switch8, fa44\n')
27 fake_file = self.mox.CreateMockAnything()
28 fake_file.__enter__().AndReturn(StringIO(fake_content))
29 fake_file.__exit__(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())
30 open('fake_file.csv').AndReturn(fake_file)
31 expect = {'chromeos1-rack5-host10-servo':
32 ('chromeos1-poe-switch1', 'fa42'),
33 'chromeos1-rack5-host11-servo':
34 ('chromeos1-poe-switch1', 'fa43'),
35 'chromeos2-rack5-host11-servo':
36 ('chromeos2-poe-switch8', 'fa44')}
37 self.mox.ReplayAll()
38 self.assertEqual(
39 utils.load_servo_interface_mapping('fake_file.csv'), expect)
40 self.mox.VerifyAll()
41
42
43 def _reload_helper(self, do_reload):
44 """Helper class for mapping file reloading tests."""
45 self.mox.StubOutWithMock(utils, 'load_servo_interface_mapping')
46 self.mox.StubOutWithMock(os.path, 'getmtime')
47 check_point = 1369783561.8525634
48 if do_reload:
49 last_modified = check_point + 10.0
50 servo_interface = {'fake_servo': ('fake_switch', 'fake_if')}
51 utils.load_servo_interface_mapping('fake_file').AndReturn(
52 servo_interface)
53 else:
54 last_modified = check_point
55 os.path.getmtime(mox.IgnoreArg()).AndReturn(last_modified)
56 self.mox.ReplayAll()
57 result = utils.reload_servo_interface_mapping_if_necessary(
58 check_point, mapping_file='fake_file')
59 if do_reload:
60 self.assertEqual(result, (last_modified, servo_interface))
61 else:
62 self.assertIsNone(result)
63 self.mox.VerifyAll()
64
65
66 def test_reload_servo_interface_mapping_necessary(self):
67 """Test that mapping file is reloaded when it is modified."""
68 self._reload_helper(True)
69
70
71 def test_reload_servo_interface_mapping_not_necessary(self):
72 """Test that mapping file is not reloaded when it is not modified."""
73 self._reload_helper(False)
74
75
76if __name__ == '__main__':
77 unittest.main()