public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] test.py and tftp crc32 test?
Date: Tue, 16 Aug 2016 07:19:44 +0200	[thread overview]
Message-ID: <57B2A270.2030300@denx.de> (raw)
In-Reply-To: <6b0db8bd-72b4-bd48-eeac-3a06992b8fd1@wwwdotorg.org>

Hello Stephen,

Am 16.08.2016 um 05:35 schrieb Stephen Warren:
> On 08/15/2016 05:20 PM, Tom Rini wrote:
>> On Mon, Aug 15, 2016 at 04:59:02PM -0600, Stephen Warren wrote:
>>> On 08/15/2016 04:49 PM, Tom Rini wrote:
>>>> Hey guys,
>>>>
>>>> Is anyone else running the crc32 tftp tests with test.py?  I'm trying to
>>>> do it locally but even with a 2MiB file it looks like somehow the crc32
>>>> is never captured in the output.  I've already made sure that the crc32
>>>> value is in lowercase to match the U-Boot output and running the test
>>>> steps in console gives me the expected output.  And the rest of the
>>>> network tests pass, any ideas?  Thanks!
>>>
>>> I'm not certain that anyone other than myself is running test.py on
>>> real HW (vs. sandbox where it's trivial).
>>>
>>> If you look at test-log.html it should show what U-Boot outputs on
>>> the console, and where any error was detected in the test.
>>> Alternativeluy, add "-s" to the invocation and U-Boot output should
>>> show up on stdout while the tests are running. What's the error
>>> reported there; just a timeout waiting for the CRC? Here's an
>>> example of what test_net_tftpboot looks like for me:
>>>
>>>> Tegra210 (P2371-2180) # tftpboot 80000000 ubtest-readable.bin
>>>> Using eth_rtl8169 device
>>>> TFTP from server 10.20.204.51; our IP address is 10.20.204.52
>>>> Filename 'ubtest-readable.bin'.
>>>> Load address: 0x80000000
>>>> Loading: *%08#################################################################
>>>>      #################################################################
>>>>      #################################################################
>>>>      #################################################################
>>>>      #################################################################
>>>>      ####################
>>>>      2.9 MiB/s
>>>> done
>>>> Bytes transferred = 5058624 (4d3040 hex)
>>>> Tegra210 (P2371-2180) # crc32 80000000 $filesize
>>>> crc32 for 80000000 ... 804d303f ==> c2244b26
>>>> Tegra210 (P2371-2180) #
>>>
>>> In the past, I have seen tests pass when run manually but not under
>>> test.py, e.g. due to heap fragmentation, state, or corrupted memory
>>> due to earlier tests, which weren't run in the manual case. Might
>>> that be the issue?
>>
>> Adding in -s this is part of what I see:
>>
>> => .s=> ping $serverip
>> Waiting for Ethernet connection... done.
>> Using sms0 device
>> host 192.168.0.3 is alive
>> => .=> tftpboot 80000000 1MiBtest.bin
>> Waiting for Ethernet connection... done.
>> Using sms0 device
>> TFTP from server 192.168.0.3; our IP address is 192.168.0.140
>> Filename '1MiBtest.bin'.
>> Load address: 0x80000000
>> Loading: #################################################################
>>          #################################################################
>>          #################################################################
>>          ##########
>>          171.9 KiB/s
>> done
>> Bytes transferred = 1048576 (100000 hex)
>> => crc32 80000000 $filesize
>> CRC32 for 80000000 ... 800fffff ==> F2fa737e0
>> =>
>>
>> For some reason there's an extra 'F' at the start of the crc32 output.
>> Looking at it in the html file, it looks all correct there.  In the
>> output from test.py the captured stdout end just before the CRC32 value
>> would be.  I've tried larger test binaries and get the same output so
>> I'd assume if there was some heap corruption or similar, I'd not tickle
>> it with bigger files too (2MiB, 4MiB and I think even 8MiB are small
>> enough to be downloaded in the time the test allows).  Thanks!
>
> The "F" is coming from the test infrastructure, not U-Boot's output. A character is printed per
> test, such as "." for pass, "s" for skip, and "F" for fail. For some reason, the test is seeing a
> failure before it's read the output from the crc32 command.
>
> Ah, I see the issue now: the command prompt (=>) in use is part of the output from the crc32
> command, so the test infra-structure thinks the ==> printed by crc32 is the end of the crc32 output.
> Perhaps test.py should look for "[\r\n]${prompt}" rather than "${prompt}", or this board could have
> a prompt that's slightly less likely to trigger false matches.

Argh, yes, I had the same problem and added an "ignore list" to
tbot, see:
https://github.com/hsdenx/tbot/blob/master/src/common/tbot_connection_paramiko.py#L39

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  reply	other threads:[~2016-08-16  5:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-15 22:49 [U-Boot] test.py and tftp crc32 test? Tom Rini
2016-08-15 22:59 ` Stephen Warren
2016-08-15 23:20   ` Tom Rini
2016-08-16  3:35     ` Stephen Warren
2016-08-16  5:19       ` Heiko Schocher [this message]
2016-08-16 11:55       ` Tom Rini
2016-08-16  5:14   ` Heiko Schocher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57B2A270.2030300@denx.de \
    --to=hs@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox