def test_prepare_query_message_exception_if_invalid_query(self):
        """ Testing all cases with invalid queries
        """
        # query name doesn't exist in the list
        with self.assertRaises(request_manage.InvalidSparkRequestError):
            request_manage._prepare_query_message('getmesomething')

        # extra parameter given
        with self.assertRaises(request_manage.InvalidSparkRequestError):
            request_manage._prepare_query_message(
                'stats.user.listening_activity.week',
                {'musicbrainz_id': 'wtf'})

        # invalid parameter given
        with self.assertRaises(request_manage.InvalidSparkRequestError):
            request_manage._prepare_query_message('stats.user.entity',
                                                  {'invalid_param': 'wtf'})

        # extra (unexpected) parameter passed
        with self.assertRaises(request_manage.InvalidSparkRequestError):
            request_manage._prepare_query_message('stats.user.entity', {
                'entity': 'recordings',
                'param2': 'bbq'
            })

        # expected parameter not passed
        with self.assertRaises(request_manage.InvalidSparkRequestError):
            request_manage._prepare_query_message('stats.user.entity', {})
Example #2
0
    def test_prepare_query_message_happy_path(self):
        expected_message = ujson.dumps({'query': 'stats.user.all'})
        received_message = request_manage._prepare_query_message(
            'stats.user.all')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.for_user',
            'params': {
                'musicbrainz_id': 'iliekcomputers'
            },
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.for_user', {'musicbrainz_id': 'iliekcomputers'})
        self.assertEqual(expected_message, received_message)
    def test_prepare_query_message_happy_path(self):
        expected_message = ujson.dumps({
            'query': 'stats.user.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'week'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity',
            params={
                'entity': 'test',
                'stats_range': 'week'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'month'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity',
            params={
                'entity': 'test',
                'stats_range': 'month'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'year'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity',
            params={
                'entity': 'test',
                'stats_range': 'year'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'all_time'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity',
            params={
                'entity': 'test',
                'stats_range': 'all_time'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.listening_activity',
            'params': {
                'stats_range': 'week'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity', params={'stats_range': 'week'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.listening_activity',
            'params': {
                'stats_range': 'month'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity', params={'stats_range': 'month'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.listening_activity',
            'params': {
                'stats_range': 'year'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity', params={'stats_range': 'year'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.listening_activity',
            'params': {
                'stats_range': 'all_time'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity',
            params={'stats_range': 'all_time'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.daily_activity',
            'params': {
                'stats_range': 'week'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity', params={'stats_range': 'week'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.daily_activity',
            'params': {
                'stats_range': 'month'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity', params={'stats_range': 'month'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.daily_activity',
            'params': {
                'stats_range': 'year'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity', params={'stats_range': 'year'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.daily_activity',
            'params': {
                'stats_range': 'all_time'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity', params={'stats_range': 'all_time'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'week'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity',
            params={
                'entity': 'test',
                'stats_range': 'week'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'month'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity',
            params={
                'entity': 'test',
                'stats_range': 'month'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'year'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity',
            params={
                'entity': 'test',
                'stats_range': 'year'
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity',
            'params': {
                'entity': 'test',
                'stats_range': 'all_time'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity',
            params={
                'entity': 'test',
                'stats_range': 'all_time'
            })
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf.recommendations.recording.create_dataframes',
            'params': {
                'train_model_window': 20,
                'job_type': "recommendation_recording",
                'minimum_listens_threshold': 0,
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf.recommendations.recording.create_dataframes',
            message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf.recommendations.recording.train_model',
            'params': {
                'ranks': [1, 2],
                'lambdas': [2.0, 3.0],
                'iterations': [2, 3],
                'alpha': 3.0,
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf.recommendations.recording.train_model', message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf.recommendations.recording.candidate_sets',
            'params': {
                'recommendation_generation_window': 7,
                'top_artist_limit': 10,
                'similar_artist_limit': 10,
                "users": ['vansika'],
                "html_flag": True
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf.recommendations.recording.candidate_sets', message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf.recommendations.recording.recommendations',
            'params': {
                'recommendation_top_artist_limit': 7,
                'recommendation_similar_artist_limit': 7,
                'users': ['vansika']
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf.recommendations.recording.recommendations', message['params'])
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({'query': 'import.artist_relation'})
        received_message = request_manage._prepare_query_message(
            'import.artist_relation')
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'similarity.similar_users',
            'params': {
                'max_num_users': 25
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'similarity.similar_users', message['params'])
        self.assertEqual(expected_message, received_message)
Example #4
0
    def test_prepare_query_message_happy_path(self):
        expected_message = ujson.dumps({
            'query': 'stats.user.entity.week',
            'params': {
                'entity': 'test'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity.week', params={'entity': 'test'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity.month',
            'params': {
                'entity': 'test'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity.month', params={'entity': 'test'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity.year',
            'params': {
                'entity': 'test'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity.year', params={'entity': 'test'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.user.entity.all_time',
            'params': {
                'entity': 'test'
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.user.entity.all_time', params={'entity': 'test'})
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.listening_activity.week'})
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity.week')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.listening_activity.month'})
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity.month')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.listening_activity.year'})
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity.year')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.listening_activity.all_time'})
        received_message = request_manage._prepare_query_message(
            'stats.user.listening_activity.all_time')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.daily_activity.week'})
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity.week')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.daily_activity.month'})
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity.month')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.daily_activity.year'})
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity.year')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps(
            {'query': 'stats.user.daily_activity.all_time'})
        received_message = request_manage._prepare_query_message(
            'stats.user.daily_activity.all_time')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity.week',
            'params': {
                'entity': 'test',
                'use_mapping': False
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity.week',
            params={
                'entity': 'test',
                'use_mapping': False
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity.month',
            'params': {
                'entity': 'test',
                'use_mapping': False
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity.month',
            params={
                'entity': 'test',
                'use_mapping': False
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity.year',
            'params': {
                'entity': 'test',
                'use_mapping': False
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity.year',
            params={
                'entity': 'test',
                'use_mapping': False
            })
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({
            'query': 'stats.sitewide.entity.all_time',
            'params': {
                'entity': 'test',
                'use_mapping': False
            }
        })
        received_message = request_manage._prepare_query_message(
            'stats.sitewide.entity.all_time',
            params={
                'entity': 'test',
                'use_mapping': False
            })
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf_recording.recommendations.create_dataframes',
            'params': {
                'train_model_window': 20,
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf_recording.recommendations.create_dataframes',
            message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf_recording.recommendations.train_model',
            'params': {
                'ranks': [1, 2],
                'lambdas': [2.0, 3.0],
                'iterations': [2, 3],
                'alpha': 3.0,
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf_recording.recommendations.train_model', message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf_recording.recommendations.candidate_sets',
            'params': {
                'recommendation_generation_window': 7,
                'top_artist_limit': 10,
                'similar_artist_limit': 10,
                "users": ['vansika'],
                "html_flag": True
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf_recording.recommendations.candidate_sets', message['params'])
        self.assertEqual(expected_message, received_message)

        message = {
            'query': 'cf_recording.recommendations.recommend',
            'params': {
                'recommendation_top_artist_limit': 7,
                'recommendation_similar_artist_limit': 7,
                'users': ['vansika']
            }
        }
        expected_message = ujson.dumps(message)
        received_message = request_manage._prepare_query_message(
            'cf_recording.recommendations.recommend', message['params'])
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({'query': 'import.mapping'})
        received_message = request_manage._prepare_query_message(
            'import.mapping')
        self.assertEqual(expected_message, received_message)

        expected_message = ujson.dumps({'query': 'import.artist_relation'})
        received_message = request_manage._prepare_query_message(
            'import.artist_relation')
        self.assertEqual(expected_message, received_message)