Merge pull request 'LINXD-2396: Get Hub address from asset configuration; Take default main group if not specified in config; Update config to not declare hub address and voice server' (#6) from LINXD-2396-simulator-improvements into master

Reviewed-on: #6
This commit is contained in:
Sergiu Toma 2023-05-10 07:18:02 +00:00
commit 0c62a937ec
6 changed files with 1001 additions and 108 deletions

View File

@ -0,0 +1,440 @@
[elogs]
name = 'dev'
[api]
port = ''
host = 'node.dev.linx.safemobile.com/api'
use_secure = true
accept_untrusted_certs = true
[settings]
max_fails = 3
send_group_monitoring_before_each_call = 'false'
gps_report_interval = ''
gps_min_interval = 1000
gps_max_interval = 10000
gps_lat_start_point = 46.217802
gps_lng_start_point = 24.776126
delay_between_clients = 500
testing_duration = 240 # seconds
# group 1 / 1 send / 10 listen
[[assets]]
asset_id = 7516
group_id = 2561
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 7517
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7518
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7519
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7520
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7521
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7522
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7523
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7524
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7525
group_id = 2561
generate_voice = false
[[assets]]
asset_id = 7526
group_id = 2561
generate_voice = false
# group 2 / 1 send / 10 listen
[[assets]]
asset_id = 7536
group_id = 2560
generate_voice = true
[[assets]]
asset_id = 7537
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7538
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7539
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7540
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7541
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7542
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7543
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7544
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7545
group_id = 2560
generate_voice = false
[[assets]]
asset_id = 7546
group_id = 2560
generate_voice = false
# group 3 / 1 send / 10 listen
[[assets]]
asset_id = 7556
group_id = 2559
generate_voice = true
[[assets]]
asset_id = 7557
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7558
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7559
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7560
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7561
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7562
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7563
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7564
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7565
group_id = 2559
generate_voice = false
[[assets]]
asset_id = 7566
group_id = 2559
generate_voice = false
# group 4 / 1 send / 10 listen
[[assets]]
asset_id = 7576
group_id = 2558
generate_voice = true
[[assets]]
asset_id = 7577
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7578
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7579
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7580
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7581
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7582
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7583
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7584
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7585
group_id = 2558
generate_voice = false
[[assets]]
asset_id = 7586
group_id = 2558
generate_voice = false
# group 5 / 1 send / 10 listen
# group 6 / 1 send / 10 listen
# group 7 / 1 send / 10 listen
# group 8 / 1 send / 10 listen
# group 9 / 1 send / 10 listen
# group 10 / 1 send / 10 listen
[[assets]]
asset_id = 7715
group_id = 2552
generate_voice = true
[[assets]]
asset_id = 7714
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7713
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7712
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7711
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7710
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7709
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7708
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7707
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7706
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7705
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7704
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7703
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7702
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7701
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7700
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7699
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7698
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7697
group_id = 2552
generate_voice = false
[[assets]]
asset_id = 7696
group_id = 2552
generate_voice = false
[sounds]
tracks = ['1.mp3','2.mp3','3.mp3','4.mp3','5.mp3','6.mp3','7.mp3','8.mp3','9.mp3','10.mp3','11.mp3','12.mp3','13.mp3','14.mp3','15.mp3','16.mp3','17.mp3','18.mp3','19.mp3']

View File

@ -1,40 +1,440 @@
[mumble]
port = '5668'
host = 'dev.linx.safemobile.com'
[hub]
address = 'https://hub.dev.linx.safemobile.com/'
[elogs]
name = 'dev'
[api]
port = ''
host = 'dev.linx.safemobile.com/api'
host = 'node.dev.linx.safemobile.com/api'
use_secure = true
accept_untrusted_certs = true
[settings]
max_fails = 3
send_group_monitoring_before_each_call = 'true'
gps_report_interval = 1000 # The interval in which the GPS is sent
send_group_monitoring_before_each_call = 'false'
gps_report_interval = ''
gps_min_interval = 1000
gps_max_interval = 10000
gps_lat_start_point = 46.217802
gps_lng_start_point = 24.776126
delay_between_clients = 300
testing_duration = 40 # seconds
delay_between_clients = 500
testing_duration = 240 # seconds
# group 1 / 1 send / 10 listen
[[assets]]
asset_id = 63
group_id = 1
asset_id = 7516
group_id = 2561
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 64
group_id = 1
asset_id = 7517
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7518
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7519
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7520
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7521
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7522
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7523
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7524
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7525
group_id = 2561
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7526
group_id = 2561
generate_voice = false
generate_gps = true
# group 2 / 1 send / 10 listen
[[assets]]
asset_id = 7536
group_id = 2560
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 7537
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7538
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7539
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7540
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7541
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7542
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7543
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7544
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7545
group_id = 2560
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7546
group_id = 2560
generate_voice = false
generate_gps = true
# group 3 / 1 send / 10 listen
[[assets]]
asset_id = 7556
group_id = 2559
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 7557
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7558
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7559
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7560
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7561
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7562
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7563
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7564
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7565
group_id = 2559
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7566
group_id = 2559
generate_voice = false
generate_gps = true
# group 4 / 1 send / 10 listen
[[assets]]
asset_id = 7576
group_id = 2558
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 7577
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7578
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7579
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7580
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7581
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7582
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7583
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7584
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7585
group_id = 2558
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7586
group_id = 2558
generate_voice = false
generate_gps = true
# group 5 / 1 send / 10 listen
# group 6 / 1 send / 10 listen
# group 7 / 1 send / 10 listen
# group 8 / 1 send / 10 listen
# group 9 / 1 send / 10 listen
# group 10 / 1 send / 10 listen
[[assets]]
asset_id = 7715
group_id = 2552
generate_voice = true
generate_gps = true
[[assets]]
asset_id = 7714
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7713
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7712
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7711
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7710
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7709
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7708
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7707
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7706
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7705
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7704
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7703
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7702
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7701
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7700
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7699
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7698
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7697
group_id = 2552
generate_voice = false
generate_gps = true
[[assets]]
asset_id = 7696
group_id = 2552
generate_voice = false
generate_gps = true
[sounds]
tracks = ['1.mp3','2.mp3','3.mp3','4.mp3','5.mp3','6.mp3','7.mp3','8.mp3','9.mp3','10.mp3','11.mp3','12.mp3','13.mp3','14.mp3','15.mp3','16.mp3','17.mp3','18.mp3','19.mp3']

View File

@ -6,8 +6,8 @@ const Simulator = require('./src/simulator');
// Read configs.
let configs = {
mumble: config.get('mumble'),
hub: config.get('hub'),
// mumble: config.get('mumble'),
// hub: config.get('hub'),
api: config.get('api'),
assets: config.get('assets'),
sounds: config.get('sounds'),

View File

@ -21,9 +21,14 @@ class Asset {
constructor(asset, configs, token) {
this.id = asset.asset_id;
this.mumbleHost = null;
this.mumblePort = null;
this.murmurUser = null;
this.murmurPassword = null;
this.hubAddress = null;
this.group_id = asset.group_id;
this.generate_voice = asset.generate_voice;
this.generate_gps = asset.generate_gps;
this.generate_voice = asset.generate_voice || false;
this.generate_gps = asset.generate_gps || false;
this.token = token;
this.configs = configs
this._processConfigs();
@ -36,7 +41,9 @@ class Asset {
// Do async work: Init asset.
async.waterfall([
this._getConfiguration.bind(this),
this._getDataFromApi.bind(this),
this._checkGroupToJoin.bind(this),
this._connectToHub.bind(this),
this._connectToMurmur.bind(this),
this._register.bind(this),
@ -56,12 +63,72 @@ class Asset {
});
}
_processConfigs() {
_processConfigs(callback) {
let apiConfig = this.configs.api;
this.apiEndpoint = apiConfig.use_secure ? 'https' : 'http';
this.apiEndpoint += '://' + apiConfig.host + (apiConfig.port ? (':' + apiConfig.port) : '');
}
_getConfiguration(callback) {
console.log('_getConfiguration', this.id);
Request.get(
this.apiEndpoint + '/asset/' + this.id + '/account',
{
headers: {
Authorization: `Bearer ${this.token}`
}
},
(error, response, body) => {
if (!error && (response.statusCode === 200 || response.statusCode === 201)) {
const bodyObj = JSON.parse(body);
const data = bodyObj.data;
// console.log('_getConfiguration', data);
this.mumbleHost = data.configuration.mumble_address;
this.mumblePort = data.configuration.voice_rtp_port;
this.murmurUser = bodyObj.data.configuration.mumble_username;
this.murmurPassword = bodyObj.data.configuration.mumble_password;
this.hubAddress = data.configuration.hub_address;
return callback();
} else {
utils.writeLog(`ERROR | _getConfiguration | response ${JSON.stringify(response)} | body: ${JSON.stringify(body)}`)
utils.writeLog(`ERROR | _getConfiguration | Getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API | _getConfiguration`);
return callback(error);
}
}
);
}
_checkGroupToJoin(callback) {
console.log('_checkGroupToJoin', this.id);
Request.get(
this.apiEndpoint + '/assets/' + this.id + '/groups',
{
headers: {
Authorization: `Bearer ${this.token}`
}
},
(error, response, body) => {
if (!error && (response.statusCode === 200 || response.statusCode === 201)) {
const bodyObj = JSON.parse(body);
const data = bodyObj.data.map(group => group.group_id);
if (data.includes(this.group_id)) {
utils.writeLog(`Asset ${this.id} have group ${this.group_id}`);
return callback();
} else {
utils.writeLog(`ERROR Asset ${this.id} is not in group ${this.group_id}`);
return;
}
} else {
utils.writeLog(`_checkGroupToJoin | response ${JSON.stringify(response)} | body: ${JSON.stringify(body)}`)
utils.writeLog(`ERROR | _checkGroupToJoin | Getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API | _checkGroupToJoin`);
return callback(error);
}
}
);
}
_getDataFromApi(callback) {
utils.writeLog(`Get informations about asset ${this.id}`);
Request.get(
@ -74,39 +141,11 @@ class Asset {
(error, response, body) => {
if (!error && (response.statusCode === 200 || response.statusCode === 201)) {
let bodyObj = JSON.parse(body);
// Here are the asset fields.
this.assetProps = bodyObj.data;
// console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!', this.assetProps)
return this._getMumblePassword(callback);
} else {
utils.writeLog(`ERROR getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API`);
return callback(error);
}
}
);
}
_getMumblePassword(callback) {
utils.writeLog(`Get Mumble password for asset ${this.id}`);
Request.get(
this.apiEndpoint + '/asset/' + this.id + '/account',
{
headers: {
Authorization: `Bearer ${this.token}`
}
},
(error, response, body) => {
if (!error && (response.statusCode === 200 || response.statusCode === 201)) {
let bodyObj = JSON.parse(body);
// Here are the asset fields.
this.murmurPassword = bodyObj.data.configuration.mumble_password;
// console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!', this.assetProps)
return this._getGroupsFromApi(callback);
} else {
utils.writeLog(`ERROR getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API`);
utils.writeLog(`ERROR | _getDataFromApi | Getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API | _getDataFromApi`);
return callback(error);
}
}
@ -129,22 +168,33 @@ class Asset {
this.groups = bodyObj.data;
// Find what group this asset is monitoring.
this.groups.forEach((g) => {
if (g.id === this.group_id) {
this.groupSipId = g.sip_id;
this.groupName = g.name;
}
});
if (this.group_id) {
this.groups.forEach((g) => {
if (g.id === this.group_id) {
this.groupSipId = g.sip_id;
this.groupName = g.name;
}
});
} else {
this.groups.forEach((g) => {
if (g.is_talk_group && g.monitoring.indexOf(this.id) != -1) {
this.groupSipId = g.sip_id;
this.groupName = g.name;
this.group_id = g.id;
}
})
}
// if (!this.groupId) {
// return callback('No talk group assigned to ' + this.id);
// }
if (!this.group_id) {
utils.writeLog(`Group/Default voice group not found for asset: ${this.group_id}`);
}
utils.writeLog(`Group: ${this.group_id} found for asset: ${this.id}`);
utils.writeLog(`Informations about asset ${this.id} received | groupId: ${this.group_id} | groupName: ${this.groupName}`);
return callback();
} else {
utils.writeLog(`Error getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API`);
utils.writeLog(`ERROR | _getGroupsFromApi | Getting informations about asset ${this.id}`, error);
utils.writeErrorLog(`ERROR_API | _getGroupsFromApi`);
return callback(error);
}
}
@ -152,10 +202,8 @@ class Asset {
}
_connectToHub(callback) {
let hubAddress = this.configs.hub.address;
let options = {rejectUnauthorized: false, secure: true};
let hub = io(hubAddress, options);
let hub = io(this.hubAddress, options);
this.hub = hub;
// Disconnect event
@ -165,12 +213,12 @@ class Asset {
hub.on('connect_timeout', () => {
utils.writeLog(`Asset ${this.id} connect_timeout from HUB`);
utils.writeErrorLog(`ERROR_HUB`);
utils.writeErrorLog(`ERROR_HUB | _connectToHub`);
});
hub.on('connect_error', () => {
utils.writeLog(`Asset ${this.id} connect_error from HUB`);
utils.writeErrorLog(`ERROR_HUB`);
utils.writeErrorLog(`ERROR_HUB | _connectToHub`);
});
hub.once('connect', () => {
@ -210,19 +258,24 @@ class Asset {
}
_connectToMurmur(callback) {
console.log(`Asset ${this.id} connecting to Murmur`);
this.configs.murmurPassword = this.murmurPassword;
if (!this.group_id) { return callback(); }
this.mumble = new Mumble(this.id, this.configs, (err) => {
console.log(`Asset ${this.id} connecting to Murmur`);
const murmurConnectionDetails = {
mumbleHost: this.mumbleHost,
mumblePort: this.mumblePort,
murmurUser: this.murmurUser,
murmurPassword: this.murmurPassword
};
this.mumble = new Mumble(this.id, murmurConnectionDetails, (err) => {
if (err) {
utils.writeLog(`Asset ${this.id} Murmur connection error`, err);
utils.writeErrorLog(`ERROR_MURMUR`);
utils.writeLog(`ERROR | _connectToMurmur | Asset ${this.id} Murmur connection error`, err);
utils.writeErrorLog(`ERROR_MURMUR | _connectToMurmur`);
return callback(err);
} else {
// return callback();
setTimeout(()=> {
return callback();
}, 400);
}, 500);
}
});
}
@ -241,13 +294,9 @@ class Asset {
utils.writeLog(`Asset ${this.id} audio registered`);
return callback();
} else {
console.log('_register--------------------')
console.log('error---', error)
// console.log('response---', response)
console.log('body---', body)
// utils.writeLog(`Asset ${this.id} audio registered error`, error);
// utils.writeErrorLog(`ERROR_API`);
// return callback(error);
utils.writeLog(`ERROR | _register | Asset ${this.id} audio registered error`, error);
utils.writeErrorLog(`ERROR_AUDIO | _register`);
return callback(error);
}
}
);
@ -286,13 +335,9 @@ class Asset {
if (callback) return callback('Cannot send group-monitoring: Hub not connected');
}
} else {
console.log('_moveToChannel--------------------')
console.log('error---', error)
// console.log('response---', response)
console.log('body---', body)
// utils.writeLog(`Asset ${this.id} audio enter group error`, error);
// utils.writeErrorLog(`ERROR_API`);
// return callback(error);
utils.writeLog(`ERROR | _moveToChannel | Asset ${this.id} audio enter group error`, error);
utils.writeErrorLog(`ERROR_AUDIO | _moveToChannel`);
return callback(error);
}
}
);
@ -343,8 +388,8 @@ class Asset {
console.log(chalk.yellow(`[RECORDER] for asset ${this.id} not found`));
}
} else {
utils.writeLog(`Error getting record for asset ${this.id} | ${error}`);
utils.writeErrorLog(`ERROR_RECORDER`);
utils.writeLog(`ERROR | _getRecord | Error getting record for asset ${this.id} | ${error}`);
utils.writeErrorLog(`ERROR_RECORDER | _getRecord`);
}
let assetIds = configs.assets.ids;
@ -415,7 +460,7 @@ class Asset {
this._sendPttRelease();
const now = +new Date();
if(this.endTime > now) {
this._makePtt();
this._makePtt(callback);
} else {
setTimeout(() => {
@ -492,6 +537,15 @@ class Asset {
if (hub && hub.connected) {
let lat = this.configs.settings.gps_lat_start_point;
let lng = this.configs.settings.gps_lng_start_point;
const max = this.configs.settings.gps_max_interval;
const min = this.configs.settings.gps_min_interval;
let interval = null;
if (!this.configs.settings.gps_report_interval) {
interval = Math.floor(Math.random() * (max - min + 1) + min);
} else {
interval = this.configs.settings.gps_report_interval;
}
setInterval(() => {
const now = +new Date();
@ -522,7 +576,7 @@ class Asset {
});
}, 11000);
}
}, this.configs.settings.gps_report_interval);
}, interval);
}
}

View File

@ -11,12 +11,19 @@ const OpusEncoder = require('node-opus').OpusEncoder;
class Mumble {
constructor(id, configs, connectedCallback) {
constructor(id, murmurConnectionDetails, connectedCallback) {
this.id = id;
this.configs = configs;
let mumble = configs.mumble;
this.mumbleHost = murmurConnectionDetails.mumbleHost;
this.mumblePort = murmurConnectionDetails.mumblePort;
this.murmurUser = murmurConnectionDetails.murmurUser;
this.murmurPassword = murmurConnectionDetails.murmurPassword;
// console.log('mumbleHost', this.mumbleHost)
// console.log('mumblePort', this.mumblePort)
// console.log('murmurUser', this.murmurUser)
// console.log('murmurPassword', this.murmurPassword)
this._createCertificatesForUser(id, () => {
this._makeMumbleConnection(id, mumble.port, mumble.host, id, this.configs.murmurPassword, connectedCallback);
this._makeMumbleConnection(id, this.mumblePort, this.mumbleHost, id, this.murmurPassword, connectedCallback);
})
}

View File

@ -36,19 +36,11 @@ class Simulator {
_start() {
const settings = this.configs.settings;
// this.assetIds.forEach((id, i) => {
this.assets.forEach((asset, i) => {
let delay_between_clients = 500;
if(settings.hasOwnProperty('delay_between_clients')) {
delay_between_clients = parseInt(settings.delay_between_clients, 10);
}
console.log('asset_id', asset.asset_id, i * delay_between_clients+'ms')
delay_between_clients = this._getRandomInt(delay_between_clients);
console.log('asset_id', asset.asset_id, i * settings.delay_between_clients + 'ms');
setTimeout(() => {
new Asset(asset, this.configs, this.token);
// console.log('id, this.configs, this.token', id, this.configs, this.token)
}, i * delay_between_clients);
}, i * settings.delay_between_clients);
})
}