From 727a109f7d79f8ad182ec3a353198e84fe7dfcdd Mon Sep 17 00:00:00 2001 From: Javier Sánchez Parra Date: Thu, 30 May 2019 17:56:06 +0200 Subject: #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. --- tests/config/ogAdmServer.cfg | 7 +++++++ tests/run-tests.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 tests/config/ogAdmServer.cfg create mode 100755 tests/run-tests.py diff --git a/tests/config/ogAdmServer.cfg b/tests/config/ogAdmServer.cfg new file mode 100644 index 0000000..aa20113 --- /dev/null +++ b/tests/config/ogAdmServer.cfg @@ -0,0 +1,7 @@ +ServidorAdm=localhost +PUERTO=2008 +USUARIO=test-db +PASSWORD=test-db +datasource=localhost +CATALOG=test-db +INTERFACE=eth1 diff --git a/tests/run-tests.py b/tests/run-tests.py new file mode 100755 index 0000000..0491ccb --- /dev/null +++ b/tests/run-tests.py @@ -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']) -- cgit v1.2.3-18-g5258