devtools/repotest.py
changeset 1228 91ae10ffb611
parent 600 1fbf11a876a8
child 1232 25cd18899830
equal deleted inserted replaced
1219:054bb575c013 1228:91ae10ffb611
   256     from cubicweb.server.msplanner import PartPlanInformation
   256     from cubicweb.server.msplanner import PartPlanInformation
   257 except ImportError:
   257 except ImportError:
   258     class PartPlanInformation(object):
   258     class PartPlanInformation(object):
   259         def merge_input_maps(*args):
   259         def merge_input_maps(*args):
   260             pass
   260             pass
   261         def _choose_var(self, sourcevars):
   261         def _choose_term(self, sourceterms):
   262             pass    
   262             pass    
   263 _orig_merge_input_maps = PartPlanInformation.merge_input_maps
   263 _orig_merge_input_maps = PartPlanInformation.merge_input_maps
   264 _orig_choose_var = PartPlanInformation._choose_var
   264 _orig_choose_term = PartPlanInformation._choose_term
   265 
   265 
   266 def _merge_input_maps(*args):
   266 def _merge_input_maps(*args):
   267     return sorted(_orig_merge_input_maps(*args))
   267     return sorted(_orig_merge_input_maps(*args))
   268 
   268 
   269 def _choose_var(self, sourcevars):
   269 def _choose_term(self, sourceterms):
   270     # predictable order for test purpose
   270     # predictable order for test purpose
   271     def get_key(x):
   271     def get_key(x):
   272         try:
   272         try:
   273             # variable
   273             # variable
   274             return x.name
   274             return x.name
   277                 # relation
   277                 # relation
   278                 return x.r_type
   278                 return x.r_type
   279             except AttributeError:
   279             except AttributeError:
   280                 # const
   280                 # const
   281                 return x.value
   281                 return x.value
   282     varsinorder = sorted(sourcevars, key=get_key)
   282     varsinorder = sorted(sourceterms, key=get_key)
   283     if len(self._sourcesvars) > 1:
   283     if len(self._sourcesterms) > 1:
   284         for var in varsinorder:
   284         for var in varsinorder:
   285             if not var.scope is self.rqlst:
   285             if not var.scope is self.rqlst:
   286                 return var, sourcevars.pop(var)
   286                 return var, sourceterms.pop(var)
   287     else:
   287     else:
   288         for var in varsinorder:
   288         for var in varsinorder:
   289             if var.scope is self.rqlst:
   289             if var.scope is self.rqlst:
   290                 return var, sourcevars.pop(var)
   290                 return var, sourceterms.pop(var)
   291     var = varsinorder[0]
   291     var = varsinorder[0]
   292     return var, sourcevars.pop(var)
   292     return var, sourceterms.pop(var)
   293 
   293 
   294 
   294 
   295 def do_monkey_patch():
   295 def do_monkey_patch():
   296     RQLRewriter.insert_snippets = _insert_snippets
   296     RQLRewriter.insert_snippets = _insert_snippets
   297     RQLRewriter.build_variantes = _build_variantes
   297     RQLRewriter.build_variantes = _build_variantes
   298     ExecutionPlan._check_permissions = _check_permissions
   298     ExecutionPlan._check_permissions = _check_permissions
   299     ExecutionPlan.tablesinorder = None
   299     ExecutionPlan.tablesinorder = None
   300     ExecutionPlan.init_temp_table = _init_temp_table
   300     ExecutionPlan.init_temp_table = _init_temp_table
   301     PartPlanInformation.merge_input_maps = _merge_input_maps
   301     PartPlanInformation.merge_input_maps = _merge_input_maps
   302     PartPlanInformation._choose_var = _choose_var
   302     PartPlanInformation._choose_term = _choose_term
   303 
   303 
   304 def undo_monkey_patch():
   304 def undo_monkey_patch():
   305     RQLRewriter.insert_snippets = _orig_insert_snippets
   305     RQLRewriter.insert_snippets = _orig_insert_snippets
   306     RQLRewriter.build_variantes = _orig_build_variantes
   306     RQLRewriter.build_variantes = _orig_build_variantes
   307     ExecutionPlan._check_permissions = _orig_check_permissions
   307     ExecutionPlan._check_permissions = _orig_check_permissions
   308     ExecutionPlan.init_temp_table = _orig_init_temp_table
   308     ExecutionPlan.init_temp_table = _orig_init_temp_table
   309     PartPlanInformation.merge_input_maps = _orig_merge_input_maps
   309     PartPlanInformation.merge_input_maps = _orig_merge_input_maps
   310     PartPlanInformation._choose_var = _orig_choose_var
   310     PartPlanInformation._choose_term = _orig_choose_term
   311 
   311