Transport notes
These are implemented in base-board.fuegoclass.
This page describes some of the issues related to these functions.
ssh and scp, adb, serio and ttc are candidates for tools that fuego can use for transport operations. Each of these has peculiarities that are worth describing.
scp supports a -r option to use recursion with a set of files and directories.
scp supports transferring more than one file at a time to a single destination directory
- that is, you can do this: scp foo bar target:/tmp
- can you also do this: scp target:foo target:bar /tmp (this is never done by fuego)
table of sub-tool features [edit section]
ssh, adb, serio and ttc are candidates for tools that fuego can use for transport operations.Here is a table of sub-tool features:
tool and command ^ | supports directory recursion ^ | uses -r ^ | supports multiple sources ^ | supports target wildcards ^ |
ttc | depends on wrapped command | can pass it through to sub-command | yes | depends on wrapped command |
adb pull | yes | no | yes? | ? |
serio -p | no | no | no | no |
adb push | yes | no | no | no |
serio -g | no | no | no | no |
scp | yes | yes | yes | yes |
required board variables [edit section]
ttc [edit section]
ttc will use the board name (BOARD_NAME variable), unless TTC_TARGET is defined in the board file.
ebf [edit section]
ebf will use the board name (BOARD_NAME variable), unless EBF_DEVICE is defined in the board file.
lc [edit section]
lc will use the board name (BOARD_NAME variable), unless LC_BOARD is defined in the board file.
tests that require board farm variables [edit section]
The test Functional.gpio_test uses:- LAB_BOARD_NAME if it is defined, otherwise BOARD_NAME
- LAB_SERVER is the address of the lab server
These are passed to the gpio_test.sh on the DUT, to use for accessing the lab server, to perform operations from the target.
I'm not sure about support for authentication for the board.
places where 'get' is called [edit section]
in the system:- functions.sh - in post_test, to get syslogs.
- get /tmp/fuego.${1}/*.${BUILD_ID}.* $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
- uses wildcards, but not recursion (gets both .before and .after log)
- uses wildcard to avoid having to reference full log name and build number (and suffix: 'before' or 'after')
- dump_syslogs -> ov_rootfs_logread is used to create the syslogs
- filename is: ${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.$2
- where $2 is 'before' or 'after'
- changed to:
- get /tmp/fuego.${1}/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.before $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
- get /tmp/fuego.${1}/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.after $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
- get /tmp/fuego.${1}/*.${BUILD_ID}.* $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
- functions.sh - in get_testlog, to get the test log
- get ${2} $FUEGO_LOGS_PATH/${JOB_NAME}/testlogs/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.log
in test scripts:
- 'get' is not used in any tests scripts currently
places where 'put' is called [edit section]
in the system:- 'put' is not used by the system
in test scripts: *
test ^ | script ^ | command ^ | uses -r? ^ | uses wildcard ^ | use multiple sources ^ |
Benchmark.GLMark | GLMark.sh | put -r glmark data $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Benchmark.IOzone | iozone.sh | put fileop iozone pit_server $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Functional.pi_tests | pi_tests.sh | put ./pi_stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.expat | expat.sh | put xmlwf/.libs/xmlwf $BOARD_TESTDIR/xmlwf/xmlwf; | no | no | no |
Functional.cmt | cmt.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
OpenSSL | openssl.sh | put -r apps util test run-tests.sh $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | yes |
Benchmark.Java | java_perf.sh | put *.jar $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
Benchmark.cyclictest | cyclictest.sh | put cyclictest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.nbench-byte | nbench-byte.sh | put hardware nbench sysinfo.sh *.DAT $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | yes |
Benchmark.linpack | linpack.sh | put linpack $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.posixtestsuite | posixtestsuite.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Functional.sdhi_0 | sdhi_0.sh | put -r ./* $OSV_HOME/osv.$TESTDIR/ | yes | yes | no |
Functional.bzip2 | bzip2.sh | put {sample*,run-tests.sh} $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | yes? |
Benchmark.blobsallad | blobsallad.sh | put blobsallad $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.ebizzy | ebizzy.sh | put ebizzy $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.dbench | dbench.sh | put dbench client.txt $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.bonnie | bonnie++.sh | put bonnie++ $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Stream | stream.sh | put stream_c.exe $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.tiobench | tiobench.sh | put tiotest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.scifab | scifab.sh | put -r ./* $OSV_HOME/osv.$TESTDIR/ | yes | yes | no |
Functional.ft2demos | ft2demos.sh | put ${tarball%.tar*}/bin/.libs/* $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
Functional.scrashme | scrashme.sh | put scrashme $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Dhrystone | Dhrystone.sh | put dhrystone $BOARD_TESTDIR/fuego.$TESTDIR/ | | return 1 * | no | no | no |
Functional.bc | bc-script.sh | put bc-device.sh $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
LTP | ltp.sh | put -r fs_tests/* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
LTP | ltp.sh | put -r target_bin /tmp/fuego.$TESTDIR/ | yes | no | no |
Benchmark.blobsallad | blobsallad.sh | put -r maps $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Functional.synctest | synctest.sh | put synctest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.rmaptest | rmaptest.sh | put rmap-test $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.ffsb | ffsb.sh | put examples/profile_everything $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.arch_timer | arch_timer.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Benchmark.ffsb | ffsb.sh | put ffsb $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.iperf | iperf.sh | put src/iperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.signaltest | signaltest.sh | put signaltest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.linus_stress | linus_stress.sh | put linus_stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.ipv6connect | ipv6connect.sh | put ipv6connect $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.gtkperf | gtkperf.sh | put src/gtkperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.glib | glib2.sh | put gio/tests/Makefile.am `find . -name .libs | xargs -IDIRS find DIRS -not -type d -not -name '*.so*' -not -name '*.la*' -perm /u+x` $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no! | yes |
netperf | netperf.sh | put *script $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
Benchmark.Whetstone | Whetstone.sh | put whetstone $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.crashme | crashme.sh | put crashme $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.stress | stress.sh | put src/stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Interbench | interbench.sh | put interbench $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.himeno | himeno.sh | put bmt $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.gtkperf | gtkperf.sh | put pixmaps/*.png $BOARD_TESTDIR/fuego.$TESTDIR/share/pixmaps | no | yes | no |
Benchmark.nbench_byte | nbench_byte.sh | put hardware nbench sysinfo.sh *.DAT $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | yes |
Benchmark.lmbench2 | lmbench.sh | put -r * $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Benchmark.aim7 | aim7.sh | put src/reaim $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.fio | fio.sh | put fio examples/fsx-current examples/ssd-test-current $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.aim7 | aim7.sh | put -r scripts $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Benchmark.hackbench | hackbench.sh | put hackbench $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.hello_world | hello_world.sh | put hello $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.zlib | zlib.sh | put example minigzip $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Functional.aiostress | aiostress.sh | put aiostress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.netpipe | NetPIPE.sh | put NPtcp $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.expat | expat.sh | put -r XML-Test-Suite.tar tests/.libs/* tests/xmltest.sh $BOARD_TESTDIR/fuego.$TESTDIR/; | yes | yes | yes |
netperf | netperf.sh | put netperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
LTP | ltp.sh | put -r testcases/kernel/device-drivers/rtc/rtc01 $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Benchmark.x11perf | x11perf.sh | put x11perf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.jpeg | jpeg.sh | put run-tests.sh test* djpeg cjpeg jpegtran $BOARD_TESTDIR/fuego.$TESTDIR/; | no | yes | yes |
Benchmark.reboot | reboot.sh | put $TEST_HOME/$tarball $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.fontconfig | fontconfig.sh | put -r test/* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Benchmark.aim7 | aim7.sh | put -r data $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
missing column 'uses_-r' in table |
Notes:
- Dhrystone has '|| return 1' - is this needed?
- glib2 has a find|xargs command in the put parameters, for crying out loud!
- only expat and gtkperf put anything outside of $BOARD_TESTDIR/fuego.$TESTDIR
rules [edit section]
Here is a list of rules regarding use of 'get' and 'put' in Fuego:
- get only ever specifies:
- a single file on the target as the source
- a single directory on the host as the destination
- get never takes wildcards
- get never takes multiple files
- put can take a leading '-r' argument, which means to recurse directories
- if -r is used, it must be the first argument to 'put'
- put can take wildcards on the host for sources
- put can take multiple files and directories on the host for sources
- put always takes a single directory on the target as the destination