Skip to content

Commit

Permalink
add test for two 'loadables'
Browse files Browse the repository at this point in the history
Nothing too fancy.  A simple test that attmpts to load two loadables and
verify that they are properly unpacked in the u-boot sandbox.
Signed-off-by: Karl Apsite <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
  • Loading branch information
Karl Apsite authored and trini committed May 28, 2015
1 parent d52e857 commit 657fd2d
Showing 1 changed file with 63 additions and 9 deletions.
72 changes: 63 additions & 9 deletions test/image/test-fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@
load = <0x40000>;
entry = <0x8>;
};
kernel@2 {
data = /incbin/("%(loadables1)s");
type = "kernel";
arch = "sandbox";
os = "linux";
compression = "none";
%(loadables1_load)s
entry = <0x0>;
};
fdt@1 {
description = "snow";
data = /incbin/("u-boot.dtb");
Expand All @@ -69,13 +78,23 @@
%(ramdisk_load)s
compression = "none";
};
ramdisk@2 {
description = "snow";
data = /incbin/("%(loadables2)s");
type = "ramdisk";
arch = "sandbox";
os = "linux";
%(loadables2_load)s
compression = "none";
};
};
configurations {
default = "conf@1";
conf@1 {
kernel = "kernel@1";
fdt = "fdt@1";
%(ramdisk_config)s
%(loadables_config)s
};
};
};
Expand Down Expand Up @@ -103,6 +122,8 @@
sb save hostfs 0 %(kernel_addr)x %(kernel_out)s %(kernel_size)x
sb save hostfs 0 %(fdt_addr)x %(fdt_out)s %(fdt_size)x
sb save hostfs 0 %(ramdisk_addr)x %(ramdisk_out)s %(ramdisk_size)x
sb save hostfs 0 %(loadables1_addr)x %(loadables1_out)s %(loadables1_size)x
sb save hostfs 0 %(loadables2_addr)x %(loadables2_out)s %(loadables2_size)x
reset
'''

Expand Down Expand Up @@ -188,30 +209,32 @@ def make_fit(mkimage, params):
print >>fd, base_fdt
return fit

def make_kernel():
def make_kernel(filename, text):
"""Make a sample kernel with test data
Args:
filename: the name of the file you want to create
Returns:
Filename of kernel created
Full path and filename of the kernel it created
"""
fname = make_fname('test-kernel.bin')
fname = make_fname(filename)
data = ''
for i in range(100):
data += 'this kernel %d is unlikely to boot\n' % i
data += 'this %s %d is unlikely to boot\n' % (text, i)
with open(fname, 'w') as fd:
print >>fd, data
return fname

def make_ramdisk():
def make_ramdisk(filename, text):
"""Make a sample ramdisk with test data
Returns:
Filename of ramdisk created
"""
fname = make_fname('test-ramdisk.bin')
fname = make_fname(filename)
data = ''
for i in range(100):
data += 'ramdisk %d was seldom used in the middle ages\n' % i
data += '%s %d was seldom used in the middle ages\n' % (text, i)
with open(fname, 'w') as fd:
print >>fd, data
return fname
Expand Down Expand Up @@ -298,11 +321,15 @@ def run_fit_test(mkimage, u_boot):

# Set up invariant files
control_dtb = make_dtb()
kernel = make_kernel()
ramdisk = make_ramdisk()
kernel = make_kernel('test-kernel.bin', 'kernel')
ramdisk = make_ramdisk('test-ramdisk.bin', 'ramdisk')
loadables1 = make_kernel('test-loadables1.bin', 'lenrek')
loadables2 = make_ramdisk('test-loadables2.bin', 'ksidmar')
kernel_out = make_fname('kernel-out.bin')
fdt_out = make_fname('fdt-out.dtb')
ramdisk_out = make_fname('ramdisk-out.bin')
loadables1_out = make_fname('loadables1-out.bin')
loadables2_out = make_fname('loadables2-out.bin')

# Set up basic parameters with default values
params = {
Expand All @@ -324,6 +351,20 @@ def run_fit_test(mkimage, u_boot):
'ramdisk_size' : filesize(ramdisk),
'ramdisk_load' : '',
'ramdisk_config' : '',

'loadables1' : loadables1,
'loadables1_out' : loadables1_out,
'loadables1_addr' : 0x100000,
'loadables1_size' : filesize(loadables1),
'loadables1_load' : '',

'loadables2' : loadables2,
'loadables2_out' : loadables2_out,
'loadables2_addr' : 0x140000,
'loadables2_size' : filesize(loadables2),
'loadables2_load' : '',

'loadables_config' : '',
}

# Make a basic FIT and a script to load it
Expand Down Expand Up @@ -378,6 +419,19 @@ def run_fit_test(mkimage, u_boot):
if read_file(ramdisk) != read_file(ramdisk_out):
fail('Ramdisk not loaded', stdout)

# Configuration with some Loadables
set_test('Kernel + FDT + Ramdisk load + Loadables')
params['loadables_config'] = 'loadables = "kernel@2", "ramdisk@2";'
params['loadables1_load'] = 'load = <%#x>;' % params['loadables1_addr']
params['loadables2_load'] = 'load = <%#x>;' % params['loadables2_addr']
fit = make_fit(mkimage, params)
stdout = command.Output(u_boot, '-d', control_dtb, '-c', cmd)
debug_stdout(stdout)
if read_file(loadables1) != read_file(loadables1_out):
fail('Loadables1 (kernel) not loaded', stdout)
if read_file(loadables2) != read_file(loadables2_out):
fail('Loadables2 (ramdisk) not loaded', stdout)

def run_tests():
"""Parse options, run the FIT tests and print the result"""
global base_path, base_dir
Expand Down

0 comments on commit 657fd2d

Please sign in to comment.