[RTEMS Project] #3691: RTEMS Testing TFTP Proxy Project

RTEMS trac trac at rtems.org
Thu Feb 14 01:43:26 UTC 2019


#3691: RTEMS Testing TFTP Proxy Project
--------------------------+---------------------------------------------
  Reporter:  Chris Johns  |      Owner:  (none)
      Type:  project      |     Status:  new
  Priority:  normal       |  Milestone:  Indefinite
 Component:  unspecified  |    Version:  5
  Severity:  normal       |   Keywords:  SoC, testing, ecosystem, python
Blocked By:               |   Blocking:
--------------------------+---------------------------------------------
 = RTEMS Testing TFTP Proxy Project =

 [[PageOutline(1-5, Contents, inline)]]

 == Mentors ==
 Chris Johns

 == Status ==

 = Introduction =

 This project involves working with the RTEMS Testing Tool that resides in
 the RTEMS Tools package and is part of the RTEMS Tools Project. The RTEMS
 Testing Tool provides a consistent way to test BSPs on different hardware.
 The tool aims to integrate with a wide range of testing tools and methods
 generating a consistent report for the RTEMS test suite.

 An important part of test is testing on real hardware and this may use the
 TFTP protocol. The RTEMS Testing Tool contains a TFTP server so a single
 run of the tool results in a sequential run of the tests for the hardware.
 It also means there can only be a single test run on the host. These are
 both seen as limitation as the time to run all the tests on real hardware
 is long.

 = Project =

 The project is to develop a TFTP proxy in C++ that is built for a host
 when the RTEMS Tools project is build on a host. The TFTP is to take a
 configuration that maps the TFTP client IP address to a proxy port. The
 `rtems-test` tool can be configure to connect to the proxy port and so to
 a TFTP client which is the board running the tests.

 The RTEMS Tool's `rtems-test` command can test on hardware using the
 [https://docs.rtems.org/branches/master/user/testing/index.html#tftp-
 and-u-boot TFTP protocol and U-boot] however the `rtems-test` command
 needs to be run as `root` because the standard TFTP port can only be used
 when `root`. A proxy can be run as `root` while the RTEMS Testing tool can
 be run as a user.

 The U-Boot has support in the code to set a server IP address however
 there was no configuration option and the support is not built in by
 default. Using the server IP would mean standard U-Boot loaders shipped
 with boards could not be used.

 == Goal ==

 * Create a service or daemon that can run as `root` to proxy TFTP
 requests.
 * Read an INI configuration file of TFTP Client IP address mapped to
 remote IP and port.
 * Send a request from a client to the configured remote IP and port and so
 `rtems-test` for that board.
 * Provide optional logging via `syslog`.
 * Provide command line options to trace the proxy tool when integrating.

 == Prerequisite ==

 * Knowledge of C, C++ and Python programming languages.
 * Knowledge of Unix software and Unix networking protocols.
 * Knowledge of the RTEMS Tool's Toolkit.
 * Requires Unix (Linux or FreeBSD) host.
 * Requires modern PC hardware. Building all tests and running takes.
 * A Zedboard, MicroZed or BeagleBone Black.
 * Optionally a Windows 10 machine to test and check.

 == Resources ==

 * Current RTEMS developers.
 * The existing RTEMS Testing Tool.

 = Tasks =

 The following are the tasks:

 == Proxy Tool ==

 Build a program to:

 1. Listen on the detault TFTP port for UDP requests
 1. Extract the source IP address and locate the IP address and port.
 1. Send the request to the remote IP address and port.
 1. Determine if the TFTP protocol will continue between the client and the
 remote server or the proxy tool need to listen for the remote's response
 to send to the client.

 == Configuration Files ==

 Develop a simple configuration for management of boards and testers.

 = Acknowledgements =

 None.

 = Miscellaneous Sections =

 As the project progresses, you will need to add to the RTEMS Testing
 section of the User manual. This section does not currently exist but it
 should be present even in a skeleton form.

 = References =

 * None

--
Ticket URL: <http://devel.rtems.org/ticket/3691>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list