Spaces:
Running
Running
# Configure this to _YOUR_ environment in order to run the testcases. | |
"testADOdbapiConfig.py v 2.6.2.B00" | |
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
# # | |
# # TESTERS: | |
# # | |
# # You will need to make numerous modifications to this file | |
# # to adapt it to your own testing environment. | |
# # | |
# # Skip down to the next "# #" line -- | |
# # -- the things you need to change are below it. | |
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
import platform | |
import random | |
import sys | |
import is64bit | |
import setuptestframework | |
import tryconnection | |
print("\nPython", sys.version) | |
node = platform.node() | |
try: | |
print( | |
"node=%s, is64bit.os()= %s, is64bit.Python()= %s" | |
% (node, is64bit.os(), is64bit.Python()) | |
) | |
except: | |
pass | |
if "--help" in sys.argv: | |
print( | |
"""Valid command-line switches are: | |
--package - create a temporary test package, run 2to3 if needed. | |
--all - run all possible tests | |
--time - loop over time format tests (including mxdatetime if present) | |
--nojet - do not test against an ACCESS database file | |
--mssql - test against Microsoft SQL server | |
--pg - test against PostgreSQL | |
--mysql - test against MariaDB | |
--remote= - test unsing remote server at= (experimental) | |
""" | |
) | |
exit() | |
try: | |
onWindows = bool(sys.getwindowsversion()) # seems to work on all versions of Python | |
except: | |
onWindows = False | |
# create a random name for temporary table names | |
_alphabet = ( | |
"PYFGCRLAOEUIDHTNSQJKXBMWVZ" # why, yes, I do happen to use a dvorak keyboard | |
) | |
tmp = "".join([random.choice(_alphabet) for x in range(9)]) | |
mdb_name = "xx_" + tmp + ".mdb" # generate a non-colliding name for the temporary .mdb | |
testfolder = setuptestframework.maketemp() | |
if "--package" in sys.argv: | |
# create a new adodbapi module -- running 2to3 if needed. | |
pth = setuptestframework.makeadopackage(testfolder) | |
else: | |
# use the adodbapi module in which this file appears | |
pth = setuptestframework.find_ado_path() | |
if pth not in sys.path: | |
# look here _first_ to find modules | |
sys.path.insert(1, pth) | |
proxy_host = None | |
for arg in sys.argv: | |
if arg.startswith("--remote="): | |
proxy_host = arg.split("=")[1] | |
import adodbapi.remote as remote | |
break | |
# function to clean up the temporary folder -- calling program must run this function before exit. | |
cleanup = setuptestframework.getcleanupfunction() | |
try: | |
import adodbapi # will (hopefully) be imported using the "pth" discovered above | |
except SyntaxError: | |
print( | |
'\n* * * Are you trying to run Python2 code using Python3? Re-run this test using the "--package" switch.' | |
) | |
sys.exit(11) | |
try: | |
print(adodbapi.version) # show version | |
except: | |
print('"adodbapi.version" not present or not working.') | |
print(__doc__) | |
verbose = False | |
for a in sys.argv: | |
if a.startswith("--verbose"): | |
arg = True | |
try: | |
arg = int(a.split("=")[1]) | |
except IndexError: | |
pass | |
adodbapi.adodbapi.verbose = arg | |
verbose = arg | |
doAllTests = "--all" in sys.argv | |
doAccessTest = not ("--nojet" in sys.argv) | |
doSqlServerTest = "--mssql" in sys.argv or doAllTests | |
doMySqlTest = "--mysql" in sys.argv or doAllTests | |
doPostgresTest = "--pg" in sys.argv or doAllTests | |
iterateOverTimeTests = ("--time" in sys.argv or doAllTests) and onWindows | |
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
# # start your environment setup here v v v | |
SQL_HOST_NODE = "testsql.2txt.us,1430" | |
try: # If mx extensions are installed, use mxDateTime | |
import mx.DateTime | |
doMxDateTimeTest = True | |
except: | |
doMxDateTimeTest = False # Requires eGenixMXExtensions | |
doTimeTest = True # obsolete python time format | |
if doAccessTest: | |
if proxy_host: # determine the (probably remote) database file folder | |
c = {"macro_find_temp_test_path": ["mdb", mdb_name], "proxy_host": proxy_host} | |
else: | |
c = {"mdb": setuptestframework.makemdb(testfolder, mdb_name)} | |
# macro definition for keyword "provider" using macro "is64bit" -- see documentation | |
# is64bit will return true for 64 bit versions of Python, so the macro will select the ACE provider | |
# (If running a remote ADO service, this will test the 64-bitedness of the ADO server.) | |
c["macro_is64bit"] = [ | |
"provider", | |
"Microsoft.ACE.OLEDB.12.0", # 64 bit provider | |
"Microsoft.Jet.OLEDB.4.0", | |
] # 32 bit provider | |
connStrAccess = "Provider=%(provider)s;Data Source=%(mdb)s" # ;Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Bypass UserInfo Validation=True" | |
print( | |
" ...Testing ACCESS connection to {} file...".format( | |
c.get("mdb", "remote .mdb") | |
) | |
) | |
doAccessTest, connStrAccess, dbAccessconnect = tryconnection.try_connection( | |
verbose, connStrAccess, 10, **c | |
) | |
if doSqlServerTest: | |
c = { | |
"host": SQL_HOST_NODE, # name of computer with SQL Server | |
"database": "adotest", | |
"user": "adotestuser", # None implies Windows security | |
"password": "Sq1234567", | |
# macro definition for keyword "security" using macro "auto_security" | |
"macro_auto_security": "security", | |
"provider": "MSOLEDBSQL; MARS Connection=True", | |
} | |
if proxy_host: | |
c["proxy_host"] = proxy_host | |
connStr = "Provider=%(provider)s; Initial Catalog=%(database)s; Data Source=%(host)s; %(security)s;" | |
print(" ...Testing MS-SQL login to {}...".format(c["host"])) | |
( | |
doSqlServerTest, | |
connStrSQLServer, | |
dbSqlServerconnect, | |
) = tryconnection.try_connection(verbose, connStr, 30, **c) | |
if doMySqlTest: | |
c = { | |
"host": "testmysql.2txt.us", | |
"database": "adodbapitest", | |
"user": "adotest", | |
"password": "12345678", | |
"port": "3330", # note the nonstandard port for obfuscation | |
"driver": "MySQL ODBC 5.1 Driver", | |
} # or _driver="MySQL ODBC 3.51 Driver | |
if proxy_host: | |
c["proxy_host"] = proxy_host | |
c["macro_is64bit"] = [ | |
"provider", | |
"Provider=MSDASQL;", | |
] # turn on the 64 bit ODBC adapter only if needed | |
cs = ( | |
"%(provider)sDriver={%(driver)s};Server=%(host)s;Port=3330;" | |
+ "Database=%(database)s;user=%(user)s;password=%(password)s;Option=3;" | |
) | |
print(" ...Testing MySql login to {}...".format(c["host"])) | |
doMySqlTest, connStrMySql, dbMySqlconnect = tryconnection.try_connection( | |
verbose, cs, 5, **c | |
) | |
if doPostgresTest: | |
_computername = "testpg.2txt.us" | |
_databasename = "adotest" | |
_username = "adotestuser" | |
_password = "12345678" | |
kws = {"timeout": 4} | |
kws["macro_is64bit"] = [ | |
"prov_drv", | |
"Provider=MSDASQL;Driver={PostgreSQL Unicode(x64)}", | |
"Driver=PostgreSQL Unicode", | |
] | |
# get driver from http://www.postgresql.org/ftp/odbc/versions/ | |
# test using positional and keyword arguments (bad example for real code) | |
if proxy_host: | |
kws["proxy_host"] = proxy_host | |
print(" ...Testing PostgreSQL login to {}...".format(_computername)) | |
doPostgresTest, connStrPostgres, dbPostgresConnect = tryconnection.try_connection( | |
verbose, | |
"%(prov_drv)s;Server=%(host)s;Database=%(database)s;uid=%(user)s;pwd=%(password)s;port=5430;", # note nonstandard port | |
_username, | |
_password, | |
_computername, | |
_databasename, | |
**kws | |
) | |
assert ( | |
doAccessTest or doSqlServerTest or doMySqlTest or doPostgresTest | |
), "No database engine found for testing" | |