Esempio n. 1
0
def run(verbose):
	facter = Facter()
	reporter = Reporter()
	apt_pkg_adapter = AptPkgAdapter(apt_pkg)
	apt_pkg_adapter.init()
	cache_adapter = apt_pkg_adapter.get_cache_adapter(CacheAdapterFactory(), reporter, NullProgress())
	apt_depcache_adapter = apt_pkg_adapter.get_depcache_adapter(DepCacheAdapterFactory())
	package_adapter_factory = PackageAdapterFactory(apt_depcache_adapter)
	checker = Checker(facter, verbose)
	config = Config()
	config_finder = ConfigFinder('/etc/apt/forktracer.conf', '/etc/apt/forktracer.d')
	config_parser = ConfigParser()
	for path, file in config_finder:
		config_parser.load(file, config)
	if verbose:
		policy = VerbosePolicy()
	else:
		policy = Policy(apt_pkg_adapter, facter, config)
	cache_adapter.run(checker, policy, package_adapter_factory)
Esempio n. 2
0
def run(verbose):
    facter = Facter()
    reporter = Reporter()
    apt_pkg_adapter = AptPkgAdapter(apt_pkg)
    apt_pkg_adapter.init()
    cache_adapter = apt_pkg_adapter.get_cache_adapter(CacheAdapterFactory(),
                                                      reporter, NullProgress())
    apt_depcache_adapter = apt_pkg_adapter.get_depcache_adapter(
        DepCacheAdapterFactory())
    package_adapter_factory = PackageAdapterFactory(apt_depcache_adapter)
    checker = Checker(facter, verbose)
    config = Config()
    config_finder = ConfigFinder('/etc/apt/forktracer.conf',
                                 '/etc/apt/forktracer.d')
    config_parser = ConfigParser()
    for path, file in config_finder:
        config_parser.load(file, config)
    if verbose:
        policy = VerbosePolicy()
    else:
        policy = Policy(apt_pkg_adapter, facter, config)
    cache_adapter.run(checker, policy, package_adapter_factory)
Esempio n. 3
0
class TestIntegraton(test_helper.MoxTestCase):
    def setUp(self):
        super(TestIntegraton, self).setUp()
        dpkg_status_file = FakePackageFile(type='dpkg')
        debian_stable_package_file = FakePackageFile(archive='stable')
        debian_proposed_updates_package_file = FakePackageFile(
            archive='stable-proposed-updates')
        debian_security_package_file = FakePackageFile(
            archive='stable-security')
        local_package_file = FakePackageFile(origin='SnakeOil, Inc.',
                                             archive='etch')

        libc6_version = FakeVersion('2.6.1-2etch1')
        libc6_version.append_package_file(debian_stable_package_file)
        libc6_version.append_package_file(debian_security_package_file)
        libc6_updates_version = FakeVersion('2.6.1-2etch2')
        libc6_updates_version.append_package_file(
            debian_proposed_updates_package_file)
        libc6_updates_version.append_package_file(dpkg_status_file)
        libc6 = FakePackage(name='libc6')
        libc6.append_version(libc6_updates_version, True)
        libc6.append_version(libc6_version)

        libspf_version = FakeVersion('0.1-1')
        libspf_version.append_package_file(debian_stable_package_file)
        libspf_updates_version = FakeVersion('0.1-2')
        libspf_updates_version.append_package_file(
            debian_proposed_updates_package_file)
        libspf_local_version = FakeVersion('0.1-1~sl1')
        libspf_local_version.append_package_file(dpkg_status_file)
        libspf_local_version.append_package_file(local_package_file)
        libspf = FakePackage(name='libspf')
        libspf.append_version(libspf_version)
        libspf.append_version(libspf_local_version, True)
        libspf.append_version(libspf_updates_version)

        libfoobar_version = FakeVersion('0.5-5')
        libfoobar_version.append_package_file(debian_stable_package_file)
        libfoobar_local_version = FakeVersion('0.5-5~sl1')
        libfoobar_local_version.append_package_file(dpkg_status_file)
        libfoobar_local_version.append_package_file(local_package_file)
        libfoobar = FakePackage(name='libfoobar')
        libfoobar.append_version(libfoobar_version)
        libfoobar.append_version(libfoobar_local_version, True)

        git_version = FakeVersion('1:1.5.2.5-2build1')
        git_version.append_package_file(debian_stable_package_file)
        git_backport_version = FakeVersion('1:1.5.6.3-1.1ubuntu2~mowsiany.1')
        git_backport_version.append_package_file(dpkg_status_file)
        git_backport_version.append_package_file(local_package_file)
        git = FakePackage(name='git-core')
        git.append_version(git_version)
        git.append_version(git_backport_version, True)

        self.apt_cache = self.struct()
        self.apt_cache.packages = [git, libc6, libspf, libfoobar]

        self.apt_depcache = self.struct()
        version_table = {
            'libc6': libc6_updates_version,
            'libspf': libspf_local_version,
            'libfoobar': libfoobar_local_version,
            'git-core': git_backport_version
        }
        self.apt_depcache.get_candidate_ver = lambda o: version_table[o.name]

        self.reporter = self.mox.CreateMock(Reporter)
        self.mock_progress = self.struct()

        self.apt_pkg = self._create_mock_apt_pkg_module()
        test_helper.copy_state_constants(self.apt_pkg, apt_pkg)
        self.apt_pkg.Cache(self.mock_progress).AndReturn(self.apt_cache)

        self.facter = self.mox.CreateMock(Facter)
        self.facter.distributors_id = 'Debian'

    def finishSetUp(self):
        self.apt_pkg_adapter = AptPkgAdapter(self.apt_pkg)
        self.apt_pkg_adapter.init()
        cache_adapter_factory = CacheAdapterFactory()
        self.package_adapter_factory = PackageAdapterFactory(
            DepCacheAdapter(self.apt_depcache))
        self.cache_adapter = self.apt_pkg_adapter.get_cache_adapter(
            cache_adapter_factory, self.reporter, self.mock_progress)

        config_finder = ConfigFinder('test-data/config')
        config_parser = ConfigParser()
        self.config = Config()
        for path, file in config_finder:
            config_parser.load(file, self.config)

    def test_verbose(self):
        # lib6 - never
        self.reporter.report(
            mox.Func(lambda o: o.package_name == 'libspf')).InAnyOrder()
        self.reporter.report(
            mox.Func(lambda o: o.package_name == 'libfoobar')).InAnyOrder()
        self.reporter.report(
            mox.Func(lambda o: o.package_name == 'git-core')).InAnyOrder()
        self.mox.ReplayAll()

        self.finishSetUp()
        checker = Checker(self.facter, True)
        policy = VerbosePolicy()
        self.cache_adapter.run(checker, policy, self.package_adapter_factory)

    def test_non_verbose_empty_config(self):
        # libc6 - never
        self.reporter.report(
            mox.Func(lambda o: o.package_name == 'libspf')).InAnyOrder()
        # libfoobar - never
        self.reporter.report(
            mox.Func(lambda o: o.package_name == 'git-core')).InAnyOrder()
        self.mox.ReplayAll()

        self.finishSetUp()
        checker = Checker(self.facter)
        policy = Policy(self.apt_pkg_adapter, self.facter, Config())
        self.cache_adapter.run(checker, policy, self.package_adapter_factory)

    def test_non_verbose(self):
        # libc6 - never
        self.reporter.report(mox.Func(lambda o: o.package_name == 'libspf'))
        # libfoobar - never
        # git-core - never
        self.mox.ReplayAll()

        self.finishSetUp()
        checker = Checker(self.facter)
        policy = Policy(self.apt_pkg_adapter, self.facter, self.config)
        self.cache_adapter.run(checker, policy, self.package_adapter_factory)
class TestIntegraton(test_helper.MoxTestCase):
	def setUp(self):
		super(TestIntegraton, self).setUp()
		dpkg_status_file = FakePackageFile(type = 'dpkg')
		debian_stable_package_file = FakePackageFile(archive = 'stable')
		debian_proposed_updates_package_file = FakePackageFile(archive = 'stable-proposed-updates')
		debian_security_package_file = FakePackageFile(archive = 'stable-security')
		local_package_file = FakePackageFile(origin = 'SnakeOil, Inc.', archive = 'etch')

		libc6_version = FakeVersion('2.6.1-2etch1')
		libc6_version.append_package_file(debian_stable_package_file)
		libc6_version.append_package_file(debian_security_package_file)
		libc6_updates_version = FakeVersion('2.6.1-2etch2')
		libc6_updates_version.append_package_file(debian_proposed_updates_package_file)
		libc6_updates_version.append_package_file(dpkg_status_file)
		libc6 = FakePackage(name = 'libc6')
		libc6.append_version(libc6_updates_version, True)
		libc6.append_version(libc6_version)

		libspf_version = FakeVersion('0.1-1')
		libspf_version.append_package_file(debian_stable_package_file)
		libspf_updates_version = FakeVersion('0.1-2')
		libspf_updates_version.append_package_file(debian_proposed_updates_package_file)
		libspf_local_version = FakeVersion('0.1-1~sl1')
		libspf_local_version.append_package_file(dpkg_status_file)
		libspf_local_version.append_package_file(local_package_file)
		libspf = FakePackage(name = 'libspf')
		libspf.append_version(libspf_version)
		libspf.append_version(libspf_local_version, True)
		libspf.append_version(libspf_updates_version)

		libfoobar_version = FakeVersion('0.5-5')
		libfoobar_version.append_package_file(debian_stable_package_file)
		libfoobar_local_version = FakeVersion('0.5-5~sl1')
		libfoobar_local_version.append_package_file(dpkg_status_file)
		libfoobar_local_version.append_package_file(local_package_file)
		libfoobar = FakePackage(name = 'libfoobar')
		libfoobar.append_version(libfoobar_version)
		libfoobar.append_version(libfoobar_local_version, True)

		git_version = FakeVersion('1:1.5.2.5-2build1')
		git_version.append_package_file(debian_stable_package_file)
		git_backport_version = FakeVersion('1:1.5.6.3-1.1ubuntu2~mowsiany.1')
		git_backport_version.append_package_file(dpkg_status_file)
		git_backport_version.append_package_file(local_package_file)
		git = FakePackage(name = 'git-core')
		git.append_version(git_version)
		git.append_version(git_backport_version, True)

		self.apt_cache = self.struct()
		self.apt_cache.packages = [git, libc6, libspf, libfoobar]

		self.apt_depcache = self.struct()
		version_table = {
			'libc6': libc6_updates_version,
			'libspf': libspf_local_version,
			'libfoobar': libfoobar_local_version,
			'git-core': git_backport_version}
		self.apt_depcache.get_candidate_ver = lambda o: version_table[o.name]

		self.reporter = self.mox.CreateMock(Reporter)
		self.mock_progress = self.struct()

		self.apt_pkg = self._create_mock_apt_pkg_module()
		test_helper.copy_state_constants(self.apt_pkg, apt_pkg)
		self.apt_pkg.Cache(self.mock_progress).AndReturn(self.apt_cache)

		self.facter = self.mox.CreateMock(Facter)
		self.facter.distributors_id = 'Debian'

	def finishSetUp(self):
		self.apt_pkg_adapter = AptPkgAdapter(self.apt_pkg)
		self.apt_pkg_adapter.init()
		cache_adapter_factory = CacheAdapterFactory()
		self.package_adapter_factory = PackageAdapterFactory(DepCacheAdapter(self.apt_depcache))
		self.cache_adapter = self.apt_pkg_adapter.get_cache_adapter(cache_adapter_factory, self.reporter, self.mock_progress)

		config_finder = ConfigFinder('test-data/config')
		config_parser = ConfigParser()
		self.config = Config()
		for path, file in config_finder:
			config_parser.load(file, self.config)

	def test_verbose(self):
		# lib6 - never
		self.reporter.report(mox.Func(lambda o: o.package_name == 'libspf')).InAnyOrder()
		self.reporter.report(mox.Func(lambda o: o.package_name == 'libfoobar')).InAnyOrder()
		self.reporter.report(mox.Func(lambda o: o.package_name == 'git-core')).InAnyOrder()
		self.mox.ReplayAll()

		self.finishSetUp()
		checker = Checker(self.facter, True)
		policy = VerbosePolicy()
		self.cache_adapter.run(checker, policy, self.package_adapter_factory)

	def test_non_verbose_empty_config(self):
		# libc6 - never
		self.reporter.report(mox.Func(lambda o: o.package_name == 'libspf')).InAnyOrder()
		# libfoobar - never
		self.reporter.report(mox.Func(lambda o: o.package_name == 'git-core')).InAnyOrder()
		self.mox.ReplayAll()

		self.finishSetUp()
		checker = Checker(self.facter)
		policy = Policy(self.apt_pkg_adapter, self.facter, Config())
		self.cache_adapter.run(checker, policy, self.package_adapter_factory)

	def test_non_verbose(self):
		# libc6 - never
		self.reporter.report(mox.Func(lambda o: o.package_name == 'libspf'))
		# libfoobar - never
		# git-core - never
		self.mox.ReplayAll()

		self.finishSetUp()
		checker = Checker(self.facter)
		policy = Policy(self.apt_pkg_adapter, self.facter, self.config)
		self.cache_adapter.run(checker, policy, self.package_adapter_factory)