Browse Source

test/py: move find_ram_base() into u_boot_utils

find_ram_base() is a shared utility function, not a core part of the
U-Boot console interaction.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
Stephen Warren 9 years ago
parent
commit
0526610334
3 changed files with 41 additions and 39 deletions
  1. 3 2
      test/py/tests/test_md.py
  2. 0 37
      test/py/u_boot_console_base.py
  3. 38 0
      test/py/u_boot_utils.py

+ 3 - 2
test/py/tests/test_md.py

@@ -4,13 +4,14 @@
 # SPDX-License-Identifier: GPL-2.0
 # SPDX-License-Identifier: GPL-2.0
 
 
 import pytest
 import pytest
+import u_boot_utils
 
 
 @pytest.mark.buildconfigspec('cmd_memory')
 @pytest.mark.buildconfigspec('cmd_memory')
 def test_md(u_boot_console):
 def test_md(u_boot_console):
     '''Test that md reads memory as expected, and that memory can be modified
     '''Test that md reads memory as expected, and that memory can be modified
     using the mw command.'''
     using the mw command.'''
 
 
-    ram_base = u_boot_console.find_ram_base()
+    ram_base = u_boot_utils.find_ram_base(u_boot_console)
     addr = '%08x' % ram_base
     addr = '%08x' % ram_base
     val = 'a5f09876'
     val = 'a5f09876'
     expected_response = addr + ': ' + val
     expected_response = addr + ': ' + val
@@ -26,7 +27,7 @@ def test_md_repeat(u_boot_console):
     '''Test command repeat (via executing an empty command) operates correctly
     '''Test command repeat (via executing an empty command) operates correctly
     for "md"; the command must repeat and dump an incrementing address.'''
     for "md"; the command must repeat and dump an incrementing address.'''
 
 
-    ram_base = u_boot_console.find_ram_base()
+    ram_base = u_boot_utils.find_ram_base(u_boot_console)
     addr_base = '%08x' % ram_base
     addr_base = '%08x' % ram_base
     words = 0x10
     words = 0x10
     addr_repeat = '%08x' % (ram_base + (words * 4))
     addr_repeat = '%08x' % (ram_base + (words * 4))

+ 0 - 37
test/py/u_boot_console_base.py

@@ -86,7 +86,6 @@ class ConsoleBase(object):
 
 
         self.at_prompt = False
         self.at_prompt = False
         self.at_prompt_logevt = None
         self.at_prompt_logevt = None
-        self.ram_base = None
 
 
     def close(self):
     def close(self):
         '''Terminate the connection to the U-Boot console.
         '''Terminate the connection to the U-Boot console.
@@ -378,39 +377,3 @@ class ConsoleBase(object):
         '''
         '''
 
 
         return ConsoleDisableCheck(self, check_type)
         return ConsoleDisableCheck(self, check_type)
-
-    def find_ram_base(self):
-        '''Find the running U-Boot's RAM location.
-
-        Probe the running U-Boot to determine the address of the first bank
-        of RAM. This is useful for tests that test reading/writing RAM, or
-        load/save files that aren't associated with some standard address
-        typically represented in an environment variable such as
-        ${kernel_addr_r}. The value is cached so that it only needs to be
-        actively read once.
-
-        Args:
-            None.
-
-        Returns:
-            The address of U-Boot's first RAM bank, as an integer.
-        '''
-
-        if self.config.buildconfig.get('config_cmd_bdi', 'n') != 'y':
-            pytest.skip('bdinfo command not supported')
-        if self.ram_base == -1:
-            pytest.skip('Previously failed to find RAM bank start')
-        if self.ram_base is not None:
-            return self.ram_base
-
-        with self.log.section('find_ram_base'):
-            response = self.run_command('bdinfo')
-            for l in response.split('\n'):
-                if '-> start' in l:
-                    self.ram_base = int(l.split('=')[1].strip(), 16)
-                    break
-            if self.ram_base is None:
-                self.ram_base = -1
-                raise Exception('Failed to find RAM bank start in `bdinfo`')
-
-        return self.ram_base

+ 38 - 0
test/py/u_boot_utils.py

@@ -169,3 +169,41 @@ def run_and_log(u_boot_console, cmd, ignore_errors=False):
     runner = u_boot_console.log.get_runner(cmd[0], sys.stdout)
     runner = u_boot_console.log.get_runner(cmd[0], sys.stdout)
     runner.run(cmd, ignore_errors=ignore_errors)
     runner.run(cmd, ignore_errors=ignore_errors)
     runner.close()
     runner.close()
+
+ram_base = None
+def find_ram_base(u_boot_console):
+    '''Find the running U-Boot's RAM location.
+
+    Probe the running U-Boot to determine the address of the first bank
+    of RAM. This is useful for tests that test reading/writing RAM, or
+    load/save files that aren't associated with some standard address
+    typically represented in an environment variable such as
+    ${kernel_addr_r}. The value is cached so that it only needs to be
+    actively read once.
+
+    Args:
+        u_boot_console: A console connection to U-Boot.
+
+    Returns:
+        The address of U-Boot's first RAM bank, as an integer.
+    '''
+
+    global ram_base
+    if u_boot_console.config.buildconfig.get('config_cmd_bdi', 'n') != 'y':
+        pytest.skip('bdinfo command not supported')
+    if ram_base == -1:
+        pytest.skip('Previously failed to find RAM bank start')
+    if ram_base is not None:
+        return ram_base
+
+    with u_boot_console.log.section('find_ram_base'):
+        response = u_boot_console.run_command('bdinfo')
+        for l in response.split('\n'):
+            if '-> start' in l:
+                ram_base = int(l.split('=')[1].strip(), 16)
+                break
+        if ram_base is None:
+            ram_base = -1
+            raise Exception('Failed to find RAM bank start in `bdinfo`')
+
+    return ram_base