[PATCH] tester: Change to a simpler TFTP server
Gedare Bloom
gedare at rtems.org
Fri Aug 28 22:47:02 UTC 2020
On Thu, Aug 27, 2020 at 5:25 PM Chris Johns <chrisj at rtems.org> wrote:
>
> On 28/8/20 1:44 am, Gedare Bloom wrote:
> > On Wed, Aug 26, 2020 at 10:56 PM <chrisj at rtems.org> wrote:
> >>
> >> From: Chris Johns <chrisj at rtems.org>
> >>
> >> - Add a simpler TFTP to allow parallel test hardware
> >>
> >> - Remove the imported tftpy server
> >>
> >> Closes #4063
> >> ---
> >> tester/rt/tftp.py | 37 +-
> >> tester/rt/tftpserver.py | 619 +++++++++++++++++++++++++++
> >> tester/rt/tftpy/COPYING | 21 -
> >> tester/rt/tftpy/README | 115 -----
> >> tester/rt/tftpy/TftpClient.py | 107 -----
> >> tester/rt/tftpy/TftpContexts.py | 429 -------------------
> >> tester/rt/tftpy/TftpPacketFactory.py | 47 --
> >> tester/rt/tftpy/TftpPacketTypes.py | 494 ---------------------
> >> tester/rt/tftpy/TftpServer.py | 271 ------------
> >> tester/rt/tftpy/TftpShared.py | 52 ---
> >> tester/rt/tftpy/TftpStates.py | 611 --------------------------
> >> tester/rt/tftpy/__init__.py | 27 --
> >> tester/rtems-tftp-server | 46 ++
> >> 13 files changed, 685 insertions(+), 2191 deletions(-)
> >> create mode 100644 tester/rt/tftpserver.py
> >> delete mode 100644 tester/rt/tftpy/COPYING
> >> delete mode 100644 tester/rt/tftpy/README
> >> delete mode 100644 tester/rt/tftpy/TftpClient.py
> >> delete mode 100644 tester/rt/tftpy/TftpContexts.py
> >> delete mode 100644 tester/rt/tftpy/TftpPacketFactory.py
> >> delete mode 100644 tester/rt/tftpy/TftpPacketTypes.py
> >> delete mode 100644 tester/rt/tftpy/TftpServer.py
> >> delete mode 100644 tester/rt/tftpy/TftpShared.py
> >> delete mode 100644 tester/rt/tftpy/TftpStates.py
> >> delete mode 100644 tester/rt/tftpy/__init__.py
> >> create mode 100755 tester/rtems-tftp-server
> >>
> >> diff --git a/tester/rt/tftp.py b/tester/rt/tftp.py
> >> index d518036..46a1d11 100644
> >> --- a/tester/rt/tftp.py
> >> +++ b/tester/rt/tftp.py
> >> @@ -43,7 +43,7 @@ import sys
> >> from rtemstoolkit import error
> >> from rtemstoolkit import reraise
> >>
> >> -import tftpy
> >> +import tftpserver
> >>
> >> class tftp(object):
> >> '''RTEMS Testing TFTP base.'''
> >> @@ -88,7 +88,7 @@ class tftp(object):
> >> def _stop(self):
> >> try:
> >> if self.server:
> >> - self.server.stop(now = True)
> >> + self.server.stop()
> >> except:
> >> pass
> >>
> >> @@ -101,6 +101,10 @@ class tftp(object):
> >>
> >> def _timeout(self):
> >> self._stop()
> >> + while self.running or not self.finished:
> >> + self._unlock('_timeout')
> >> + time.sleep(0.1)
> >> + self._lock('_timeout')
> >> if self.timeout is not None:
> >> self.timeout()
> >>
> >> @@ -119,22 +123,21 @@ class tftp(object):
> >> return None
> >>
> >> def _listener(self):
> >> - tftpy_log = logging.getLogger('tftpy')
> >> - tftpy_log.setLevel(100)
> >> + self._lock('_listener')
> >> + exe = self.exe
> >> + self.exe = None
> >> + self._unlock('_listener')
> >> + self.server = tftpserver.tftp_server(host = 'all',
> >> + port = self.port,
> >> + timeout = 1,
> >> + forced_file = exe,
> >> + sessions = 1)
> >> try:
> >> - self.server = tftpy.TftpServer(tftproot = '.',
> >> - dyn_file_func = self._exe_handle)
> >> - except tftpy.TftpException as te:
> >> - raise error.general('tftp: %s' % (str(te)))
> >> - if self.server is not None:
> >> - try:
> >> - self.server.listen('0.0.0.0', self.port, 0.5)
> >> - except tftpy.TftpException as te:
> >> - raise error.general('tftp: %s' % (str(te)))
> >> - except IOError as ie:
> >> - if ie.errno == errno.EACCES:
> >> - raise error.general('tftp: permissions error: check tftp server port')
> >> - raise error.general('tftp: io error: %s' % (str(ie)))
> >> + self.server.start()
> >> + self.server.run()
> >> + except:
> >> + self.server.stop()
> >> + raise
> >>
> >> def _runner(self):
> >> self._lock('_runner')
> >> diff --git a/tester/rt/tftpserver.py b/tester/rt/tftpserver.py
> >> new file mode 100644
> >> index 0000000..b307bd2
> >> --- /dev/null
> >> +++ b/tester/rt/tftpserver.py
> >> @@ -0,0 +1,619 @@
> >> +#
> >> +# Copyright 2020 Chris Johns (chris at contemporary.software)
> > Nice email.
>
> Oh haha I had not noticed this was in the file.
>
> >
> >> +# All rights reserved.
> >> +#
> >> +# Permission to use, copy, modify, and/or distribute this software for any
> >> +# purpose with or without fee is hereby granted, provided that the above
> >> +# copyright notice and this permission notice appear in all copies.
> >> +#
> >> +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> >> +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> >> +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> >> +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> >> +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> >> +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> >> +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> >> +
> > Not the preferred file block:
> > https://docs.rtems.org/branches/master/eng/coding-file-hdr.html#python-file-template
> >
> > But, we could add an MIT template.
>
> I am fine with having all the code move to the documented template header. Like
> the RSB the repo should be checked and moved over.
>
> > I don't really have the context to check python code. Please do a pass
> > over the guidelines to see if you think you got to them.
>
> Do you mean section 6.5 in the engineering manual? I have reviewed the guide
> lines and I have not passed the code through a formatter or static checker. I
> would like to add to waf the ability to run the formatting and static checker
> and to migrate all the code. I think it is important but I am not sure how big a
> job it is. I would prefer to make the change sooner rather than later so any
> stability issues that happen occur now rather than later in the release cycle.
>
> Is the code OK to merge?
>
Yes go ahead. We will get more strict as we get the existing code up
to the standards (and as I learn them :)).
> Chris
More information about the devel
mailing list