backends_unittest.py revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import unittest
6
7from memory_inspector.core import backends
8
9
10class MockDevice(backends.Device):  # pylint: disable=W0223
11  def __init__(self, backend, device_id):
12    super(MockDevice, self).__init__(backend)
13    self.device_id = device_id
14
15  @property
16  def name(self):
17    return "Mock Device %s" % self.device_id
18
19  @property
20  def id(self):
21    return self.device_id
22
23
24class MockBackend(backends.Backend):
25  _SETTINGS = {'key_1': 'key descritpion 1'}
26
27  def __init__(self, backend_name):
28    super(MockBackend, self).__init__(MockBackend._SETTINGS)
29    self.backend_name = backend_name
30
31  def EnumerateDevices(self):
32    yield MockDevice(self, 'device-1')
33    yield MockDevice(self, 'device-2')
34
35  def ExtractSymbols(self, native_heaps, sym_paths):
36    raise NotImplementedError()
37
38  @property
39  def name(self):
40    return self.backend_name
41
42
43class BackendRegisterTest(unittest.TestCase):
44  def runTest(self):
45    mock_backend_1 = MockBackend('mock-backend-1')
46    mock_backend_2 = MockBackend('mock-backend-2')
47    self.assertEqual(mock_backend_1.settings['key_1'], 'key descritpion 1')
48    backends.Register(mock_backend_1)
49    backends.Register(mock_backend_2)
50    devices = list(backends.ListDevices())
51    self.assertEqual(len(devices), 4)
52    self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-1'))
53    self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-2'))
54    self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
55    self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
56    self.assertTrue('key_1' in mock_backend_1.settings)
57