'give it one container to update (for only one greenthred)
fake the greenthred so it will raise a timeout
test that the right message is logged and the method returns None'

def test_container_update_as_greenthread_with_timeout(self):

    called_async_update_args = []
    def local_fake_spawn(func, *a, **kw):
        m = mock.MagicMock()
        def wait_with_error():
            raise Timeout()
        m.wait = wait_with_error
        return m
    def local_fake_async_update(*a, **kw):
        called_async_update_args.append([a, kw])
    req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'}, headers={'X-Timestamp': '12345', 'Content-Type': 'application/burrito', 'Content-Length': '0', 'X-Backend-Storage-Policy-Index': 0, 'X-Container-Partition': '20', 'X-Container-Host': '1.2.3.4:5', 'X-Container-Device': 'sdb1'})
    with mock.patch.object(object_server, 'spawn', local_fake_spawn):
        with mock.patch.object(self.object_controller, 'container_update_timeout', 1.414213562):
            resp = req.get_response(self.object_controller)
    self.assertEqual(resp.status_int, 201)
    expected_logged_error = "Container    update    timeout    (1.4142s)    waiting    for    [('1.2.3.4:5',    'sdb1')]"
    self.assertTrue((expected_logged_error in self.object_controller.logger.get_lines_for_level('debug')))
