コード例 #1
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
    def test_poll_server_sleep(self):
        slept = []
        self.mock(time, 'sleep', slept.append)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
                {
                    'data': {},
                    'headers': {
                        'X-XSRF-Token-Request': '1'
                    }
                },
                {
                    'xsrf_token': 'token'
                },
            ),
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes,
                    'headers': {
                        'X-XSRF-Token': 'token'
                    },
                },
                {
                    'cmd': 'sleep',
                    'duration': 1.24,
                },
            ),
        ])
        self.assertFalse(bot_main.poll_server(self.bot))
        self.assertEqual([1.24], slept)
コード例 #2
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
  def test_poll_server_sleep(self):
    slept = []
    self.mock(time, 'sleep', slept.append)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
            {'data': {}, 'headers': {'X-XSRF-Token-Request': '1'}},
            {'xsrf_token': 'token'},
          ),
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'headers': {'X-XSRF-Token': 'token'},
            },
            {
              'cmd': 'sleep',
              'duration': 1.24,
            },
          ),
        ])
    self.assertFalse(bot_main.poll_server(self.bot))
    self.assertEqual([1.24], slept)
コード例 #3
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
    def test_poll_server_restart_load_test(self):
        os.environ['SWARMING_LOAD_TEST'] = '1'
        self.mock(time, 'sleep', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)
        self.mock(self.bot, 'restart', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
                {
                    'data': {},
                    'headers': {
                        'X-XSRF-Token-Request': '1'
                    }
                },
                {
                    'xsrf_token': 'token'
                },
            ),
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes,
                    'headers': {
                        'X-XSRF-Token': 'token'
                    },
                },
                {
                    'cmd': 'restart',
                    'message': 'Please die now',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot))
コード例 #4
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
  def test_poll_server_restart_load_test(self):
    os.environ['SWARMING_LOAD_TEST'] = '1'
    self.mock(time, 'sleep', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
            {'data': {}, 'headers': {'X-XSRF-Token-Request': '1'}},
            {'xsrf_token': 'token'},
          ),
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'headers': {'X-XSRF-Token': 'token'},
            },
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot))
コード例 #5
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
    def test_poll_server_update(self):
        update = []
        self.mock(time, 'sleep', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', lambda *args: update.append(args))

        self.expected_requests([
            (
                'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
                {
                    'data': {},
                    'headers': {
                        'X-XSRF-Token-Request': '1'
                    }
                },
                {
                    'xsrf_token': 'token'
                },
            ),
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes,
                    'headers': {
                        'X-XSRF-Token': 'token'
                    },
                },
                {
                    'cmd': 'update',
                    'version': '123',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot))
        self.assertEqual([(self.bot, '123')], update)
コード例 #6
0
  def test_poll_server_restart_load_test(self):
    os.environ['SWARMING_LOAD_TEST'] = '1'
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'follow_redirects': False,
              'headers': {},
              'timeout': remote_client.NET_CONNECTION_TIMEOUT_SEC,
            },
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit, 0))
コード例 #7
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
  def test_poll_server_run(self):
    manifest = []
    self.mock(time, 'sleep', self.fail)
    self.mock(bot_main, 'run_manifest', lambda *args: manifest.append(args))
    self.mock(bot_main, 'update_bot', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
            {'data': {}, 'headers': {'X-XSRF-Token-Request': '1'}},
            {'xsrf_token': 'token'},
          ),
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.bot._attributes,
              'headers': {'X-XSRF-Token': 'token'},
            },
            {
              'cmd': 'run',
              'manifest': {'foo': 'bar'},
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot))
    expected = [(self.bot, {'foo': 'bar'}, time.time())]
    self.assertEqual(expected, manifest)
コード例 #8
0
  def test_poll_server_run(self):
    manifest = []
    clean = []
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', lambda *args: manifest.append(args))
    self.mock(bot_main, 'clean_cache',
              lambda *args: clean.append(args))
    self.mock(bot_main, 'update_bot', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.bot._attributes,
              'follow_redirects': False,
              'headers': {},
              'timeout': remote_client.NET_CONNECTION_TIMEOUT_SEC,
            },
            {
              'cmd': 'run',
              'manifest': {'foo': 'bar'},
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit, 0))
    expected = [(self.bot, {'foo': 'bar'}, time.time())]
    self.assertEqual(expected, manifest)
    expected = [(self.bot,)]
    self.assertEqual(expected, clean)
コード例 #9
0
  def test_poll_server_restart(self):
    restart = []
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', lambda *args: restart.append(args))

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'follow_redirects': False,
              'headers': {},
              'timeout': remote_client.NET_CONNECTION_TIMEOUT_SEC,
            },
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit, 0))
    self.assertEqual([('Please die now',)], restart)
コード例 #10
0
  def test_poll_server_sleep_with_auth(self):
    slept = []
    bit = threading.Event()
    self.mock(bit, 'wait', slept.append)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)

    self.bot = self.make_bot(lambda: ({'A': 'a'}, time.time() + 3600))

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'follow_redirects': False,
              'headers': {'A': 'a'},
              'timeout': remote_client.NET_CONNECTION_TIMEOUT_SEC,
            },
            {
              'cmd': 'sleep',
              'duration': 1.24,
            },
          ),
        ])
    self.assertFalse(bot_main.poll_server(self.bot, bit, 0))
    self.assertEqual([1.24], slept)
コード例 #11
0
  def test_poll_server_sleep(self):
    slept = []
    bit = threading.Event()
    self.mock(bit, 'wait', slept.append)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    from config import bot_config
    called = []
    self.mock(bot_config, 'on_bot_idle', lambda _bot, _s: called.append(1))

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'follow_redirects': False,
              'headers': {},
              'timeout': remote_client.NET_CONNECTION_TIMEOUT_SEC,
            },
            {
              'cmd': 'sleep',
              'duration': 1.24,
            },
          ),
        ])
    self.assertFalse(bot_main.poll_server(self.bot, bit, 2))
    self.assertEqual([1.24], slept)
    self.assertEqual([1], called)
コード例 #12
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
  def test_poll_server_update(self):
    update = []
    self.mock(time, 'sleep', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', lambda *args: update.append(args))

    self.expected_requests(
        [
          (
            'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
            {'data': {}, 'headers': {'X-XSRF-Token-Request': '1'}},
            {'xsrf_token': 'token'},
          ),
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'headers': {'X-XSRF-Token': 'token'},
            },
            {
              'cmd': 'update',
              'version': '123',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot))
    self.assertEqual([(self.bot, '123')], update)
コード例 #13
0
ファイル: bot_main_test.py プロジェクト: onecityuni/luci-py
    def test_poll_server_run(self):
        manifest = []
        bit = threading.Event()
        self.mock(bit, 'wait', self.fail)
        self.mock(bot_main, 'run_manifest',
                  lambda *args: manifest.append(args))
        self.mock(bot_main, 'update_bot', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.bot._attributes
                },
                {
                    'cmd': 'run',
                    'manifest': {
                        'foo': 'bar'
                    },
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        expected = [(self.bot, {'foo': 'bar'}, time.time())]
        self.assertEqual(expected, manifest)
コード例 #14
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
  def test_poll_server_restart(self):
    restart = []
    self.mock(time, 'sleep', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', lambda *args: restart.append(args))

    self.expected_requests(
        [
          (
            'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
            {'data': {}, 'headers': {'X-XSRF-Token-Request': '1'}},
            {'xsrf_token': 'token'},
          ),
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
              'headers': {'X-XSRF-Token': 'token'},
            },
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot))
    self.assertEqual([('Please die now',)], restart)
コード例 #15
0
  def test_poll_server_sleep(self):
    slept = []
    bit = threading.Event()
    self.mock(bit, 'wait', slept.append)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {'data': self.attributes},
            {
              'cmd': 'sleep',
              'duration': 1.24,
            },
          ),
        ])
    self.assertFalse(bot_main.poll_server(self.bot, bit))
    self.assertEqual([1.24], slept)
コード例 #16
0
  def test_poll_server_update(self):
    update = []
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', lambda *args: update.append(args))

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {'data': self.attributes},
            {
              'cmd': 'update',
              'version': '123',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit))
    self.assertEqual([(self.bot, '123')], update)
コード例 #17
0
ファイル: bot_main_test.py プロジェクト: onecityuni/luci-py
    def test_poll_server_update(self):
        update = []
        bit = threading.Event()
        self.mock(bit, 'wait', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', lambda *args: update.append(args))

        self.expected_requests([
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes
                },
                {
                    'cmd': 'update',
                    'version': '123',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        self.assertEqual([(self.bot, '123')], update)
コード例 #18
0
ファイル: bot_main_test.py プロジェクト: onecityuni/luci-py
    def test_poll_server_restart_load_test(self):
        os.environ['SWARMING_LOAD_TEST'] = '1'
        bit = threading.Event()
        self.mock(bit, 'wait', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)
        self.mock(self.bot, 'restart', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes,
                },
                {
                    'cmd': 'restart',
                    'message': 'Please die now',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot, bit))
コード例 #19
0
  def test_poll_server_restart(self):
    restart = []
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', lambda *args: restart.append(args))

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {'data': self.attributes},
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit))
    self.assertEqual([('Please die now',)], restart)
コード例 #20
0
  def test_poll_server_run(self):
    manifest = []
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', lambda *args: manifest.append(args))
    self.mock(bot_main, 'update_bot', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {'data': self.bot._attributes},
            {
              'cmd': 'run',
              'manifest': {'foo': 'bar'},
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit))
    expected = [(self.bot, {'foo': 'bar'}, time.time())]
    self.assertEqual(expected, manifest)
コード例 #21
0
ファイル: bot_main_test.py プロジェクト: onecityuni/luci-py
    def test_poll_server_sleep(self):
        slept = []
        bit = threading.Event()
        self.mock(bit, 'wait', slept.append)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes
                },
                {
                    'cmd': 'sleep',
                    'duration': 1.24,
                },
            ),
        ])
        self.assertFalse(bot_main.poll_server(self.bot, bit))
        self.assertEqual([1.24], slept)
コード例 #22
0
ファイル: bot_main_test.py プロジェクト: onecityuni/luci-py
    def test_poll_server_restart(self):
        restart = []
        bit = threading.Event()
        self.mock(bit, 'wait', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)
        self.mock(self.bot, 'restart', lambda *args: restart.append(args))

        self.expected_requests([
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes
                },
                {
                    'cmd': 'restart',
                    'message': 'Please die now',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        self.assertEqual([('Please die now', )], restart)
コード例 #23
0
ファイル: bot_main_test.py プロジェクト: pombreda/luci-py
    def test_poll_server_run(self):
        manifest = []
        self.mock(time, 'sleep', self.fail)
        self.mock(bot_main, 'run_manifest',
                  lambda *args: manifest.append(args))
        self.mock(bot_main, 'update_bot', self.fail)

        self.expected_requests([
            (
                'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
                {
                    'data': {},
                    'headers': {
                        'X-XSRF-Token-Request': '1'
                    }
                },
                {
                    'xsrf_token': 'token'
                },
            ),
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.bot._attributes,
                    'headers': {
                        'X-XSRF-Token': 'token'
                    },
                },
                {
                    'cmd': 'run',
                    'manifest': {
                        'foo': 'bar'
                    },
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot))
        expected = [(self.bot, {'foo': 'bar'}, time.time())]
        self.assertEqual(expected, manifest)
コード例 #24
0
  def test_poll_server_restart_load_test(self):
    os.environ['SWARMING_LOAD_TEST'] = '1'
    bit = threading.Event()
    self.mock(bit, 'wait', self.fail)
    self.mock(bot_main, 'run_manifest', self.fail)
    self.mock(bot_main, 'update_bot', self.fail)
    self.mock(self.bot, 'restart', self.fail)

    self.expected_requests(
        [
          (
            'https://localhost:1/swarming/api/v1/bot/poll',
            {
              'data': self.attributes,
            },
            {
              'cmd': 'restart',
              'message': 'Please die now',
            },
          ),
        ])
    self.assertTrue(bot_main.poll_server(self.bot, bit))
コード例 #25
0
ファイル: bot_main_test.py プロジェクト: maruel/luci-py
    def test_poll_server_restart_load_test(self):
        os.environ["SWARMING_LOAD_TEST"] = "1"
        bit = threading.Event()
        self.mock(bit, "wait", self.fail)
        self.mock(bot_main, "run_manifest", self.fail)
        self.mock(bot_main, "update_bot", self.fail)
        self.mock(self.bot, "restart", self.fail)

        self.expected_requests(
            [
                (
                    "https://localhost:1/auth/api/v1/accounts/self/xsrf_token",
                    {"data": {}, "headers": {"X-XSRF-Token-Request": "1"}},
                    {"xsrf_token": "token"},
                ),
                (
                    "https://localhost:1/swarming/api/v1/bot/poll",
                    {"data": self.attributes, "headers": {"X-XSRF-Token": "token"}},
                    {"cmd": "restart", "message": "Please die now"},
                ),
            ]
        )
        self.assertTrue(bot_main.poll_server(self.bot, bit))
コード例 #26
0
ファイル: bot_main_test.py プロジェクト: maruel/luci-py
    def test_poll_server_update(self):
        update = []
        bit = threading.Event()
        self.mock(bit, "wait", self.fail)
        self.mock(bot_main, "run_manifest", self.fail)
        self.mock(bot_main, "update_bot", lambda *args: update.append(args))

        self.expected_requests(
            [
                (
                    "https://localhost:1/auth/api/v1/accounts/self/xsrf_token",
                    {"data": {}, "headers": {"X-XSRF-Token-Request": "1"}},
                    {"xsrf_token": "token"},
                ),
                (
                    "https://localhost:1/swarming/api/v1/bot/poll",
                    {"data": self.attributes, "headers": {"X-XSRF-Token": "token"}},
                    {"cmd": "update", "version": "123"},
                ),
            ]
        )
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        self.assertEqual([(self.bot, "123")], update)
コード例 #27
0
ファイル: bot_main_test.py プロジェクト: maruel/luci-py
    def test_poll_server_sleep(self):
        slept = []
        bit = threading.Event()
        self.mock(bit, "wait", slept.append)
        self.mock(bot_main, "run_manifest", self.fail)
        self.mock(bot_main, "update_bot", self.fail)

        self.expected_requests(
            [
                (
                    "https://localhost:1/auth/api/v1/accounts/self/xsrf_token",
                    {"data": {}, "headers": {"X-XSRF-Token-Request": "1"}},
                    {"xsrf_token": "token"},
                ),
                (
                    "https://localhost:1/swarming/api/v1/bot/poll",
                    {"data": self.attributes, "headers": {"X-XSRF-Token": "token"}},
                    {"cmd": "sleep", "duration": 1.24},
                ),
            ]
        )
        self.assertFalse(bot_main.poll_server(self.bot, bit))
        self.assertEqual([1.24], slept)
コード例 #28
0
    def test_poll_server_restart(self):
        restart = []
        bit = threading.Event()
        self.mock(bit, 'wait', self.fail)
        self.mock(bot_main, 'run_manifest', self.fail)
        self.mock(bot_main, 'update_bot', self.fail)
        self.mock(self.bot, 'restart', lambda *args: restart.append(args))

        self.expected_requests([
            (
                'https://localhost:1/auth/api/v1/accounts/self/xsrf_token',
                {
                    'data': {},
                    'headers': {
                        'X-XSRF-Token-Request': '1'
                    }
                },
                {
                    'xsrf_token': 'token'
                },
            ),
            (
                'https://localhost:1/swarming/api/v1/bot/poll',
                {
                    'data': self.attributes,
                    'headers': {
                        'X-XSRF-Token': 'token'
                    },
                },
                {
                    'cmd': 'restart',
                    'message': 'Please die now',
                },
            ),
        ])
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        self.assertEqual([('Please die now', )], restart)
コード例 #29
0
ファイル: bot_main_test.py プロジェクト: maruel/luci-py
    def test_poll_server_run(self):
        manifest = []
        bit = threading.Event()
        self.mock(bit, "wait", self.fail)
        self.mock(bot_main, "run_manifest", lambda *args: manifest.append(args))
        self.mock(bot_main, "update_bot", self.fail)

        self.expected_requests(
            [
                (
                    "https://localhost:1/auth/api/v1/accounts/self/xsrf_token",
                    {"data": {}, "headers": {"X-XSRF-Token-Request": "1"}},
                    {"xsrf_token": "token"},
                ),
                (
                    "https://localhost:1/swarming/api/v1/bot/poll",
                    {"data": self.bot._attributes, "headers": {"X-XSRF-Token": "token"}},
                    {"cmd": "run", "manifest": {"foo": "bar"}},
                ),
            ]
        )
        self.assertTrue(bot_main.poll_server(self.bot, bit))
        expected = [(self.bot, {"foo": "bar"}, time.time())]
        self.assertEqual(expected, manifest)