blob: e463dd2ec2d050e239dc2f624518da3e67e0c4a2 [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import logging
import shutil
import time
import urlparse
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib import utils
class autoupdate_DisconnectReconnectNetwork(test.test):
Tests removing network for a couple minutes.
This test will be used in conjunction with
version = 1
def cleanup(self):
shutil.copy('/var/log/update_engine.log', self.resultsdir)
# Turn adapters back on'ifconfig eth0 up', ignore_status=True)'ifconfig eth1 up', ignore_status=True)
utils.start_service('recover_duts', ignore_status=True)
# We can't return right after reconnecting the network or the server
# test may not receive the message. So we wait a bit longer for the
# DUT to be reconnected.
deadline=5, timeout=5) == 0,
sleep_interval=1)'Online ready to return to server test')
def run_once(self, update_url, time_without_network=120):
self._update_server = urlparse.urlparse(update_url).hostname
# DUTs in the lab have a service called recover_duts that is used to
# check that the DUT is online and if it is not it will bring it back
# online. We will need to stop this service for the length of this test.
utils.stop_service('recover_duts', ignore_status=True)
# Disable the network adapters.'ifconfig eth0 down')'ifconfig eth1 down')
# Check that we are offline.
result =, deadline=5, timeout=5)
if result != 2:
raise error.TestFail('Ping succeeded even though we were offline.')
# Get the update percentage as the network is down
percent_before ='update_engine_client --status').stdout
percent_before = percent_before.splitlines()[1].partition('=')[2]
seconds = 1
while seconds < time_without_network:'update_engine_client --status').stdout)
seconds = seconds + 1
percent_after ='update_engine_client --status').stdout
percent_after = percent_after.splitlines()[1].partition('=')[2]
if percent_before != percent_after:
if percent_before < percent_after:
raise error.TestFail('The update continued while the network '
'was supposedly disabled. Before: '
'%s, After: %s' % (percent_before,
raise error.TestFail('The update appears to have restarted. '
'Before: %s, After: %s' % (percent_before,