| # |
| # Copyright OpenEmbedded Contributors |
| # |
| # SPDX-License-Identifier: MIT |
| # |
| |
| from subprocess import Popen, PIPE |
| from time import sleep |
| |
| from oeqa.runtime.case import OERuntimeTestCase |
| from oeqa.core.decorator.oetimeout import OETimeout |
| from oeqa.core.exception import OEQATimeoutError |
| |
| class PingTest(OERuntimeTestCase): |
| |
| @OETimeout(30) |
| def test_ping(self): |
| output = '' |
| count = 0 |
| self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set") |
| try: |
| while count < 5: |
| cmd = 'ping -c 1 %s' % self.target.ip |
| proc = Popen(cmd, shell=True, stdout=PIPE) |
| output += proc.communicate()[0].decode('utf-8') |
| if proc.poll() == 0: |
| count += 1 |
| else: |
| count = 0 |
| sleep(1) |
| except OEQATimeoutError: |
| self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output)) |
| msg = ('Expected 5 consecutive, got %d.\n' |
| 'ping output is:\n%s' % (count,output)) |
| self.assertEqual(count, 5, msg = msg) |