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"): 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)
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)
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 __init__(self, *args, **kwargs): config = kwargs.get('config') # We have multiple inheritance here, explicitly calling superclasses's # init is mandatory. # See http://freshfoo.com/blog/object__init__takes_no_parameters SearchBase.__init__(self, config=config) ElasticSearchBase.__init__(self, config=config)
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())
def test_process_type_parameter_correction(self): with _get_config_manager().context() as config: search = SearchBase(config=config) 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)
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'], 'process_type': '=crash', } 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['process_type'][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)
def test_process_type_parameter_correction(self): with _get_config_manager().context() as config: search = SearchBase(config=config) 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)
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)
def __init__(self, *args, **kwargs): config = kwargs.get('config') self.all_fields = self.get_fields() self.database_name_to_field_name_map = dict( (x['in_database_name'], x['name']) for x in self.all_fields.values()) # We have multiple inheritance here, explicitly calling superclasses's # init is mandatory. # See http://freshfoo.com/blog/object__init__takes_no_parameters SearchBase.__init__(self, config=config, fields=self.all_fields) ElasticSearchBase.__init__(self, config=config)
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)
def __init__(self, *args, **kwargs): config = kwargs.get('config') ElasticSearchBase.__init__(self, config=config) self.all_fields = self.get_fields() self.database_name_to_field_name_map = dict( (x['in_database_name'], x['name']) for x in self.all_fields.values() ) # We have multiple inheritance here, explicitly calling superclasses's # init is mandatory. # See http://freshfoo.com/blog/object__init__takes_no_parameters SearchBase.__init__(self, config=config, fields=self.all_fields)
def test_hang_type_parameter_correction(self): with _get_config_manager().context() as config: search = SearchBase(config=config) 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])
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) 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)
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])
def test_hang_type_parameter_correction(self): with _get_config_manager().context() as config: search = SearchBase(config=config) 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])
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_date_defaults(self): with _get_config_manager().context() as config: search = SearchBase(config=config) 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())
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)
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(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)
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)
def __init__(self, config): # We have multiple inheritance here, explicitly calling superclasses's # init is mandatory. # See http://freshfoo.com/blog/object__init__takes_no_parameters SearchBase.__init__(self, config=config) ElasticSearchBase.__init__(self, config=config)