def test_free_text_parser(self): """test free_text_parser function""" pairs = [("Zee CMSSW_4_*", "dataset dataset=*Zee* release=CMSSW_4_*"), ("Zee mc", "dataset dataset=*Zee* datatype=mc"), ("160915 CMSSW_4_*", "run run=160915 release=CMSSW_4_*"), ("/abc.root CMSSW_2_0*", "file file=/abc.root release=CMSSW_2_0*"), ("4_1 Zee", "dataset release=CMSSW_4_1* dataset=*Zee*"), ("Zee /a/b/c#123", "dataset dataset=*Zee* block=/a/b/c#123"), ("MC CMSSW_4_* /Zee", "dataset datatype=MC release=CMSSW_4_* dataset=/Zee*"), ("gen-sim-reco", "tier tier=*gen-sim-reco*"), ("raw-digi", "tier tier=*raw-digi*")] daskeys=['dataset', 'datatype', 'run', 'release', 'block', 'file'] for uinput, dasquery in pairs: result = free_text_parser(uinput, daskeys) self.assertEqual(dasquery, result)
def adjust_input(self, kwargs): """ Adjust user input wrt common DAS keyword patterns, e.g. Zee -> dataset=*Zee*, T1_US -> site=T1_US*. This method only works if self.adjust is set in configuration of DAS server. This method can be customization for concrete DAS applications via external free_text_parser function (part of DAS.web.utils module) """ if not self.adjust: return uinput = kwargs.get('input', '') query_part = uinput.split('|')[0] if query_part == 'queries' or query_part == 'records': return new_input = free_text_parser(uinput, self.daskeys) if uinput and new_input == uinput: selkey = choose_select_key(uinput, self.daskeys, 'dataset') if selkey and len(new_input) > len(selkey) and \ new_input[:len(selkey)] != selkey: new_input = selkey + ' ' + new_input kwargs['input'] = new_input