Example #1
0
 def test_start_worker_but_error(self):
     worker = self.makeWorker(image="buggy")
     d = worker.substantiate(None, fakebuild.FakeBuildForRendering())
     self.reactor.advance(.1)
     self.failureResultOf(d)
     self.assertIsNotNone(worker.client)
     self.assertEqual(worker.instance, None)
    def test_start_worker(self):
        # http://mesosphere.github.io/marathon/docs/rest-api.html#post-v2-apps
        worker = self.makeWorker()
        worker.password = "******"
        worker.masterFQDN = "master"
        self._http.expect(
            method='delete',
            ep='/v2/apps/buildbot-worker/buildbot-bot-masterhash')
        self._http.expect(method='post',
                          ep='/v2/apps',
                          json={
                              'instances': 1,
                              'container': {
                                  'docker': {
                                      'image': 'rendered:debian:wheezy',
                                      'network': 'BRIDGE'
                                  },
                                  'type': 'DOCKER'
                              },
                              'id': 'buildbot-worker/buildbot-bot-masterhash',
                              'env': {
                                  'BUILDMASTER': "master",
                                  'BUILDMASTER_PORT': '1234',
                                  'WORKERNAME': 'bot',
                                  'WORKERPASS': "******"
                              }
                          },
                          code=201,
                          content_json={'Id': 'id'})
        d = worker.substantiate(None, fakebuild.FakeBuildForRendering())
        # we simulate a connection
        worker.attached(FakeBot())
        self.successResultOf(d)

        self.assertEqual(worker.instance, {'Id': 'id'})
 def test_start_worker_but_error(self):
     worker = self.makeWorker()
     self._http.expect(
         method='delete',
         ep='/v2/apps/buildbot-worker/buildbot-bot-masterhash')
     self._http.expect(method='post',
                       ep='/v2/apps',
                       json={
                           'instances': 1,
                           'container': {
                               'docker': {
                                   'image': 'rendered:debian:wheezy',
                                   'network': 'BRIDGE'
                               },
                               'type': 'DOCKER'
                           },
                           'id': 'buildbot-worker/buildbot-bot-masterhash',
                           'env': {
                               'BUILDMASTER': "master",
                               'BUILDMASTER_PORT': '1234',
                               'WORKERNAME': 'bot',
                               'WORKERPASS': "******"
                           }
                       },
                       code=404,
                       content_json={'message': 'image not found'})
     self._http.expect(
         method='delete',
         ep='/v2/apps/buildbot-worker/buildbot-bot-masterhash')
     d = worker.substantiate(None, fakebuild.FakeBuildForRendering())
     self.reactor.advance(.1)
     self.failureResultOf(d)
     self.assertEqual(worker.instance, None)
    def test_start_worker_but_no_connection_and_shutdown(self):
        worker = self.makeWorker()
        worker.password = "******"
        worker.masterFQDN = "master"
        self._http.expect(
            method='delete',
            ep='/v2/apps/buildbot-worker/buildbot-bot-masterhash')
        self._http.expect(method='post',
                          ep='/v2/apps',
                          json={
                              'instances': 1,
                              'container': {
                                  'docker': {
                                      'image': 'rendered:debian:wheezy',
                                      'network': 'BRIDGE'
                                  },
                                  'type': 'DOCKER'
                              },
                              'id': 'buildbot-worker/buildbot-bot-masterhash',
                              'env': {
                                  'BUILDMASTER': "master",
                                  'BUILDMASTER_PORT': '1234',
                                  'WORKERNAME': 'bot',
                                  'WORKERPASS': "******"
                              }
                          },
                          code=201,
                          content_json={'Id': 'id'})

        worker.substantiate(None, fakebuild.FakeBuildForRendering())
        self.assertEqual(worker.instance, {'Id': 'id'})
Example #5
0
 def test_start_worker_but_already_created_with_same_name(self):
     worker = self.makeWorker(image="cool")
     worker.client.create_container(image="foo",
                                    name=worker.getContainerName())
     d = worker.substantiate(None, fakebuild.FakeBuildForRendering())
     self.reactor.advance(.1)
     worker.attached(FakeBot())
     self.successResultOf(d)
     self.assertIsNotNone(worker.client)
Example #6
0
 def test_start_worker_but_no_connection_and_shutdown(self):
     worker = self.makeWorker()
     worker.substantiate(None, fakebuild.FakeBuildForRendering())
     self.assertIsNotNone(worker.client)
     self.assertEqual(
         worker.instance, {
             'Id':
             '8a61192da2b3bb2d922875585e29b74ec0dc4e0117fcbf84c962204e97564cd7',
             'Warnings': None,
             'image': 'rendered:debian:wheezy'
         })
Example #7
0
    def test_start_worker(self):
        worker = self.makeWorker()

        d = worker.substantiate(None, fakebuild.FakeBuildForRendering())
        # we simulate a connection
        worker.attached(FakeBot())
        self.successResultOf(d)

        self.assertIsNotNone(worker.client)
        self.assertEqual(
            worker.instance, {
                'Id':
                '8a61192da2b3bb2d922875585e29b74ec0dc4e0117fcbf84c962204e97564cd7',
                'Warnings': None,
                'image': 'rendered:debian:wheezy'
            })