示例#1
0
    def test_list(self):
        expected_videos = [
            video_queue.Video('video id 0', 'video name 0'),
            video_queue.Video('video id 1', 'video name 1'),
        ]
        self.video_queue_client.list.return_value = expected_videos

        resp = self.app.get(self.API_PREFIX + '/list')
        self.assertEqual(self.get_status_code(resp), 200)
        for video, expected_video in zip(resp.json['videos'], expected_videos):
            self.assertEqual(video['id'], expected_video.id)
            self.assertEqual(video['name'], expected_video.name)
示例#2
0
class CronPublishTest(unittest.TestCase):

    USER_ID = 'fake_user_id'
    VIDEO_ID = 'fake_video_id'

    TEST_VIDEO = video_queue.Video(id=VIDEO_ID, name='fake_video_name')
    TEST_STATUS = models.QueuePublishStatus(video_id=VIDEO_ID)

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_all_stubs()

        self.video_queue_client = video_queue.VideoQueueClient()

        self.publisher = mock.Mock()
        self.publish_handler = cron.PublishHandler()

    def test_users_with_queues(self):
        self.video_queue_client.push(self.TEST_VIDEO, user_id=self.USER_ID)
        self.assertEqual(self.publish_handler._users_with_queues(),
                         {self.USER_ID})

    def test_users_with_queues_empty(self):
        self.assertEqual(self.publish_handler._users_with_queues(), set())

    def test_users_with_queues_empty_pointer(self):
        self.video_queue_client.push(self.TEST_VIDEO, user_id=self.USER_ID)
        self.video_queue_client.pop(user_id=self.USER_ID)
        self.assertEqual(self.publish_handler._users_with_queues(), set())

    def test_handle_user_promote_success(self):
        self.publisher.promote_video.return_value = (
            publisher.Publisher.SUCCESS, self.TEST_STATUS)
        self.publish_handler._handle_user(user_id=self.USER_ID,
                                          publisher=self.publisher)
        self.publisher.finish_video.assert_called_with(self.VIDEO_ID)

    def test_handle_user_promote_too_recent(self):
        self.publisher.promote_video.return_value = (
            publisher.Publisher.TOO_RECENT, self.TEST_STATUS)
        self.publish_handler._handle_user(user_id=self.USER_ID,
                                          publisher=self.publisher)
        self.publisher.finish_video.assert_not_called()

    def test_handle_user_promote_previous_failure(self):
        self.publisher.promote_video.return_value = (
            publisher.Publisher.PREVIOUS_FAILURE, self.TEST_STATUS)
        self.publish_handler._handle_user(user_id=self.USER_ID,
                                          publisher=self.publisher)
        self.publisher.finish_video.assert_called_with(self.VIDEO_ID)

    def test_handle_user_promote_queue_empty(self):
        self.publisher.promote_video.return_value = (
            publisher.Publisher.TOO_RECENT, self.TEST_STATUS)
        self.publish_handler._handle_user(user_id=self.USER_ID,
                                          publisher=self.publisher)
        self.publisher.finish_video.assert_not_called()
示例#3
0
 def test_publish_enqueue(self):
   self.check_publish(
       videos_api.PublishRequest.PublishMode.ENQUEUE,
       videos.VideosClient.PRIVATE)
   self.video_queue_client.push.assert_called_with(
       video_queue.Video(
           id=self.VIDEO_ID,
           name=videos.VideosClient.get_video_name(self.TITLE, self.SUBTITLE)))
   self.video_queue_client.insert_front.assert_not_called()
示例#4
0
  def setUp(self):
    self.testbed = testbed.Testbed()
    self.testbed.activate()
    self.testbed.init_datastore_v3_stub()
    self.testbed.init_memcache_stub()
    ndb.get_context().clear_cache()

    self.video_queue_client = mock.Mock()
    self.video_queue_client.pop.return_value = (
        video_queue.Video(self.VIDEO_ID, self.VIDEO_NAME))
    self.videos_client = mock.Mock()
    self.publisher = publisher.Publisher(
        video_queue_client=self.video_queue_client,
        videos_client=self.videos_client)
    self.publisher._get_now = mock.Mock()
    self.publisher._get_now.return_value = self.NOW
示例#5
0
    def publish_handler(self, req):
        thumbnail_data = self._thumbnails_client.get(req.bg_key, req.title,
                                                     req.subtitle)
        self._videos_client.set_thumbnail(req.video_id, thumbnail_data)

        video_name = self._videos_client.get_video_name(
            req.title, req.subtitle)
        publish_status = (self._videos_client.PUBLIC
                          if req.publish_mode == PublishRequest.PublishMode.NOW
                          else self._videos_client.PRIVATE)
        self._videos_client.set_metadata(req.video_id,
                                         title=video_name,
                                         description=req.description,
                                         publish_status=publish_status)

        video = video_queue.Video(id=req.video_id, name=video_name)
        if req.publish_mode == PublishRequest.PublishMode.ENQUEUE:
            self._video_queue_client.push(video)
        elif req.publish_mode == PublishRequest.PublishMode.PREEMPT:
            self._video_queue_client.insert_front(video)

        return PublishResponse()
示例#6
0
class VideoQueueClientTest(unittest.TestCase):

  USER_ID = '*****@*****.**'

  OCTOPUS = video_queue.Video('octopus', 'octopus title')
  PANGOLIN = video_queue.Video('pangolin', 'pangolin title')
  QUETZAL = video_queue.Video('quetzal', 'quetzal title')

  def setUp(self):
    self.testbed = testbed.Testbed()
    self.testbed.activate()
    self.testbed.init_all_stubs()

    self.client = video_queue.VideoQueueClient()
    self.client.push(self.OCTOPUS, user_id=self.USER_ID)
    self.client.push(self.PANGOLIN, user_id=self.USER_ID)

  def assert_queue(self, expected_queue):
    self.assertEqual(self.client.list(user_id=self.USER_ID), expected_queue)
    head = self.client._resolve_pointer(
        self.client._get_pointer_key(self.USER_ID, self.client._HEAD_ID))
    tail = self.client._resolve_pointer(
        self.client._get_pointer_key(self.USER_ID, self.client._TAIL_ID))
    if expected_queue:
      self.assertEqual(head.key.id(), expected_queue[0].id)
      self.assertEqual(tail.key.id(), expected_queue[-1].id)
    else:
      self.assertIsNone(head)
      self.assertIsNone(tail)

  def test_push(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL])

  def test_pop(self):
    self.assertEqual(self.client.pop(user_id=self.USER_ID), self.OCTOPUS)
    self.assert_queue([self.PANGOLIN])

  def test_pop_empty(self):
    self.client.pop(user_id=self.USER_ID)
    self.client.pop(user_id=self.USER_ID)
    self.client.pop(user_id=self.USER_ID)
    self.assert_queue([])

  def test_insert_front(self):
    self.client.insert_front(self.QUETZAL, user_id=self.USER_ID)
    self.assert_queue([self.QUETZAL, self.OCTOPUS, self.PANGOLIN])

  def test_list(self):
    self.assert_queue([self.OCTOPUS, self.PANGOLIN])

  def test_move_head(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.OCTOPUS.id, 1, user_id=self.USER_ID)
    self.assert_queue([self.PANGOLIN, self.OCTOPUS, self.QUETZAL])

  def test_move_tail(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.QUETZAL.id, 1, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.QUETZAL, self.PANGOLIN])

  def test_move_front(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.PANGOLIN.id, 0, user_id=self.USER_ID)
    self.assert_queue([self.PANGOLIN, self.OCTOPUS, self.QUETZAL])

  def test_move_back(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.PANGOLIN.id, 2, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.QUETZAL, self.PANGOLIN])

  def test_move_head_front(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.OCTOPUS.id, 0, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL])

  def test_move_tail_back(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.move(self.QUETZAL.id, 2, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL])

  def test_push_after_empty(self):
    self.client.pop(user_id=self.USER_ID)
    self.client.pop(user_id=self.USER_ID)
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.assert_queue([self.QUETZAL])

  def test_insert_front_after_empty(self):
    self.client.pop(user_id=self.USER_ID)
    self.client.pop(user_id=self.USER_ID)
    self.client.insert_front(self.QUETZAL, user_id=self.USER_ID)
    self.assert_queue([self.QUETZAL])

  def test_delete(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.delete(self.PANGOLIN.id, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.QUETZAL])

  def test_delete_head(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.delete(self.OCTOPUS.id, user_id=self.USER_ID)
    self.assert_queue([self.PANGOLIN, self.QUETZAL])

  def test_delete_tail(self):
    self.client.push(self.QUETZAL, user_id=self.USER_ID)
    self.client.delete(self.QUETZAL.id, user_id=self.USER_ID)
    self.assert_queue([self.OCTOPUS, self.PANGOLIN])