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 ^ |
adb pull | yes | no | yes? | ? |
serio -p | no | no | no | no |
adb push | yes | no | no | no |
scp | yes | yes | yes | yes |
serio -g | no | no | no | no |
ttc | depends on wrapped command | can pass it through to sub-command | yes | depends on wrapped command |
missing column 'command' in table |
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.reboot | reboot.sh | put $TEST_HOME/$tarball $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.ft2demos | ft2demos.sh | put ${tarball%.tar*}/bin/.libs/* $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
Benchmark.Java | java_perf.sh | put *.jar $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
netperf | netperf.sh | put *script $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | no |
Benchmark.lmbench2 | lmbench.sh | put -r * $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Functional.posixtestsuite | posixtestsuite.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Functional.cmt | cmt.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Functional.arch_timer | arch_timer.sh | put -r ./* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Functional.scifab | scifab.sh | put -r ./* $OSV_HOME/osv.$TESTDIR/ | yes | yes | no |
Functional.sdhi_0 | sdhi_0.sh | put -r ./* $OSV_HOME/osv.$TESTDIR/ | yes | yes | no |
Functional.expat | expat.sh | put -r XML-Test-Suite.tar tests/.libs/* tests/xmltest.sh $BOARD_TESTDIR/fuego.$TESTDIR/; | yes | yes | yes |
OpenSSL | openssl.sh | put -r apps util test run-tests.sh $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | yes |
Benchmark.aim7 | aim7.sh | put -r data $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
LTP | ltp.sh | put -r fs_tests/* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
Benchmark.GLMark | GLMark.sh | put -r glmark data $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Benchmark.blobsallad | blobsallad.sh | put -r maps $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Benchmark.aim7 | aim7.sh | put -r scripts $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
LTP | ltp.sh | put -r target_bin /tmp/fuego.$TESTDIR/ | yes | no | no |
Functional.fontconfig | fontconfig.sh | put -r test/* $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | yes | no |
LTP | ltp.sh | put -r testcases/kernel/device-drivers/rtc/rtc01 $BOARD_TESTDIR/fuego.$TESTDIR/ | yes | no | no |
Functional.pi_tests | pi_tests.sh | put ./pi_stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.netpipe | NetPIPE.sh | put NPtcp $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.aiostress | aiostress.sh | put aiostress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.bc | bc-script.sh | put bc-device.sh $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.blobsallad | blobsallad.sh | put blobsallad $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.himeno | himeno.sh | put bmt $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.bonnie | bonnie++.sh | put bonnie++ $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.crashme | crashme.sh | put crashme $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.cyclictest | cyclictest.sh | put cyclictest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.dbench | dbench.sh | put dbench client.txt $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.Dhrystone | Dhrystone.sh | put dhrystone $BOARD_TESTDIR/fuego.$TESTDIR/ | | return 1 * | no | no | no |
Benchmark.ebizzy | ebizzy.sh | put ebizzy $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.zlib | zlib.sh | put example minigzip $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.ffsb | ffsb.sh | put examples/profile_everything $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.ffsb | ffsb.sh | put ffsb $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.IOzone | iozone.sh | put fileop iozone pit_server $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Benchmark.fio | fio.sh | put fio examples/fsx-current examples/ssd-test-current $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
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 |
Benchmark.hackbench | hackbench.sh | put hackbench $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.nbench_byte | nbench_byte.sh | put hardware nbench sysinfo.sh *.DAT $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | yes |
Functional.hello_world | hello_world.sh | put hello $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Interbench | interbench.sh | put interbench $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.ipv6connect | ipv6connect.sh | put ipv6connect $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.linpack | linpack.sh | put linpack $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.linus_stress | linus_stress.sh | put linus_stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
netperf | netperf.sh | put netperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.gtkperf | gtkperf.sh | put pixmaps/*.png $BOARD_TESTDIR/fuego.$TESTDIR/share/pixmaps | no | yes | no |
Functional.rmaptest | rmaptest.sh | put rmap-test $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 |
Functional.scrashme | scrashme.sh | put scrashme $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.signaltest | signaltest.sh | put signaltest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.gtkperf | gtkperf.sh | put src/gtkperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.iperf | iperf.sh | put src/iperf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.aim7 | aim7.sh | put src/reaim $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.stress | stress.sh | put src/stress $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Stream | stream.sh | put stream_c.exe $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | yes |
Functional.synctest | synctest.sh | put synctest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.tiobench | tiobench.sh | put tiotest $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.Whetstone | Whetstone.sh | put whetstone $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Benchmark.x11perf | x11perf.sh | put x11perf $BOARD_TESTDIR/fuego.$TESTDIR/ | no | no | no |
Functional.expat | expat.sh | put xmlwf/.libs/xmlwf $BOARD_TESTDIR/xmlwf/xmlwf; | no | no | no |
Functional.bzip2 | bzip2.sh | put {sample*,run-tests.sh} $BOARD_TESTDIR/fuego.$TESTDIR/ | no | yes | yes? |
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