def test_getPendingJobsForDifferences_ignores_other_derived_series(self): dsd = self.factory.makeDistroSeriesDifference() create_job(self.makeDerivedDistroSeries(), dsd.source_package_name, dsd.parent_series) self.assertEqual({}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def find_waiting_jobs_ignores_other_parent_series(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() create_job(dsp.derived_series, package, dsp.parent_series) other_series = self.factory.makeDistroSeries() self.assertContentEqual( [], find_waiting_jobs(dsp.derived_series, package, other_series))
def test_permissions(self): script_users = [ 'archivepublisher', 'gina', 'queued', 'uploader', ] dsp = self.factory.makeDistroSeriesParent() parent = dsp.parent_series derived = dsp.derived_series packages = dict( (user, self.factory.makeSourcePackageName()) for user in script_users) for user in script_users: switch_dbuser(user) try: create_job(derived, packages[user], parent) except ProgrammingError as e: self.assertTrue( False, "Database role %s was unable to create a job. " "Error was: %s" % (user, e)) # The test is that we get here without exceptions. pass
def find_waiting_jobs_ignores_other_parent_series(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() create_job(dsp.derived_series, package, dsp.parent_series) other_series = self.factory.makeDistroSeries() self.assertContentEqual([], find_waiting_jobs(dsp.derived_series, package, other_series))
def test_getPendingJobsForDifferences_ignores_other_derived_series(self): dsd = self.factory.makeDistroSeriesDifference() create_job( self.makeDerivedDistroSeries(), dsd.source_package_name, dsd.parent_series) self.assertEqual( {}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def find_waiting_jobs_finds_waiting_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertContentEqual( [job], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series))
def test_getPendingJobsForDifferences_finds_job(self): dsd = self.factory.makeDistroSeriesDifference() job = create_job(dsd.derived_series, dsd.source_package_name, dsd.parent_series) self.assertEqual({dsd: [job]}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def find_waiting_jobs_finds_waiting_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertContentEqual([job], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series))
def test_may_require_job_only_considers_waiting_jobs_for_redundancy(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() existing_job = create_job( dsp.derived_series, package, dsp.parent_series) existing_job.job.start() self.assertTrue( may_require_job(dsp.derived_series, package, dsp.parent_series))
def test_getPendingJobsForDifferences_finds_job(self): dsd = self.factory.makeDistroSeriesDifference() job = create_job( dsd.derived_series, dsd.source_package_name, dsd.parent_series) self.assertEqual( {dsd: [job]}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def test_getPendingJobsForDifferences_ignores_non_pending_jobs(self): dsd = self.factory.makeDistroSeriesDifference() job = create_job(dsd.derived_series, dsd.source_package_name, dsd.parent_series) removeSecurityProxy(job).job._status = JobStatus.COMPLETED self.assertEqual({}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def test_may_require_job_only_considers_waiting_jobs_for_redundancy(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() existing_job = create_job(dsp.derived_series, package, dsp.parent_series) existing_job.job.start() self.assertTrue( may_require_job(dsp.derived_series, package, dsp.parent_series))
def test_packageset_filter_passes_all_if_parent_has_no_packagesets(self): # Debian in particular has no packagesets. If the parent series # has no packagesets, the packageset filter passes all packages. dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_getPendingJobsForDifferences_ignores_non_pending_jobs(self): dsd = self.factory.makeDistroSeriesDifference() job = create_job( dsd.derived_series, dsd.source_package_name, dsd.parent_series) removeSecurityProxy(job).job._status = JobStatus.COMPLETED self.assertEqual( {}, self.getJobSource().getPendingJobsForDifferences( dsd.derived_series, [dsd]))
def test_packageset_filter_passes_all_if_parent_has_no_packagesets(self): # Debian in particular has no packagesets. If the parent series # has no packagesets, the packageset filter passes all packages. dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_packageset_filter_blocks_unwanted_parent_package(self): dsp = self.factory.makeDistroSeriesParent() self.makeInheritedPackageSet(dsp) package = self.factory.makeSourcePackageName() # Package is in the parent series but not in a packageset shared # between the derived series and the parent series. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertFalse(job.passesPackagesetFilter())
def test_DerivedDistroseriesDifferenceJob(self): self.useFixture(FeatureFixture({ 'jobs.celery.enabled_classes': 'DistroSeriesDifferenceJob', })) dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() with block_on_job(): job = create_job(dsp.derived_series, package, dsp.parent_series) transaction.commit() self.assertEqual(JobStatus.COMPLETED, job.status)
def test_packageset_filter_blocks_unwanted_parent_package(self): dsp = self.factory.makeDistroSeriesParent() self.makeInheritedPackageSet(dsp) package = self.factory.makeSourcePackageName() # Package is in the parent series but not in a packageset shared # between the derived series and the parent series. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertFalse(job.passesPackagesetFilter())
def test_packageset_filter_passes_packages_unique_to_derived_series(self): dsp = self.factory.makeDistroSeriesParent() # Parent must have a packageset or the filter will pass anyway. self.factory.makePackageset(distroseries=dsp.parent_series) package = self.factory.makeSourcePackageName() # Package exists in the derived series but not in the parent # series. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.derived_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_packageset_filter_passes_packages_unique_to_derived_series(self): dsp = self.factory.makeDistroSeriesParent() # Parent must have a packageset or the filter will pass anyway. self.factory.makePackageset(distroseries=dsp.parent_series) package = self.factory.makeSourcePackageName() # Package exists in the derived series but not in the parent # series. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.derived_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_DerivedDistroseriesDifferenceJob(self): self.useFixture( FeatureFixture({ 'jobs.celery.enabled_classes': 'DistroSeriesDifferenceJob', })) dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() with block_on_job(): job = create_job(dsp.derived_series, package, dsp.parent_series) transaction.commit() self.assertEqual(JobStatus.COMPLETED, job.status)
def test_packageset_filter_passes_package_in_inherited_packageset(self): dsp = self.factory.makeDistroSeriesParent() # Package is in a packageset on the parent that the derived # series also has. package = self.factory.makeSourcePackageName() self.makeInheritedPackageSet(dsp, [package]) # Package is in parent series and in a packageset that the # derived series inherited. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_find_waiting_jobs_considers_only_waiting_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() job = create_job(dsp.derived_series, package, dsp.parent_series) job.start() self.assertContentEqual([], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series)) job.complete() self.assertContentEqual([], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series))
def test_find_waiting_jobs_considers_only_waiting_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() job = create_job(dsp.derived_series, package, dsp.parent_series) job.start() self.assertContentEqual( [], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series)) job.complete() self.assertContentEqual( [], find_waiting_jobs(dsp.derived_series, package, dsp.parent_series))
def test_packageset_filter_passes_package_in_inherited_packageset(self): dsp = self.factory.makeDistroSeriesParent() # Package is in a packageset on the parent that the derived # series also has. package = self.factory.makeSourcePackageName() self.makeInheritedPackageSet(dsp, [package]) # Package is in parent series and in a packageset that the # derived series inherited. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_packageset_filter_passes_inherited_packages(self): dsp = self.factory.makeDistroSeriesParent() # Parent must have a packageset or the filter will pass anyway. self.factory.makePackageset(distroseries=dsp.parent_series) package = self.factory.makeSourcePackageName() # Package is not in the packageset _but_ both the parent and # derived series have it. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.derived_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_packageset_filter_passes_inherited_packages(self): dsp = self.factory.makeDistroSeriesParent() # Parent must have a packageset or the filter will pass anyway. self.factory.makePackageset(distroseries=dsp.parent_series) package = self.factory.makeSourcePackageName() # Package is not in the packageset _but_ both the parent and # derived series have it. self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, sourcepackagename=package) self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.derived_series, sourcepackagename=package) job = create_job(dsp.derived_series, package, dsp.parent_series) self.assertTrue(job.passesPackagesetFilter())
def test_permissions(self): script_users = [ 'archivepublisher', 'gina', 'queued', 'uploader', ] dsp = self.factory.makeDistroSeriesParent() parent = dsp.parent_series derived = dsp.derived_series packages = dict((user, self.factory.makeSourcePackageName()) for user in script_users) for user in script_users: switch_dbuser(user) try: create_job(derived, packages[user], parent) except ProgrammingError as e: self.assertTrue( False, "Database role %s was unable to create a job. " "Error was: %s" % (user, e)) # The test is that we get here without exceptions. pass
def test_passesPackagesetFilter(self): dsp = self.factory.makeDistroSeriesParent() self.factory.makePackageset(distroseries=dsp.parent_series) spph = self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, archive=dsp.parent_series.main_archive, pocket=PackagePublishingPocket.RELEASE) dsdj = create_job(dsp.derived_series, spph.sourcepackagerelease.sourcepackagename, dsp.parent_series) switch_dbuser('distroseriesdifferencejob') dsdj.passesPackagesetFilter() # The test is that we get here without exceptions. pass
def test_passesPackagesetFilter(self): dsp = self.factory.makeDistroSeriesParent() self.factory.makePackageset(distroseries=dsp.parent_series) spph = self.factory.makeSourcePackagePublishingHistory( distroseries=dsp.parent_series, archive=dsp.parent_series.main_archive, pocket=PackagePublishingPocket.RELEASE) dsdj = create_job( dsp.derived_series, spph.sourcepackagerelease.sourcepackagename, dsp.parent_series) switch_dbuser('distroseriesdifferencejob') dsdj.passesPackagesetFilter() # The test is that we get here without exceptions. pass
def test_create_job_creates_waiting_job(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() dsdjob = create_job(dsp.derived_series, package, dsp.parent_series) self.assertEqual(JobStatus.WAITING, dsdjob.job.status)
def test_create_job_creates_waiting_job(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() dsdjob = create_job(dsp.derived_series, package, dsp.parent_series) self.assertEqual(JobStatus.WAITING, dsdjob.job.status)
def test_may_require_job_forbids_redundant_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() create_job(dsp.derived_series, package, dsp.parent_series) self.assertFalse( may_require_job(dsp.derived_series, package, dsp.parent_series))
def test_may_require_job_forbids_redundant_jobs(self): dsp = self.factory.makeDistroSeriesParent() package = self.factory.makeSourcePackageName() create_job(dsp.derived_series, package, dsp.parent_series) self.assertFalse( may_require_job(dsp.derived_series, package, dsp.parent_series))