def test_ubuntu_override_policy_binaries(self):
     # The Ubuntu policy incorporates both the existing and the unknown
     # policy.
     universe = getUtility(IComponentSet)['universe']
     distroseries = self.factory.makeDistroSeries()
     pocket = self.factory.getAnyPocket()
     bpn = self.factory.makeBinaryPackageName()
     bpns = []
     expected = []
     for i in xrange(3):
         distroarchseries = self.factory.makeDistroArchSeries(
             distroseries=distroseries)
         bpb = self.factory.makeBinaryPackageBuild(
             distroarchseries=distroarchseries)
         bpr = self.factory.makeBinaryPackageRelease(
             build=bpb, binarypackagename=bpn,
             architecturespecific=True)
         bpph = self.factory.makeBinaryPackagePublishingHistory(
             binarypackagerelease=bpr, distroarchseries=distroarchseries,
             archive=distroseries.main_archive, pocket=pocket)
         bpns.append((bpn, distroarchseries.architecturetag))
         expected.append(
             BinaryOverride(
                 bpn, distroarchseries, bpph.component, bpph.section,
                 bpph.priority, None))
     for i in xrange(2):
         distroarchseries = self.factory.makeDistroArchSeries(
             distroseries=distroseries)
         bpns.append((bpn, distroarchseries.architecturetag))
         expected.append(
             BinaryOverride(
                 bpn, distroarchseries, universe, None, None, None))
     distroseries.nominatedarchindep = distroarchseries
     policy = UbuntuOverridePolicy()
     overrides = policy.calculateBinaryOverrides(
         distroseries.main_archive, distroseries, pocket, bpns)
     self.assertEqual(5, len(overrides))
     key = attrgetter("binary_package_name.name",
         "distro_arch_series.architecturetag",
         "component.name")
     sorted_expected = sorted(expected, key=key)
     sorted_overrides = sorted(overrides, key=key)
     self.assertEqual(sorted_expected, sorted_overrides)
 def test_phased_update_percentage(self):
     # A policy with a phased_update_percentage applies it to new binary
     # overrides.
     universe = getUtility(IComponentSet)['universe']
     distroseries = self.factory.makeDistroSeries()
     pocket = self.factory.getAnyPocket()
     bpn = self.factory.makeBinaryPackageName()
     bpns = []
     expected = []
     distroarchseries = self.factory.makeDistroArchSeries(
         distroseries=distroseries)
     bpb = self.factory.makeBinaryPackageBuild(
         distroarchseries=distroarchseries)
     bpr = self.factory.makeBinaryPackageRelease(
         build=bpb, binarypackagename=bpn, architecturespecific=True)
     bpph = self.factory.makeBinaryPackagePublishingHistory(
         binarypackagerelease=bpr, distroarchseries=distroarchseries,
         archive=distroseries.main_archive, pocket=pocket)
     bpns.append((bpn, distroarchseries.architecturetag))
     expected.append(
         BinaryOverride(
             bpn, distroarchseries, bpph.component, bpph.section,
             bpph.priority, 50))
     distroarchseries = self.factory.makeDistroArchSeries(
         distroseries=distroseries)
     bpns.append((bpn, distroarchseries.architecturetag))
     expected.append(
         BinaryOverride(bpn, distroarchseries, universe, None, None, 50))
     distroseries.nominatedarchindep = distroarchseries
     policy = UbuntuOverridePolicy(phased_update_percentage=50)
     overrides = policy.calculateBinaryOverrides(
         distroseries.main_archive, distroseries, pocket, bpns)
     self.assertEqual(2, len(overrides))
     key = attrgetter("binary_package_name.name",
         "distro_arch_series.architecturetag",
         "component.name")
     sorted_expected = sorted(expected, key=key)
     sorted_overrides = sorted(overrides, key=key)
     self.assertEqual(sorted_expected, sorted_overrides)