test using native msql instead of docker

This commit is contained in:
Dave Horton
2019-12-05 09:43:47 -05:00
parent 28d05be789
commit 98369c377b
11 changed files with 1048 additions and 111 deletions

View File

@@ -1,12 +1,8 @@
sudo: required
dist: bionic
language: node_js
node_js:
- "lts/10"
services:
- docker
- mysql
script:
- npm test
before_install:
- docker pull mysql:8
- docker images
- npm test

View File

@@ -4,9 +4,8 @@
},
"mysql": {
"host": "localhost",
"user": "jambones",
"password": "jambones",
"database": "jambones",
"port": 3406
"user": "jambones_test",
"database": "jambones_test",
"password": "jambones_test"
}
}

3
db/create_test_db.sql Normal file
View File

@@ -0,0 +1,3 @@
create database jambones_test;
create user jambones_test@localhost IDENTIFIED WITH mysql_native_password by 'jambones_test';
grant all on jambones_test.* to jambones_test@localhost;

3
db/remove_test_db.sql Normal file
View File

@@ -0,0 +1,3 @@
DROP DATABASE jambones_test;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'jambones_test'@'localhost';
DROP USER 'jambones_test'@'localhost';

998
test.out Normal file

File diff suppressed because one or more lines are too long

26
test/create-test-db.js Normal file
View File

@@ -0,0 +1,26 @@
const test = require('tape').test ;
const exec = require('child_process').exec ;
test('creating jambones_test database', (t) => {
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD < ${__dirname}/../db/create_test_db.sql`, (err, stdout, stderr) => {
if (err) return t.end(err);
t.pass('database successfully created');
t.end();
});
});
test('creating schema', (t) => {
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD -D jambones_test < ${__dirname}/../db/jambones-sql.sql`, (err, stdout, stderr) => {
if (err) return t.end(err);
t.pass('schema successfully created');
t.end();
});
});
test('creating auth token', (t) => {
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD -D jambones_test < ${__dirname}/../db/create-admin-token.sql`, (err, stdout, stderr) => {
if (err) return t.end(err);
t.pass('auth token successfully created');
t.end();
});
});

View File

@@ -1,26 +0,0 @@
version: '2'
networks:
jambones-api-server:
driver: bridge
ipam:
config:
- subnet: 172.22.0.0/16
services:
mysql:
image: mysql:8
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: jambones
MYSQL_USER: jambones
MYSQL_PASSWORD: jambones
command: --default-authentication-plugin=mysql_native_password
ports:
- "3406:3306/tcp"
volumes:
- ../db:/tmp
container_name: test_mysql_1
networks:
jambones-api-server:
ipv4_address: 172.22.0.10

View File

@@ -1,62 +0,0 @@
const test = require('tape').test ;
const exec = require('child_process').exec ;
test('starting docker network..', (t) => {
exec(`docker-compose -f ${__dirname}/docker-compose-testbed.yaml up -d`, (err, stdout, stderr) => {
if (err) t.end(err);
console.log('docker network started, giving extra time to create test mysql database...');
testMysql(60000, (err) => {
if (err) {
exec(`docker logs test_mysql_1`, (err, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
});
}
else t.pass('successfully connected to mysql');
setTimeout(() => t.end(), 2000);
});
});
});
test('creating schema', (t) => {
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "source /tmp/jambones-sql.sql"', (err, stdout, stderr) => {
if (!err) t.pass('successfully created schema');
else {
console.log(stderr);
console.log(stdout);
}
t.end(err);
});
});
test('creating initial auth token', (t) => {
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "source /tmp/create-admin-token.sql"', (err, stdout, stderr) => {
if (!err) t.pass('successfully created auth token');
else {
console.log(stderr);
console.log(stdout);
}
t.end(err);
});
});
function testMysql(timeout, callback) {
const retryTimer = setInterval(() => {
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "SELECT 1"', (err, stdout, stderr) => {
if (!err) {
clearTimeout(timeoutTimer);
clearInterval(retryTimer);
return callback(null);
}
//console.log(`failed connecting (err): ${stderr}`);
//console.log(`failed connecting (out): ${stdout}`);
});
}, 4000);
const timeoutTimer = setTimeout(() => {
clearInterval(retryTimer);
callback('timeout connecting to mysql');
}, timeout);
}

View File

@@ -1,11 +0,0 @@
const test = require('tape').test ;
const exec = require('child_process').exec ;
test('stopping docker network..', (t) => {
t.timeoutAfter(10000);
exec(`docker-compose -f ${__dirname}/docker-compose-testbed.yaml down`, (err, stdout, stderr) => {
//console.log(`stderr: ${stderr}`);
process.exit(0);
});
t.end() ;
});

View File

@@ -1,7 +1,7 @@
require('./docker-start');
require('./create-test-db');
require('./service-providers');
require('./voip-carriers');
require('./accounts');
require('./phone-numbers');
require('./applications');
require('./docker-stop');
require('./remove-test-db');

11
test/remove-test-db.js Normal file
View File

@@ -0,0 +1,11 @@
const test = require('tape').test ;
const exec = require('child_process').exec ;
test('dropping jambones_test database', (t) => {
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD < ${__dirname}/../db/remove_test_db.sql`, (err, stdout, stderr) => {
if (err) return t.end(err);
t.pass('database successfully dropped');
t.end();
process.exit(0);
});
});