Beispiel #1
0
    def test_get_parameters_with_not(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        args = {
            'signature': '!~mysig',
            'product': '!WaterWolf',
            'version': '1.0',
            'user_comments': '!__null__',
        }
        params = search.get_parameters(**args)
        eq_(params['signature'][0].operator, '~')
        ok_(params['signature'][0].operator_not)
        eq_(params['signature'][0].value, 'mysig')

        eq_(params['product'][0].operator, '')
        ok_(params['product'][0].operator_not)

        eq_(params['version'][0].operator, '')
        ok_(not params['version'][0].operator_not)

        eq_(params['user_comments'][0].operator, '__null__')
        ok_(params['user_comments'][0].operator_not)
Beispiel #2
0
    def test_version_parameter_correction(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        args = {'version': ['38.0b']}
        params = search.get_parameters(**args)
        ok_('version' in params)
        eq_(len(params['version']), 1)
        eq_(params['version'][0].value, '38.0b')
        eq_(params['version'][0].operator, '$')
        ok_(not params['version'][0].operator_not)

        args = {'version': ['1.9b2', '1.9b', '!2.9b', '^.0b']}
        params = search.get_parameters(**args)
        ok_('version' in params)
        eq_(len(params['version']), 4)
        for param in params['version']:
            assert param.operator in ('$', '^', '')

            if param.operator == '$' and not param.operator_not:
                # starts with, this one was made up.
                eq_(param.value, '1.9b')
            elif param.operator == '$' and param.operator_not:
                # starts with, this one was made up.
                eq_(param.value, '2.9b')
            elif param.operator == '^':
                eq_(param.value, '.0b')
            elif param.operator == '':
                eq_(param.value, ['1.9b2'])
    def test_get_parameters_date_defaults(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        now = datetimeutil.utc_now()

        # Test default values when nothing is passed
        params = search.get_parameters()
        ok_('date' in params)
        eq_(len(params['date']), 2)

        # Pass only the high value
        args = {
            'date': '<%s' % datetimeutil.date_to_string(now)
        }
        params = search.get_parameters(**args)
        ok_('date' in params)
        eq_(len(params['date']), 2)
        eq_(params['date'][0].operator, '<')
        eq_(params['date'][1].operator, '>=')
        eq_(params['date'][0].value.date(), now.date())
        eq_(
            params['date'][1].value.date(),
            now.date() - datetime.timedelta(days=7)
        )

        # Pass only the low value
        pasttime = now - datetime.timedelta(days=10)
        args = {
            'date': '>=%s' % datetimeutil.date_to_string(pasttime)
        }
        params = search.get_parameters(**args)
        ok_('date' in params)
        eq_(len(params['date']), 2)
        eq_(params['date'][0].operator, '<=')
        eq_(params['date'][1].operator, '>=')
        eq_(params['date'][0].value.date(), now.date())
        eq_(params['date'][1].value.date(), pasttime.date())

        # Pass the two values
        pasttime = now - datetime.timedelta(days=10)
        args = {
            'date': [
                '<%s' % datetimeutil.date_to_string(now),
                '>%s' % datetimeutil.date_to_string(pasttime),
            ]
        }
        params = search.get_parameters(**args)
        ok_('date' in params)
        eq_(len(params['date']), 2)
        eq_(params['date'][0].operator, '<')
        eq_(params['date'][1].operator, '>')
        eq_(params['date'][0].value.date(), now.date())
        eq_(params['date'][1].value.date(), pasttime.date())
Beispiel #4
0
    def test_get_parameters_date_max_range(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        assert_raises(BadArgumentError,
                      search.get_parameters,
                      date='>1999-01-01')
    def test_get_parameters(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        args = {
            'signature': 'mysig',
            'product': 'WaterWolf',
            'version': '1.0',
        }
        params = search.get_parameters(**args)
        for i in ('signature', 'product', 'version'):
            ok_(i in params)
            ok_(isinstance(params[i], list))
            ok_(isinstance(params[i][0], SearchParam))
            eq_(params[i][0].operator, '')

        args = {
            'signature': '~js',
            'product': ['WaterWolf', 'NightTrain'],
            'version': '=1.0',
        }
        params = search.get_parameters(**args)
        eq_(params['signature'][0].operator, '~')
        eq_(params['signature'][0].value, 'js')
        eq_(params['product'][0].operator, '')
        # Test that params with no operator are stacked
        eq_(
            params['product'][0].value,
            ['WaterWolf', 'NightTrain']
        )
        eq_(params['version'][0].operator, '')

        args = {
            'signature': ['~Mark', '$js'],
        }
        params = search.get_parameters(**args)
        eq_(params['signature'][0].operator, '~')
        eq_(params['signature'][0].value, 'Mark')
        eq_(params['signature'][1].operator, '$')
        eq_(params['signature'][1].value, 'js')

        args = {
            'build_id': ['>20000101000000', '<20150101000000'],
        }
        params = search.get_parameters(**args)
        eq_(params['build_id'][0].operator, '>')
        eq_(params['build_id'][0].value, 20000101000000)
        eq_(params['build_id'][1].operator, '<')
        eq_(params['build_id'][1].value, 20150101000000)
Beispiel #6
0
    def test_process_type_parameter_correction(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        args = {'process_type': 'browser'}
        params = search.get_parameters(**args)
        ok_('process_type' in params)
        eq_(len(params['process_type']), 1)
        eq_(params['process_type'][0].value, [''])
        eq_(params['process_type'][0].operator, '__null__')
        eq_(params['process_type'][0].operator_not, False)
Beispiel #7
0
    def test_get_parameters(self):
        with _get_config_manager().context() as config:
            search = SearchBase(config=config)

        args = {
            'signature': 'mysig',
            'product': 'WaterWolf',
            'version': '1.0',
        }
        params = search.get_parameters(**args)
        for i in ('signature', 'product', 'version'):
            self.assertTrue(i in params)
            self.assertTrue(isinstance(params[i], list))
            self.assertTrue(isinstance(params[i][0], SearchParam))
            self.assertEqual(params[i][0].operator, '')

        args = {
            'signature': '~js',
            'product': ['WaterWolf', 'NightTrain'],
            'version': '=1.0',
        }
        params = search.get_parameters(**args)
        self.assertEqual(params['signature'][0].operator, '~')
        self.assertEqual(params['signature'][0].value, 'js')
        self.assertEqual(params['product'][0].operator, '')
        # Test that params with no operator are stacked
        self.assertEqual(params['product'][0].value,
                         ['WaterWolf', 'NightTrain'])
        self.assertEqual(params['version'][0].operator, '')

        args = {
            'signature': ['~Mark', '$js'],
        }
        params = search.get_parameters(**args)
        self.assertEqual(params['signature'][0].operator, '~')
        self.assertEqual(params['signature'][0].value, 'Mark')
        self.assertEqual(params['signature'][1].operator, '$')
        self.assertEqual(params['signature'][1].value, 'js')

        args = {
            'build_id': ['>20000101000000', '<20150101000000'],
        }
        params = search.get_parameters(**args)
        self.assertEqual(params['build_id'][0].operator, '>')
        self.assertEqual(params['build_id'][0].value, 20000101000000)
        self.assertEqual(params['build_id'][1].operator, '<')
        self.assertEqual(params['build_id'][1].value, 20150101000000)
Beispiel #8
0
    def test_hang_type_parameter_correction(self):
        with _get_config_manager().context() as config:
            search = SearchBase(
                config=config,
                fields=SUPERSEARCH_FIELDS_MOCKED_RESULTS,
            )

        args = {'hang_type': 'hang'}
        params = search.get_parameters(**args)
        ok_('hang_type' in params)
        eq_(len(params['hang_type']), 1)
        eq_(params['hang_type'][0].value, [-1, 1])

        args = {'hang_type': 'crash'}
        params = search.get_parameters(**args)
        ok_('hang_type' in params)
        eq_(len(params['hang_type']), 1)
        eq_(params['hang_type'][0].value, [0])
Beispiel #9
0
    def test_get_parameters_with_not(self):
        with _get_config_manager().context() as config:
            search = SearchBase(config=config)

        args = {
            'signature': '!~mysig',
            'product': '!WaterWolf',
            'version': '1.0',
            'user_comments': '!__null__',
        }
        params = search.get_parameters(**args)
        self.assertEqual(params['signature'][0].operator, '~')
        self.assertTrue(params['signature'][0].operator_not)
        self.assertEqual(params['signature'][0].value, 'mysig')

        self.assertEqual(params['product'][0].operator, '')
        self.assertTrue(params['product'][0].operator_not)

        self.assertEqual(params['version'][0].operator, '')
        self.assertFalse(params['version'][0].operator_not)

        self.assertEqual(params['user_comments'][0].operator, '__null__')
        self.assertTrue(params['user_comments'][0].operator_not)