def run_fail_test(testname): '''Runs a test, which executes a query that is supposed to fail''' print ("Running fail test: " + colorize(testname, COLOR_MAGENTA)) query = readfile('%s%s.fail' % (tests_path, testname)).strip() test_succeed = True try: expr = parser.parse(query) expr(rels) test_succeed = False except: pass try: o_query = optimizer.optimize_all(query, rels) o_expr = parser.parse(o_query) o_expr(rels) test_succeed = False except: pass try: c_expr = parser.tree(query).toCode() eval(c_expr, rels) test_succeed = False except: pass if test_succeed: print (colorize('Test passed', COLOR_GREEN)) else: print (colorize('Test failed (by not raising any exception)', COLOR_RED)) return test_succeed
def run_fail_test(testname): '''Runs a test, which executes a query that is supposed to fail''' print("Running fail test: " + colorize(testname, COLOR_MAGENTA)) query = readfile('%s%s.fail' % (tests_path, testname)).strip() test_succeed = True try: expr = parser.parse(query) expr(rels) test_succeed = False except: pass try: o_query = optimizer.optimize_all(query, rels) o_expr = parser.parse(o_query) o_expr(rels) test_succeed = False except: pass try: c_expr = parser.tree(query).toCode() eval(c_expr, rels) test_succeed = False except: pass if test_succeed: print(colorize('Test passed', COLOR_GREEN)) else: print(colorize('Test failed (by not raising any exception)', COLOR_RED)) return test_succeed
def run_test(testname): '''Runs a specific test executing the file testname.query and comparing the result with testname.result The query will be executed both unoptimized and optimized''' print("Running test: " + colorize(testname, COLOR_MAGENTA)) query = None expr = None o_query = None o_expr = None result_rel = None result = None o_result = None try: result_rel = relation.Relation.load('%s%s.result' % (tests_path, testname)) query = readfile('%s%s.query' % (tests_path, testname)).strip() o_query = optimizer.optimize_all(query, rels) expr = parser.parse(query) result = expr(rels) o_expr = parser.parse(o_query) o_result = o_expr(rels) c_expr = parser.tree(query).toCode() c_result = eval(c_expr, rels) if (o_result == result_rel) and (result == result_rel) and (c_result == result_rel): print(colorize('Test passed', COLOR_GREEN)) return True except Exception as inst: traceback.print_exc(file=sys.stdout) print(inst) pass print(colorize('ERROR', COLOR_RED)) print("Query: %s -> %s" % (query, expr)) print("Optimized query: %s -> %s" % (o_query, o_expr)) print(colorize('=====================================', COLOR_RED)) print(colorize("Expected result", COLOR_GREEN)) print(result_rel.pretty_string(tty=True)) print(colorize("Result", COLOR_RED)) print(result.pretty_string(tty=True)) print(colorize("Optimized result", COLOR_RED)) print(o_result.pretty_string(tty=True)) print( colorize("optimized result match %s" % str(result_rel == o_result), COLOR_MAGENTA)) print( colorize("result match %s" % str(result == result_rel), COLOR_MAGENTA)) print(colorize('=====================================', COLOR_RED)) return False
def run_test(testname): '''Runs a specific test executing the file testname.query and comparing the result with testname.result The query will be executed both unoptimized and optimized''' print "Running test: " + colorize(testname, COLOR_MAGENTA) query = None expr = None o_query = None o_expr = None result_rel = None result = None o_result = None try: result_rel = relation.relation('%s%s.result' % (tests_path, testname)) query = unicode( readfile('%s%s.query' % (tests_path, testname)).strip(), 'utf8') o_query = optimizer.optimize_all(query, rels) expr = parser.parse(query) # Converting expression to python string result = eval(expr, rels) # Evaluating the expression o_expr = parser.parse( o_query) # Converting expression to python string o_result = eval(o_expr, rels) # Evaluating the expression c_expr = parser.tree(query).toCode() # Converting to python code c_result = eval(c_expr, rels) if (o_result == result_rel) and (result == result_rel) and (c_result == result_rel): print colorize('Test passed', COLOR_GREEN) return True except Exception as inst: print inst pass print colorize('ERROR', COLOR_RED) print "Query: %s -> %s" % (query, expr) print "Optimized query: %s -> %s" % (o_query, o_expr) print colorize('=====================================', COLOR_RED) print colorize("Expected result", COLOR_GREEN) print result_rel print colorize("Result", COLOR_RED) print result print colorize("Optimized result", COLOR_RED) print o_result print colorize("optimized result match %s" % str(result_rel == o_result), COLOR_MAGENTA) print colorize("result match %s" % str(result == result_rel), COLOR_MAGENTA) print colorize('=====================================', COLOR_RED) return False
def run_test(testname): '''Runs a specific test executing the file testname.query and comparing the result with testname.result The query will be executed both unoptimized and optimized''' print ("Running test: " + colorize(testname, COLOR_MAGENTA)) query = None expr = None o_query = None o_expr = None result_rel = None result = None o_result = None try: result_rel = relation.relation('%s%s.result' % (tests_path, testname)) query = readfile('%s%s.query' % (tests_path, testname)).strip() o_query = optimizer.optimize_all(query, rels) expr = parser.parse(query) # Converting expression to python string result = eval(expr, rels) # Evaluating the expression o_expr = parser.parse( o_query) # Converting expression to python string o_result = eval(o_expr, rels) # Evaluating the expression c_expr = parser.tree(query).toCode() # Converting to python code c_result = eval(c_expr, rels) if (o_result == result_rel) and (result == result_rel) and (c_result == result_rel): print (colorize('Test passed', COLOR_GREEN)) return True except Exception as inst: print (inst) pass print (colorize('ERROR', COLOR_RED)) print ("Query: %s -> %s" % (query, expr)) print ("Optimized query: %s -> %s" % (o_query, o_expr)) print (colorize('=====================================', COLOR_RED)) print (colorize("Expected result", COLOR_GREEN)) print (result_rel) print (colorize("Result", COLOR_RED)) print (result) print (colorize("Optimized result", COLOR_RED)) print (o_result) print (colorize("optimized result match %s" % str(result_rel == o_result), COLOR_MAGENTA)) print (colorize("result match %s" % str(result == result_rel), COLOR_MAGENTA)) print (colorize('=====================================', COLOR_RED)) return False
def optimize(self): '''Performs all the possible optimizations on the query''' self.undo = self.ui.txtQuery.text() # Storing the query in undo list query = compatibility.get_py_str(self.ui.txtQuery.text()) try: result = optimizer.optimize_all(query, self.relations) compatibility.set_utf8_text(self.ui.txtQuery, result) except Exception, e: QtGui.QMessageBox.information(None, QtGui.QApplication.translate("Form", "Error"), "%s\n%s" % (QtGui.QApplication.translate("Form", "Check your query!"), e.__str__()))
def optimize(self): '''Performs all the possible optimizations on the query''' self.undo = self.ui.txtQuery.text() # Storing the query in undo list query = self.ui.txtQuery.text() try: result = optimizer.optimize_all(query, self.relations) self.ui.txtQuery.setText(result) except Exception as e: QtWidgets.QMessageBox.information(None, QtWidgets.QApplication.translate("Form", "Error"), "%s\n%s" % (QtWidgets.QApplication.translate("Form", "Check your query!"), e.__str__()))
def run_test(testname): '''Runs a specific test executing the file testname.query and comparing the result with testname.result The query will be executed both unoptimized and optimized''' print "Running test: " + colored(testname, 'magenta') query = None expr = None o_query = None o_expr = None result_rel = None result = None o_result = None try: result_rel = relation.relation('%s%s.result' % (tests_path, testname)) query = readfile('%s%s.query' % (tests_path, testname)).strip() query = unicode(query, 'utf-8') expr = parser.parse(query) #Converting expression to python code o_query = optimizer.optimize_all(query, rels) result = eval(expr, rels) #Evaluating the expression o_expr = parser.parse(o_query) #Converting expression to python code o_result = eval(o_expr, rels) #Evaluating the expression if (o_result == result_rel) and (result == result_rel): print colored('Test passed', 'green') return True except Exception as inst: print inst, "------" pass print colored('ERROR', 'red') print "Query: %s -> %s" % (query, expr) print "Optimized query: %s -> %s" % (o_query, o_expr) print colored('=====================================', 'red') print "\033[33;1mExpected result\033[0m" print result_rel print "\033[33;1mResult\033[0m" print result print "\033[33;1mOptimized result\033[0m" print o_result print "\033[33;1moptimized result match\033[0m", result_rel == o_result print "\033[33;1mresult match \033[0m", result == result_rel print colored('=====================================', 'red') return False
def optimize(self): """Performs all the possible optimizations on the query""" self.undo = self.ui.txtQuery.text() # Storing the query in undo list res_rel, query = self.user_interface.split_query(self.ui.txtQuery.text(), None) try: trace = [] result = optimizer.optimize_all(query, self.user_interface.relations, debug=trace) print("==== Optimization steps ====") print(query) print("\n".join(trace)) print("========") if res_rel: result = "%s = %s" % (res_rel, result) self.ui.txtQuery.setText(result) except Exception as e: self.error(e)
def optimize(self): '''Performs all the possible optimizations on the query''' self.undo = self.ui.txtQuery.text() # Storing the query in undo list res_rel, query = self.user_interface.split_query( self.ui.txtQuery.text(), None) try: trace = [] result = optimizer.optimize_all(query, self.user_interface.relations, debug=trace) print('==== Optimization steps ====') print(query) print('\n'.join(trace)) print('========') if res_rel: result = '%s = %s' % (res_rel, result) self.ui.txtQuery.setText(result) except Exception as e: self.error(e)