image_test/configuration/linux/debian.py (53 lines of code) (raw):

#!/usr/bin/env python3 # Copyright 2018 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import generic_distro import utils class DebianTests(generic_distro.GenericDistroTests): """ Abstract class. Please use a derived one. """ __metaclass__ = abc.ABCMeta @utils.RetryOnFailure() def TestPackageInstallation(self): """ Network instabilities can lead to errors when fetching the apt repository. It worths to try if that happens """ utils.Execute(['apt-get', 'update']) utils.Execute(['apt-get', 'install', '--reinstall', '-y', 'tree']) def IsPackageInstalled(self, package_name): # the following command returns zero if package is installed rc, output = utils.Execute(['dpkg', '-s', package_name], raise_errors=False) return rc == 0 def GetGoogleAptSource(self): return 'packages.cloud.google.com' def TestPackageManagerConfig(self): desired_source = self.GetGoogleAptSource() command = ['grep', '-r', desired_source, '/etc/apt/'] utils.Execute(command) def TestAutomaticSecurityUpdates(self): package_name = 'unattended-upgrades' if not self.IsPackageInstalled(package_name): raise Exception('%s package is not installed' % package_name) # check unattended upgrade configuration command = ['unattended-upgrade', '-v'] rc, output = utils.Execute(command, capture_output=True) for line in output.split('\n'): token = "Allowed origins are:" if line.find(token) >= 0: if len(line) > len(token): # There is some repository used for unattended upgrades return raise Exception('No origin repository used by unattended-upgrade') class Debian8Tests(DebianTests): pass class Debian9Tests(DebianTests): def GetCmdlineConfigs(self): d = super(Debian9Tests, self).GetCmdlineConfigs() d.update({ 'scsi_mod.use_blk_mq': ['Y'], 'net.ifnames': ['0'], 'biosdevname': ['0'], }) return d class Debian10Tests(DebianTests): def GetCmdlineConfigs(self): return { 'console': ['ttyS0', '115200'], 'scsi_mod.use_blk_mq': ['Y'], 'net.ifnames': ['0'], } def GetSshdConfig(self): return { 'PasswordAuthentication': 'no', }