def test_dispatchBuildToSlave(self):
        # Ensure dispatchBuildToSlave will make the right calls to the slave
        job = self.makeJob()
        test_publisher = SoyuzTestPublisher()
        test_publisher.addFakeChroots(job.build.distroseries)
        slave = OkSlave()
        builder = MockBuilder("bob-de-bouwer")
        builder.processor = getUtility(IProcessorSet).getByName("386")
        job.setBuilder(builder, slave)
        logger = BufferLogger()
        d = defer.maybeDeferred(job.dispatchBuildToSlave, "someid", logger)

        def check_dispatch(ignored):
            self.assertThat(
                logger.getLogBuffer(),
                StartsWith(
                    dedent(
                        """\
                  INFO Sending chroot file for recipe build to bob-de-bouwer
                  INFO Initiating build 1-someid on http://fake:0000
                  """
                    )
                ),
            )
            self.assertEquals(["ensurepresent", "build"], [call[0] for call in slave.call_log])
            build_args = slave.call_log[1][1:]
            self.assertEquals(build_args[0], job.getBuildCookie())
            self.assertEquals(build_args[1], "sourcepackagerecipe")
            self.assertEquals(build_args[3], [])
            distroarchseries = job.build.distroseries.architectures[0]
            self.assertEqual(build_args[4], job._extraBuildArgs(distroarchseries))

        return d.addCallback(check_dispatch)
 def makeJob(self,
             archive=None,
             pocket=PackagePublishingPocket.RELEASE,
             with_builder=False,
             **kwargs):
     """Create a sample `ILiveFSBuildBehaviour`."""
     if archive is None:
         distribution = self.factory.makeDistribution(name="distro")
     else:
         distribution = archive.distribution
     distroseries = self.factory.makeDistroSeries(distribution=distribution,
                                                  name="unstable")
     processor = getUtility(IProcessorSet).getByName("386")
     distroarchseries = self.factory.makeDistroArchSeries(
         distroseries=distroseries,
         architecturetag="i386",
         processor=processor)
     build = self.factory.makeLiveFSBuild(archive=archive,
                                          distroarchseries=distroarchseries,
                                          pocket=pocket,
                                          name="test-livefs",
                                          **kwargs)
     job = IBuildFarmJobBehaviour(build)
     if with_builder:
         builder = MockBuilder()
         builder.processor = processor
         job.setBuilder(builder, None)
     return job
Beispiel #3
0
    def test_dispatchBuildToSlave(self):
        # Ensure dispatchBuildToSlave will make the right calls to the slave
        job = self.makeJob()
        test_publisher = SoyuzTestPublisher()
        test_publisher.addFakeChroots(job.build.distroseries)
        slave = OkSlave()
        builder = MockBuilder("bob-de-bouwer")
        builder.processor = getUtility(IProcessorSet).getByName('386')
        job.setBuilder(builder, slave)
        logger = BufferLogger()
        d = defer.maybeDeferred(job.dispatchBuildToSlave, "someid", logger)

        def check_dispatch(ignored):
            self.assertThat(
                logger.getLogBuffer(),
                StartsWith(
                    dedent("""\
                  INFO Sending chroot file for recipe build to bob-de-bouwer
                  INFO Initiating build 1-someid on http://fake:0000
                  """)))
            self.assertEquals(["ensurepresent", "build"],
                              [call[0] for call in slave.call_log])
            build_args = slave.call_log[1][1:]
            self.assertEquals(build_args[0], job.getBuildCookie())
            self.assertEquals(build_args[1], "sourcepackagerecipe")
            self.assertEquals(build_args[3], [])
            distroarchseries = job.build.distroseries.architectures[0]
            self.assertEqual(build_args[4],
                             job._extraBuildArgs(distroarchseries))

        return d.addCallback(check_dispatch)
 def makeJob(self, **kwargs):
     # We need a builder slave in these tests, in order that requesting a
     # proxy token can piggyback on its reactor and pool.
     job = super(TestAsyncSnapBuildBehaviour, self).makeJob(**kwargs)
     builder = MockBuilder()
     builder.processor = job.build.processor
     slave = self.useFixture(SlaveTestHelpers()).getClientSlave()
     job.setBuilder(builder, slave)
     self.addCleanup(slave.pool.closeCachedConnections)
     return job
 def test_dispatchBuildToSlave_nochroot(self):
     # dispatchBuildToSlave will fail when there is not chroot tarball
     # available for the distroseries to build for.
     job = self.makeJob()
     # test_publisher = SoyuzTestPublisher()
     builder = MockBuilder("bob-de-bouwer")
     builder.processor = getUtility(IProcessorSet).getByName("386")
     job.setBuilder(builder, OkSlave())
     logger = BufferLogger()
     d = defer.maybeDeferred(job.dispatchBuildToSlave, "someid", logger)
     return assert_fails_with(d, CannotBuild)
Beispiel #6
0
 def test_dispatchBuildToSlave_nochroot(self):
     # dispatchBuildToSlave will fail when there is not chroot tarball
     # available for the distroseries to build for.
     job = self.makeJob()
     #test_publisher = SoyuzTestPublisher()
     builder = MockBuilder("bob-de-bouwer")
     builder.processor = getUtility(IProcessorSet).getByName('386')
     job.setBuilder(builder, OkSlave())
     logger = BufferLogger()
     d = defer.maybeDeferred(job.dispatchBuildToSlave, "someid", logger)
     return assert_fails_with(d, CannotBuild)
 def test_dispatchBuildToSlave_falls_back_to_chroot(self):
     job = self.makeJob(allow_internet=False)
     builder = MockBuilder()
     builder.processor = job.build.processor
     slave = OkSlave()
     job.setBuilder(builder, slave)
     chroot_lfa = self.factory.makeLibraryFileAlias(db_only=True)
     job.build.distro_arch_series.addOrUpdateChroot(
         chroot_lfa, image_type=BuildBaseImageType.CHROOT)
     yield job.dispatchBuildToSlave(DevNullLogger())
     self.assertEqual(('ensurepresent', chroot_lfa.http_url, '', ''),
                      slave.call_log[0])
 def makeJob(self, recipe_registrant=None, recipe_owner=None,
             archive=None, git=False, with_builder=False):
     """Create a sample `ISourcePackageRecipeBuild`."""
     spn = self.factory.makeSourcePackageName("apackage")
     if archive is None:
         distro = self.factory.makeDistribution(name="distro")
     else:
         distro = archive.distribution
     distroseries = self.factory.makeDistroSeries(
         name="mydistro", distribution=distro)
     processor = getUtility(IProcessorSet).getByName('386')
     distroseries.nominatedarchindep = distroseries.newArch(
         'i386', processor, True, self.factory.makePerson())
     sourcepackage = self.factory.makeSourcePackage(spn, distroseries)
     if recipe_registrant is None:
         recipe_registrant = self.factory.makePerson(
             email="*****@*****.**",
             name="joe", displayname="Joe User")
     if recipe_owner is None:
         recipe_owner = recipe_registrant
     if git:
         [somebranch] = self.factory.makeGitRefs(
             owner=recipe_owner, name="pkg",
             target=self.factory.makeProduct("someapp"),
             paths=["refs/heads/packaging"])
     else:
         somebranch = self.factory.makeBranch(
             owner=recipe_owner, name="pkg",
             product=self.factory.makeProduct("someapp"))
     recipe = self.factory.makeSourcePackageRecipe(
         recipe_registrant, recipe_owner, distroseries, "recept",
         "Recipe description", branches=[somebranch])
     spb = self.factory.makeSourcePackageRecipeBuild(
         sourcepackage=sourcepackage, archive=archive,
         recipe=recipe, requester=recipe_owner, distroseries=distroseries)
     job = IBuildFarmJobBehaviour(spb)
     if with_builder:
         builder = MockBuilder()
         builder.processor = processor
         job.setBuilder(builder, None)
     return job