First iteration to automate smoke tests
This commit is contained in:
parent
d0ebd003de
commit
1397b3fcaf
265
test/fixtures/geocoder_api_test_dataset.csv
vendored
Normal file
265
test/fixtures/geocoder_api_test_dataset.csv
vendored
Normal file
@ -0,0 +1,265 @@
|
||||
iso,name
|
||||
AF,Afghanistan
|
||||
AL,Albania
|
||||
DZ,Algeria
|
||||
AS,"American Samoa"
|
||||
AD,Andorra
|
||||
AO,Angola
|
||||
AI,Anguilla
|
||||
AQ,Antarctica
|
||||
AG,"Antigua and Barbuda"
|
||||
AR,Argentina
|
||||
AM,Armenia
|
||||
AW,Aruba
|
||||
AU,Australia
|
||||
AT,Austria
|
||||
AZ,Azerbaijan
|
||||
BS,Bahamas
|
||||
BH,Bahrain
|
||||
BD,Bangladesh
|
||||
BB,Barbados
|
||||
BY,Belarus
|
||||
BE,Belgium
|
||||
BZ,Belize
|
||||
BJ,Benin
|
||||
BM,Bermuda
|
||||
BT,Bhutan
|
||||
BO,Bolivia
|
||||
BA,"Bosnia and Herzegovina"
|
||||
BW,Botswana
|
||||
BV,"Bouvet Island"
|
||||
BR,Brazil
|
||||
BQ,"British Antarctic Territory"
|
||||
IO,"British Indian Ocean Territory"
|
||||
VG,"British Virgin Islands"
|
||||
BN,Brunei
|
||||
BG,Bulgaria
|
||||
BF,"Burkina Faso"
|
||||
BI,Burundi
|
||||
KH,Cambodia
|
||||
CM,Cameroon
|
||||
CA,Canada
|
||||
CT,"Canton and Enderbury Islands"
|
||||
CV,"Cape Verde"
|
||||
KY,"Cayman Islands"
|
||||
CF,"Central African Republic"
|
||||
TD,Chad
|
||||
CL,Chile
|
||||
CN,China
|
||||
CX,"Christmas Island"
|
||||
CC,"Cocos [Keeling] Islands"
|
||||
CO,Colombia
|
||||
KM,Comoros
|
||||
CG,"Congo - Brazzaville"
|
||||
CD,"Congo - Kinshasa"
|
||||
CK,"Cook Islands"
|
||||
CR,"Costa Rica"
|
||||
HR,Croatia
|
||||
CU,Cuba
|
||||
CY,Cyprus
|
||||
CZ,"Czech Republic"
|
||||
CI,"Côte d’Ivoire"
|
||||
DK,Denmark
|
||||
DJ,Djibouti
|
||||
DM,Dominica
|
||||
DO,"Dominican Republic"
|
||||
NQ,"Dronning Maud Land"
|
||||
DD,"East Germany"
|
||||
EC,Ecuador
|
||||
EG,Egypt
|
||||
SV,"El Salvador"
|
||||
GQ,"Equatorial Guinea"
|
||||
ER,Eritrea
|
||||
EE,Estonia
|
||||
ET,Ethiopia
|
||||
FK,"Falkland Islands"
|
||||
FO,"Faroe Islands"
|
||||
FJ,Fiji
|
||||
FI,Finland
|
||||
FR,France
|
||||
GF,"French Guiana"
|
||||
PF,"French Polynesia"
|
||||
TF,"French Southern Territories"
|
||||
FQ,"French Southern and Antarctic Territories"
|
||||
GA,Gabon
|
||||
GM,Gambia
|
||||
GE,Georgia
|
||||
DE,Germany
|
||||
GH,Ghana
|
||||
GI,Gibraltar
|
||||
GR,Greece
|
||||
GL,Greenland
|
||||
GD,Grenada
|
||||
GP,Guadeloupe
|
||||
GU,Guam
|
||||
GT,Guatemala
|
||||
GG,Guernsey
|
||||
GN,Guinea
|
||||
GW,Guinea-Bissau
|
||||
GY,Guyana
|
||||
HT,Haiti
|
||||
HM,"Heard Island and McDonald Islands"
|
||||
HN,Honduras
|
||||
HK,"Hong Kong SAR China"
|
||||
HU,Hungary
|
||||
IS,Iceland
|
||||
IN,India
|
||||
ID,Indonesia
|
||||
IR,Iran
|
||||
IQ,Iraq
|
||||
IE,Ireland
|
||||
IM,"Isle of Man"
|
||||
IL,Israel
|
||||
IT,Italy
|
||||
JM,Jamaica
|
||||
JP,Japan
|
||||
JE,Jersey
|
||||
JT,"Johnston Island"
|
||||
JO,Jordan
|
||||
KZ,Kazakhstan
|
||||
KE,Kenya
|
||||
KI,Kiribati
|
||||
KW,Kuwait
|
||||
KG,Kyrgyzstan
|
||||
LA,Laos
|
||||
LV,Latvia
|
||||
LB,Lebanon
|
||||
LS,Lesotho
|
||||
LR,Liberia
|
||||
LY,Libya
|
||||
LI,Liechtenstein
|
||||
LT,Lithuania
|
||||
LU,Luxembourg
|
||||
MO,"Macau SAR China"
|
||||
MK,Macedonia
|
||||
MG,Madagascar
|
||||
MW,Malawi
|
||||
MY,Malaysia
|
||||
MV,Maldives
|
||||
ML,Mali
|
||||
MT,Malta
|
||||
MH,"Marshall Islands"
|
||||
MQ,Martinique
|
||||
MR,Mauritania
|
||||
MU,Mauritius
|
||||
YT,Mayotte
|
||||
FX,"Metropolitan France"
|
||||
MX,Mexico
|
||||
FM,Micronesia
|
||||
MI,"Midway Islands"
|
||||
MD,Moldova
|
||||
MC,Monaco
|
||||
MN,Mongolia
|
||||
ME,Montenegro
|
||||
MS,Montserrat
|
||||
MA,Morocco
|
||||
MZ,Mozambique
|
||||
MM,"Myanmar [Burma]"
|
||||
NA,Namibia
|
||||
NR,Nauru
|
||||
NP,Nepal
|
||||
NL,Netherlands
|
||||
AN,"Netherlands Antilles"
|
||||
NT,"Neutral Zone"
|
||||
NC,"New Caledonia"
|
||||
NZ,"New Zealand"
|
||||
NI,Nicaragua
|
||||
NE,Niger
|
||||
NG,Nigeria
|
||||
NU,Niue
|
||||
NF,"Norfolk Island"
|
||||
KP,"North Korea"
|
||||
VD,"North Vietnam"
|
||||
MP,"Northern Mariana Islands"
|
||||
NO,Norway
|
||||
OM,Oman
|
||||
PC,"Pacific Islands Trust Territory"
|
||||
PK,Pakistan
|
||||
PW,Palau
|
||||
PS,"Palestinian Territories"
|
||||
PA,Panama
|
||||
PZ,"Panama Canal Zone"
|
||||
PG,"Papua New Guinea"
|
||||
PY,Paraguay
|
||||
YD,"People's Democratic Republic of Yemen"
|
||||
PE,Peru
|
||||
PH,Philippines
|
||||
PN,"Pitcairn Islands"
|
||||
PL,Poland
|
||||
PT,Portugal
|
||||
PR,"Puerto Rico"
|
||||
QA,Qatar
|
||||
RO,Romania
|
||||
RU,Russia
|
||||
RW,Rwanda
|
||||
RE,Réunion
|
||||
BL,"Saint Barthélemy"
|
||||
SH,"Saint Helena"
|
||||
KN,"Saint Kitts and Nevis"
|
||||
LC,"Saint Lucia"
|
||||
MF,"Saint Martin"
|
||||
PM,"Saint Pierre and Miquelon"
|
||||
VC,"Saint Vincent and the Grenadines"
|
||||
WS,Samoa
|
||||
SM,"San Marino"
|
||||
SA,"Saudi Arabia"
|
||||
SN,Senegal
|
||||
RS,Serbia
|
||||
CS,"Serbia and Montenegro"
|
||||
SC,Seychelles
|
||||
SL,"Sierra Leone"
|
||||
SG,Singapore
|
||||
SK,Slovakia
|
||||
SI,Slovenia
|
||||
SB,"Solomon Islands"
|
||||
SO,Somalia
|
||||
ZA,"South Africa"
|
||||
GS,"South Georgia and the South Sandwich Islands"
|
||||
KR,"South Korea"
|
||||
ES,Spain
|
||||
LK,"Sri Lanka"
|
||||
SD,Sudan
|
||||
SR,Suriname
|
||||
SJ,"Svalbard and Jan Mayen"
|
||||
SZ,Swaziland
|
||||
SE,Sweden
|
||||
CH,Switzerland
|
||||
SY,Syria
|
||||
ST,"São Tomé and Príncipe"
|
||||
TW,Taiwan
|
||||
TJ,Tajikistan
|
||||
TZ,Tanzania
|
||||
TH,Thailand
|
||||
TL,Timor-Leste
|
||||
TG,Togo
|
||||
TK,Tokelau
|
||||
TO,Tonga
|
||||
TT,"Trinidad and Tobago"
|
||||
TN,Tunisia
|
||||
TR,Turkey
|
||||
TM,Turkmenistan
|
||||
TC,"Turks and Caicos Islands"
|
||||
TV,Tuvalu
|
||||
UM,"U.S. Minor Outlying Islands"
|
||||
PU,"U.S. Miscellaneous Pacific Islands"
|
||||
VI,"U.S. Virgin Islands"
|
||||
UG,Uganda
|
||||
UA,Ukraine
|
||||
SU,"Union of Soviet Socialist Republics"
|
||||
AE,"United Arab Emirates"
|
||||
GB,"United Kingdom"
|
||||
US,"United States"
|
||||
ZZ,"Unknown or Invalid Region"
|
||||
UY,Uruguay
|
||||
UZ,Uzbekistan
|
||||
VU,Vanuatu
|
||||
VA,"Vatican City"
|
||||
VE,Venezuela
|
||||
VN,Vietnam
|
||||
WK,"Wake Island"
|
||||
WF,"Wallis and Futuna"
|
||||
EH,"Western Sahara"
|
||||
YE,Yemen
|
||||
ZM,Zambia
|
||||
ZW,Zimbabwe
|
||||
AX,"Åland Islands"
|
|
29
test/integration/test_admin0_functions.py
Normal file
29
test/integration/test_admin0_functions.py
Normal file
@ -0,0 +1,29 @@
|
||||
import os, time, requests, json
|
||||
from unittest import TestCase
|
||||
from nose.tools import assert_raises
|
||||
|
||||
|
||||
class TestConfigHelper(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
username = os.environ["GEOCODER_API_TEST_USERNAME"]
|
||||
api_key = os.environ["GEOCODER_API_TEST_API_KEY"]
|
||||
host = os.environ["GEOCODER_API_TEST_HOST"]
|
||||
self.table_name = os.environ["GEOCODER_API_TEST_TABLE_NAME"]
|
||||
self.sql_api_url = "https://{0}.{1}/api/v2/sql?api_key={2}".format(username, host, api_key)
|
||||
|
||||
def test_if_select_with_admin0_is_ok(self):
|
||||
query = "SELECT cdb_geocode_admin0_polygon(name) as geometry FROM {0} LIMIT 1".format(self.table_name)
|
||||
geometry = self.execute_query(query)
|
||||
assert geometry != None
|
||||
|
||||
def build_sql_api_query_url(self, query):
|
||||
return "{0}&q={1}".format(self.sql_api_url,query)
|
||||
|
||||
def execute_query(self, query):
|
||||
query_url = self.build_sql_api_query_url(query)
|
||||
query_response = requests.get(query_url)
|
||||
if query_response.status_code != 200:
|
||||
raise Exception("Error executing SQL API query")
|
||||
query_response_data = json.loads(query_response.text)
|
||||
return query_response_data['rows'][0]['geometry']
|
91
test/run_tests.py
Normal file
91
test/run_tests.py
Normal file
@ -0,0 +1,91 @@
|
||||
import getopt, sys, requests, time, json, subprocess, os
|
||||
|
||||
def main():
|
||||
opts, args = getopt.getopt(sys.argv[1:], "h", ["help", "host="])
|
||||
|
||||
if len(args) < 2:
|
||||
usage()
|
||||
sys.exit()
|
||||
|
||||
host = "cartodb.com"
|
||||
username = args[0]
|
||||
api_key = args[1]
|
||||
table_name = "geocoder_api_test_dataset_".format(int(time.time()))
|
||||
for o, a in opts:
|
||||
if o in ("-h", "--help"):
|
||||
usage()
|
||||
sys.exit()
|
||||
elif o in ("--host"):
|
||||
host = opts[0][1]
|
||||
else:
|
||||
assert False, "unhandled option"
|
||||
|
||||
try:
|
||||
table_name = import_test_dataset(username, api_key, host)
|
||||
set_environment_variables(username, api_key, table_name, host)
|
||||
execute_tests()
|
||||
finally:
|
||||
clean_environment_variables()
|
||||
clean_test_dataset(username, api_key, table_name, host)
|
||||
|
||||
def usage():
|
||||
print """Usage: run_tests.py [options] username api_key
|
||||
Options:
|
||||
-h: Show this help
|
||||
--host: take that host as base (by default is cartodb.com). Eg. cartodb.com"""
|
||||
|
||||
def import_test_dataset(username, api_key, host):
|
||||
url = "https://{0}.{1}/api/v1/imports/?api_key={2}".format(username, host, api_key)
|
||||
dataset = {'file': open('fixtures/geocoder_api_test_dataset.csv', 'rb')}
|
||||
response = requests.post(url, files=dataset)
|
||||
response_json = json.loads(response.text)
|
||||
if not response_json['success']:
|
||||
print "Error importing the test dataset: {0}".format(response.text)
|
||||
sys.exit(1)
|
||||
while(True):
|
||||
table_name = get_imported_table_name(username, host, api_key, response_json['item_queue_id'])
|
||||
if table_name:
|
||||
return table_name
|
||||
else:
|
||||
time.sleep(5)
|
||||
|
||||
def get_imported_table_name(username, host, api_key, import_id):
|
||||
import_data_url = "https://{0}.{1}/api/v1/imports/{2}?api_key={3}".format(
|
||||
username, host, import_id, api_key
|
||||
)
|
||||
import_data_response = requests.get(import_data_url)
|
||||
if import_data_response.status_code != 200:
|
||||
print "Error getting the table name from the import data: {0}".format(import_data_response.text)
|
||||
sys.exit(1)
|
||||
import_data_json = json.loads(import_data_response.text)
|
||||
return import_data_json['table_name']
|
||||
|
||||
def execute_tests():
|
||||
print "Start testing..."
|
||||
process = subprocess.Popen(["nosetests", "--where=integration/"])
|
||||
process.wait()
|
||||
print "Testing finished!"
|
||||
|
||||
def set_environment_variables(username, api_key, table_name, host):
|
||||
os.environ["GEOCODER_API_TEST_USERNAME"] = username
|
||||
os.environ["GEOCODER_API_TEST_API_KEY"] = api_key
|
||||
os.environ["GEOCODER_API_TEST_TABLE_NAME"] = table_name
|
||||
os.environ["GEOCODER_API_TEST_HOST"] = host
|
||||
|
||||
def clean_environment_variables():
|
||||
print "Cleaning test dataset environment variables..."
|
||||
del os.environ["GEOCODER_API_TEST_USERNAME"]
|
||||
del os.environ["GEOCODER_API_TEST_API_KEY"]
|
||||
del os.environ["GEOCODER_API_TEST_TABLE_NAME"]
|
||||
del os.environ["GEOCODER_API_TEST_HOST"]
|
||||
|
||||
def clean_test_dataset(username, api_key, table_name, host):
|
||||
print "Cleaning test dataset {0}...".format(table_name)
|
||||
url = "https://{0}.{1}/api/v2/sql?q=drop table {2}&api_key={3}".format(username, host, table_name, api_key)
|
||||
response = requests.get(url)
|
||||
if response.status_code != 200:
|
||||
print "Error cleaning the test dataset: {0}".format(response.text)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user