-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathcall_tests_freeswitch.js
More file actions
93 lines (83 loc) · 2.7 KB
/
call_tests_freeswitch.js
File metadata and controls
93 lines (83 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const test = require('blue-tape');
const { exec } = require('child_process');
const debug = require('debug')('drachtio:siprec-recording-server');
const clearRequire = require('clear-require');
//const test = require('tape').test ;
//const exec = require('child_process').exec ;
const fs = require('fs-extra');
const execCmd = (cmd, opts) => {
opts = opts || {} ;
return new Promise((resolve, reject) => {
setTimeout(() => {
exec(cmd, opts, (err, stdout, stderr) => {
if (stdout) debug(stdout);
if (stderr) console.log(stderr);
if (err) return reject(err);
resolve();
});
}, 7500);
});
};
test('starting docker network..', (t) => {
t.timeoutAfter(180000);
// clear log and output directories
fs.emptyDir(`${__dirname}/tmp/log`)
.then(fs.emptyDir(`${__dirname}/tmp/rtpengine`))
.catch((err) => {
console.log(`Error cleaning tmp folders: ${err}`);
t.end(err);
});
exec(`docker-compose -p test -f ${__dirname}/docker-compose-freeswitch.yaml up -d`, (err, stdout, stderr) => {
if (-1 != stderr.indexOf('is up-to-date')) return t.end() ;
console.log('docker network started, giving extra time for freeswitch to initialize...');
setTimeout(() => {
exec('docker exec freeswitch fs_cli -x "console loglevel debug"', (err, stdout, stderr) => {
t.end(err) ;
});
}, 18000);
});
});
test('siprec with freeswitch recorder', (t) => {
t.timeoutAfter(20000);
clearRequire('..');
clearRequire('../lib/utils');
clearRequire('config');
process.env.NODE_CONFIG_ENV = 'test2';
const vmap = `-v ${__dirname}/scenarios:/tmp`;
const args = 'drachtio/sipp sipp -m 1 -sf /tmp/uac_siprec_pcap2.xml drachtio';
const cmd = `docker run -t --rm --name sipp1 --net test_siprec ${vmap} ${args}`;
const srf = require('..');
srf
.on('connect', () => {
console.log(`cmd: ${cmd}`);
execCmd(cmd)
.then(() => {
t.pass('siprec with freeswitch passed');
srf.disconnect();
return t.end();
})
.catch((err) => {
srf.disconnect();
t.end(err, 'test failed');
});
})
.on('error', (err) => {
t.end(err, 'error connecting to drachtio');
});
}) ;
test('stopping docker network..', (t) => {
t.timeoutAfter(20000);
exec(`docker-compose -p test -f ${__dirname}/docker-compose-freeswitch.yaml down`, (err, stdout, stderr) => {
console.log(stdout);
//console.log(stderr);
t.pass('Stopped docker compose') ;
});
exec('docker rm -f sipp1', (err, stdout) => {
console.log(stdout);
t.pass('Forced down sipp1');
});
setTimeout(() => {
console.log("Give docker time to stop the images");
t.end() ;
}, 10000);
});