Github user kaknikhil commented on a diff in the pull request:
https://github.com/apache/madlib/pull/271#discussion_r191592112
--- Diff: src/madpack/madpack.py ---
@@ -238,6 +311,88 @@ def _run_sql_file(schema, maddir_mod_py, module,
sqlfile,
return retval
#
------------------------------------------------------------------------------
+def _run_sql_file(schema, sqlfile):
+ """
+ Run SQL file
+ @param schema name of the target schema
+ @param sqlfile name of the file to parse
+ """
+ # Run the SQL using DB command-line utility
+ if portid in SUPPORTED_PORTS:
+ sqlcmd = 'psql'
+ # Test the DB cmd line utility
+ std, err = subprocess.Popen(['which', sqlcmd],
stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE).communicate()
+ if not std:
+ error_(this, "Command not found: %s" % sqlcmd, True)
+
+ runcmd = [sqlcmd, '-a',
+ '-v', 'ON_ERROR_STOP=1',
+ '-h', con_args['host'].split(':')[0],
+ '-p', con_args['host'].split(':')[1],
+ '-d', con_args['database'],
+ '-U', con_args['user'],
+ '--no-password',
+ '--single-transaction',
+ '-f', sqlfile]
+ runenv = os.environ
+ if 'password' in con_args:
+ runenv["PGPASSWORD"] = con_args['password']
+ runenv["PGOPTIONS"] = '-c client_min_messages=notice'
+
+ # Open log file
+ logfile = sqlfile + '.log'
+ try:
+ log = open(logfile, 'w')
+ except:
+ error_(this, "Cannot create log file: %s" % logfile, False)
+ raise Exception
+
+ # Run the SQL
+ try:
+ info_(this, "> ... executing " + sqlfile, verbose)
+ info_(this, ' '.join(runcmd), verbose)
+ retval = subprocess.call(runcmd, env=runenv, stdout=log,
stderr=log)
+ except:
+ error_(this, "Failed executing %s" % sqlfile, False)
+ raise Exception
+ finally:
+ log.close()
+ # Check the exit status
+ result = _parse_result_logfile(retval, logfile, sqlfile)
+ return result
+#
------------------------------------------------------------------------------
+
+def _parse_result_logfile(retval, logfile, sql_abspath,
+ sql_filename=None, module=None,
milliseconds=None):
+ """
+ Function to parse the logfile and return if its content indicate a
failure
+ or success.
+ """
+ is_install_check_logfile = bool(sql_filename and module)
+ # Check the exit status
+ if retval != 0:
+ result = 'FAIL'
+ global keeplogs
+ keeplogs = True
+ # Since every single statement in the test file gets logged,
+ # an empty log file indicates an empty or a failed test
+ elif os.path.isfile(logfile) and os.path.getsize(logfile) > 0:
+ result = 'PASS'
+ # Otherwise
+ else:
+ result = 'ERROR'
+
+ if is_install_check_logfile:
--- End diff --
can we move the `install_check` logic out of this function. The function
already returns the `result`, we can use this `result` variable to print the
install check output.
---