Exemple #1
0
 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
Exemple #4
0
 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))
Exemple #7
0
 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]))
Exemple #8
0
 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]))
Exemple #11
0
 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]))
Exemple #12
0
 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))
Exemple #13
0
 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())
Exemple #16
0
 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())
Exemple #19
0
 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())
Exemple #21
0
 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())
Exemple #23
0
 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))
Exemple #25
0
 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())
Exemple #27
0
 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())
Exemple #28
0
    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
Exemple #29
0
    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
Exemple #31
0
 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))
Exemple #34
0
 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))