Transport_notes 

Fuego wiki

Login or create account

Transport notes

This page has some random notes about the fuego transport functions.

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
Query

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/
  • 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

TBWiki engine 1.8.3 by Tim Bird