[U-Boot] [PATCH] py: test_gpio: Add support for GPIO pytest

Michal Simek michal.simek at xilinx.com
Wed Sep 20 07:55:19 UTC 2017


From: Vipul Kumar <vipul.kumar at xilinx.com>

This patch tests the gpio commands using the
gpio data from boardenv file.

Also one test will show the default status of all the gpio's
supported by the processor.

Signed-off-by: Vipul Kumar <vipulk at xilinx.com>
Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---

 test/py/tests/test_gpio.py | 111 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)
 create mode 100644 test/py/tests/test_gpio.py

diff --git a/test/py/tests/test_gpio.py b/test/py/tests/test_gpio.py
new file mode 100644
index 000000000000..5ab237c8abe5
--- /dev/null
+++ b/test/py/tests/test_gpio.py
@@ -0,0 +1,111 @@
+# Copyright (c) 2017 Xilinx, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0
+
+# Test various gpio-related functionality, such as the input, set,
+# clear and toggle.
+
+import pytest
+import random
+
+"""
+Note: This test relies on boardenv_* containing configuration values to define
+which the gpio available for testing. Without this, this test will be  automat-
+ically skipped.
+
+For example:
+
+# A list of gpio's that are going to be tested in order to validate the
+# test.
+env__gpio_val = {
+     "gpio": [0,1,2],
+}
+
+# A list of gpio's that are shorted on the hardware board and first gpio of
+# each group is configured as input and the other as output. If the pins are
+# not shorted properly, then the test will be fail.
+env__gpio_input_output = {
+     "list_of_gpios": [ [36, 37], [38, 39]],
+}
+"""
+
+def gpio_input(u_boot_console, gpio):
+    u_boot_console.run_command("gpio input %d" %gpio)
+    response = u_boot_console.run_command("gpio status -a %d" %gpio)
+    expected_response = "%d: input:" %gpio
+    assert(expected_response in response)
+
+def gpio_set(u_boot_console, gpio):
+    expected_response = "%d: output: 1" %gpio
+    u_boot_console.run_command("gpio set %d" %gpio)
+    response = u_boot_console.run_command("gpio status -a %d" %gpio)
+    assert(expected_response in response)
+
+def gpio_clear(u_boot_console, gpio):
+    expected_response = "%d: output: 0" %gpio
+    u_boot_console.run_command("gpio clear %d" %gpio)
+    response = u_boot_console.run_command("gpio status -a %d" %gpio)
+    assert(expected_response in response)
+
+def gpio_toggle(u_boot_console, gpio):
+    expected_response = "%d: output: 1" %gpio
+    u_boot_console.run_command("gpio toggle %d" %gpio)
+    response = u_boot_console.run_command("gpio status -a %d" %gpio)
+    assert(expected_response in response)
+
+ at pytest.mark.buildconfigspec("cmd_gpio")
+def test_gpio_status(u_boot_console):
+    response = u_boot_console.run_command("gpio status -a")
+    expected_response = "0: input:"
+    assert(expected_response in response)
+
+ at pytest.mark.buildconfigspec("cmd_gpio")
+def test_gpio(u_boot_console):
+    f = u_boot_console.config.env.get('env__gpio_val', None)
+    if not f:
+        pytest.skip('No GPIO readable file to read')
+
+    gpin = f.get("gpio", None)
+
+    for gpio in gpin:
+        gpio_input(u_boot_console, gpio)
+        gpio_set(u_boot_console, gpio)
+        gpio_clear(u_boot_console, gpio)
+        gpio_toggle(u_boot_console, gpio)
+
+ at pytest.mark.buildconfigspec("cmd_gpio")
+def test_gpio_input_output(u_boot_console):
+    f = u_boot_console.config.env.get('env__gpio_input_output', None)
+    if not f:
+        pytest.skip('No GPIO readable file to read')
+
+    list_of_gpios = f.get("list_of_gpios", None)
+
+    flag = 0
+    for list in list_of_gpios:
+        for i in list:
+            if flag == 0:
+               gpio_in = i
+               expected_response = "%d: input:" %gpio_in
+               u_boot_console.run_command("gpio input %d" %gpio_in)
+               response = u_boot_console.run_command("gpio status -a %d" %gpio_in)
+               assert(expected_response in response)
+               flag = 1
+
+            else:
+               gpio_out = i
+               expected_response = "%d: output:" %gpio_out
+               u_boot_console.run_command("gpio set %d" %gpio_out)
+               response = u_boot_console.run_command("gpio status -a %d" %gpio_out)
+               assert(expected_response in response)
+               flag = 0
+
+        expected_response = "%d: input: 0" %gpio_in
+        u_boot_console.run_command("gpio clear %d" %gpio_out)
+        response = u_boot_console.run_command("gpio status -a %d" %gpio_in)
+        assert(expected_response in response)
+
+        expected_response = "%d: input: 1" %gpio_in
+        u_boot_console.run_command("gpio set %d" %gpio_out)
+        response = u_boot_console.run_command("gpio status -a %d" %gpio_in)
+        assert(expected_response in response)
-- 
1.9.1



More information about the U-Boot mailing list