#915 add unit test infrastructure for REST API

This python script creates a database and starts ogAdmServer to run the
tests.  This requires root to be launched:

	# ./run-tests.py

From the 'tests' folder.
master
Javier Sánchez Parra 2019-05-30 17:56:06 +02:00 committed by OpenGnSys Support Team
parent eb6aa82cd4
commit 727a109f7d
2 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,7 @@
ServidorAdm=localhost
PUERTO=2008
USUARIO=test-db
PASSWORD=test-db
datasource=localhost
CATALOG=test-db
INTERFACE=eth1

42
tests/run-tests.py 100755
View File

@ -0,0 +1,42 @@
#!/usr/bin/env python3
import subprocess, glob, os
sql_data = "INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, ntp, dns, proxy, modp2p, timep2p) VALUES ('Aula virtual', 1, 'aula.jpg', 0, 'Despliegue virtual con Vagrant.', 5, 2, '239.194.2.11', 9000, 70, '192.168.56.1', '255.255.255.0', '', '', '', 'peer', 30); INSERT INTO ordenadores (nombreordenador, ip, mac, idaula, idrepositorio, idperfilhard, idmenu, idproautoexec, grupoid, router, mascara, arranque, netiface, netdriver, fotoord) VALUES ('pc2', '192.168.2.1', '0800270E6501', 1, 1, 0, 0, 0, 0, '192.168.56.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'), ('pc2', '192.168.2.2', '0800270E6502', 1, 1, 0, 0, 0, 0, '192.168.56.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif');"
sql_create_user = "CREATE USER 'test-db'@'hostname'; GRANT ALL PRIVILEGES ON *.* To 'test-db'@'hostname' IDENTIFIED BY 'test-db';"
sql_delete_user = "DROP USER 'test-db'@'hostname';"
def start_mysql():
subprocess.run(['mysqladmin', 'drop', '-f', 'test-db'],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
subprocess.run(['mysqladmin', 'create', 'test-db'])
subprocess.run('mysql --default-character-set=utf8 test-db < ../../../../Database/ogAdmBD.sql', shell=True)
subprocess.run(['mysql', '-D', 'test-db', '-e', sql_data])
subprocess.run(['mysql', '-D', 'test-db', '-e', sql_create_user])
return
def stop_mysql():
subprocess.run(['mysql', '-D', 'test-db', '-e', sql_delete_user])
subprocess.run(['mysqladmin', 'drop', '-f', 'test-db'])
return
if os.getuid() is not 0:
print('You need to be root to run these tests :-)')
exit()
start_mysql();
subprocess.Popen(['../ogAdmServer', '-f', 'config/ogAdmServer.cfg'])
for filename in glob.iglob('units/**'):
subprocess.run(['python3', filename, '-v'])
stop_mysql();
subprocess.run(['pkill', 'ogAdmServer'])