[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