[RESEND PATCH 06/10] test: environment in ext4
Patrick Delaunay
patrick.delaunay at st.com
Wed Feb 12 19:44:57 CET 2020
Add basic test to persistent environment in ext4:
save and load in host ext4 file 'uboot.env'.
On first execution a empty EXT4 file system is created in
persistent data dir: env.ext4.img.
Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
---
test/py/tests/test_env.py | 87 +++++++++++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
index cbdb41031c..d35ad888a7 100644
--- a/test/py/tests/test_env.py
+++ b/test/py/tests/test_env.py
@@ -4,6 +4,10 @@
# Test operation of shell commands relating to environment variables.
+import os
+import os.path
+from subprocess import call, check_call
+
import pytest
import u_boot_utils
@@ -380,3 +384,86 @@ def test_env_info_quiet(state_test_env):
assert response == ""
response = c.run_command('echo $?')
assert response == "1"
+
+def mk_env_ext4(state_test_env):
+ c = state_test_env.u_boot_console
+
+ """Create a empty ext4 file system volume.
+ """
+ filename = 'env.ext4.img'
+ persistent = c.config.persistent_data_dir + '/' + filename
+ fs_img = c.config.result_dir + '/' + filename
+
+ if os.path.exists(persistent):
+ c.log.action('Disk image file ' + persistent + ' already exists')
+ else:
+ try:
+ check_call('rm -f %s' % persistent, shell=True)
+ check_call('dd if=/dev/zero of=%s bs=1M count=16'
+ % persistent, shell=True)
+ check_call('mkfs.ext4 -O ^metadata_csum %s' % persistent, shell=True)
+ except CalledProcessError:
+ call('rm -f %s' % persistent, shell=True)
+ raise
+
+ call('cp -f %s %s' % (persistent, fs_img), shell=True)
+ return fs_img
+
+ at pytest.mark.boardspec('sandbox')
+ at pytest.mark.buildconfigspec('cmd_nvedit_info')
+ at pytest.mark.buildconfigspec('cmd_echo')
+ at pytest.mark.buildconfigspec('env_is_in_ext4')
+def test_env_ext4(state_test_env):
+
+ c = state_test_env.u_boot_console
+
+ fs_img = mk_env_ext4(state_test_env)
+ c.run_command('host bind 0 %s' % fs_img)
+
+ response = c.run_command('ext4ls host 0:0')
+ assert 'uboot.env' not in response
+
+ """ env_location: ENVL_EXT4 (2)
+ """
+ response = c.run_command('env_loc 2')
+ assert 'Saving Environment to EXT4' in response
+
+ response = c.run_command('env_loc 2')
+ assert 'Loading Environment from EXT4... OK' in response
+
+ response = c.run_command('ext4ls host 0:0')
+ assert '8192 uboot.env' in response
+
+ response = c.run_command('env info')
+ assert 'env_valid = valid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = false' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Environment was loaded from persistent storage' in response
+ assert 'Environment can be persisted' in response
+
+ response = c.run_command('env info -d -q')
+ assert response == ""
+ response = c.run_command('echo $?')
+ assert response == "1"
+
+ response = c.run_command('env info -p -q')
+ assert response == ""
+ response = c.run_command('echo $?')
+ assert response == "0"
+
+ """ restore env_location: ENVL_NOWHERE (12)
+ """
+ c.run_command('env_loc 12')
+
+ response = c.run_command('env info')
+ assert 'env_valid = valid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = true' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Default environment is used' in response
+ assert 'Environment cannot be persisted' in response
+
+ call('rm -f %s' % fs_img, shell=True)
--
2.17.1
More information about the U-Boot
mailing list