Skip to contentSkip to conversation

test/py: Add support for extending timeout for large files

PATCH New Michal Simek 2 participants 4 messages May 2, 2016 – May 18, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 test/py: Add support for extending timeout for large files

Slow network or big image filesize is not able to be finished in 30s. Add option to user to extend timeout(in miliseconds).

env__net_tftp_readable_file = {
    "fn": "192.168.0.105:zc706/image.ub",
    "addr": 0x20000000,
    "size": 20484981,
    "crc32": "873a30ae",
    "timeout": 50000,
}

---

 test/py/tests/test_net.py | 9 +++++++++
 1 file changed, 9 insertions(+)
test/py/tests/test_net.py +9 -0
index 4ab58b44248a..4f4a876c1335 100644
@@ -46,6 +46,7 @@ env__net_tftp_readable_file = {
     "addr": 0x10000000,
     "size": 5058624,
     "crc32": "c2244b26",
+    "timeout": 50000,
 }
 """
 
@@ -140,6 +141,11 @@ def test_net_tftpboot(u_boot_console):
     if not addr:
         addr = u_boot_utils.find_ram_base(u_boot_console)
 
+    timeout = f.get('timeout', None)
+    if timeout:
+        orig_timeout = u_boot_console.p.timeout
+        u_boot_console.p.timeout = timeout
+
     fn = f['fn']
     output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn))
     expected_text = 'Bytes transferred = '
@@ -157,3 +163,6 @@ def test_net_tftpboot(u_boot_console):
 
     output = u_boot_console.run_command('crc32 %x $filesize' % addr)
     assert expected_crc in output
+
+    if timeout:
+        u_boot_console.p.timeout = orig_timeout
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 test/py: Add support for extending timeout for large files

Quoted 9 lines · Michal Simek

Slow network or big image filesize is not able to be finished in 30s. Add option to user to extend timeout(in miliseconds).

env__net_tftp_readable_file = {
     "fn": "192.168.0.105:zc706/image.ub",
     "addr": 0x20000000,
     "size": 20484981,
     "crc32": "873a30ae",
     "timeout": 50000,

Out of curiosity, I wonder why your network is so slow.

Quoted 15 lines
test/py/tests/test_net.py +5 -0
@@ -140,6 +141,11 @@ def test_net_tftpboot(u_boot_console):
      if not addr:
          addr = u_boot_utils.find_ram_base(u_boot_console)
 
+    timeout = f.get('timeout', None)
+    if timeout:
+        orig_timeout = u_boot_console.p.timeout
+        u_boot_console.p.timeout = timeout
+
      fn = f['fn']
      output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn))
      expected_text = 'Bytes transferred = '

test/py/tests/test_net.py def test_net_tftpboot(u_boot_console): · line 168

Quoted 6 lines
test/py/tests/test_net.py +3 -0
@@ -157,3 +163,6 @@ def test_net_tftpboot(u_boot_console):
 
      output = u_boot_console.run_command('crc32 %x $filesize' % addr)
      assert expected_crc in output
+
+    if timeout:
+        u_boot_console.p.timeout = orig_timeout

The timeout won't be correctly restored if an exception occurs. Please introduce a u_boot_console.temporary_timeout(to) API into u_boot_console_base.py (see e.g. how the existing disable_check() API works) and use it like:

timeout = f.get('timeout', None)
with u_boot_console.temporary_timeout(timeout):
existing code

(The implementation can treat None as "no change")

#2 lore raw

PATCH 1/1 test/py: Add support for extending timeout for large files

Quoted 4 lines · Stephen Warren
Quoted 3 lines · Michal Simek

Slow network or big image filesize is not able to be finished in 30s. Add option to user to extend timeout(in miliseconds).

Quoted 8 lines
Quoted 6 lines
env__net_tftp_readable_file = {
     "fn": "192.168.0.105:zc706/image.ub",
     "addr": 0x20000000,
     "size": 20484981,
     "crc32": "873a30ae",
     "timeout": 50000,

Out of curiosity, I wonder why your network is so slow.

it is on 100Mbit/s and speed is 620kB/s.
In boardfarm because of high traffic this should be also selectable.

Quoted 27 lines
Quoted 15 lines
test/py/tests/test_net.py +5 -0
@@ -140,6 +141,11 @@ def test_net_tftpboot(u_boot_console):
      if not addr:
          addr = u_boot_utils.find_ram_base(u_boot_console)
 
+    timeout = f.get('timeout', None)
+    if timeout:
+        orig_timeout = u_boot_console.p.timeout
+        u_boot_console.p.timeout = timeout
+
      fn = f['fn']
      output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn))
      expected_text = 'Bytes transferred = '

test/py/tests/test_net.py def test_net_tftpboot(u_boot_console): · line 168

Quoted 6 lines
test/py/tests/test_net.py +3 -0
@@ -157,3 +163,6 @@ def test_net_tftpboot(u_boot_console):
 
      output = u_boot_console.run_command('crc32 %x $filesize' % addr)
      assert expected_crc in output
+
+    if timeout:
+        u_boot_console.p.timeout = orig_timeout

The timeout won't be correctly restored if an exception occurs. Please introduce a u_boot_console.temporary_timeout(to) API into u_boot_console_base.py (see e.g. how the existing disable_check() API works) and use it like:

Quoted 5 lines

timeout = f.get('timeout', None)
with u_boot_console.temporary_timeout(timeout):
existing code

(The implementation can treat None as "no change")

ok. Will look at it if my minimal python experience allows me to do it. :-)

Thanks,
Michal

#3 lore raw

PATCH 1/1 test/py: Add support for extending timeout for large files

Quoted 47 lines · Michal Simek
Quoted 4 lines · Stephen Warren
Quoted 3 lines · Michal Simek

Slow network or big image filesize is not able to be finished in 30s. Add option to user to extend timeout(in miliseconds).

Quoted 8 lines
Quoted 6 lines
env__net_tftp_readable_file = {
     "fn": "192.168.0.105:zc706/image.ub",
     "addr": 0x20000000,
     "size": 20484981,
     "crc32": "873a30ae",
     "timeout": 50000,

Out of curiosity, I wonder why your network is so slow.

it is on 100Mbit/s and speed is 620kB/s.
In boardfarm because of high traffic this should be also selectable.

Quoted 27 lines
Quoted 15 lines
test/py/tests/test_net.py +5 -0
@@ -140,6 +141,11 @@ def test_net_tftpboot(u_boot_console):
      if not addr:
          addr = u_boot_utils.find_ram_base(u_boot_console)
 
+    timeout = f.get('timeout', None)
+    if timeout:
+        orig_timeout = u_boot_console.p.timeout
+        u_boot_console.p.timeout = timeout
+
      fn = f['fn']
      output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn))
      expected_text = 'Bytes transferred = '

test/py/tests/test_net.py def test_net_tftpboot(u_boot_console): · line 168

Quoted 6 lines
test/py/tests/test_net.py +3 -0
@@ -157,3 +163,6 @@ def test_net_tftpboot(u_boot_console):
 
      output = u_boot_console.run_command('crc32 %x $filesize' % addr)
      assert expected_crc in output
+
+    if timeout:
+        u_boot_console.p.timeout = orig_timeout

The timeout won't be correctly restored if an exception occurs. Please introduce a u_boot_console.temporary_timeout(to) API into u_boot_console_base.py (see e.g. how the existing disable_check() API works) and use it like:

Quoted 7 lines
Quoted 5 lines

timeout = f.get('timeout', None)
with u_boot_console.temporary_timeout(timeout):
existing code

(The implementation can treat None as "no change")

ok. Will look at it if my minimal python experience allows me to do it. :-)

I have sent the patch for it
"test/py: Support setting up specific timeout"

Thanks,
Michal