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