X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=it%2Fotf.git;a=blobdiff_plain;f=otf-frontend%2Fserver%2Fsrc%2Fagenda%2Fagenda.js;fp=otf-frontend%2Fserver%2Fsrc%2Fagenda%2Fagenda.js;h=5094b6b0b2a645e0ebb35ea1cb7b442ee030b375;hp=0000000000000000000000000000000000000000;hb=14f6f95c84a4a1fa8774190db4a03fd0214ec55f;hpb=f49bd1efeaaddd4891c1f329b18d8cfb28b3e75b diff --git a/otf-frontend/server/src/agenda/agenda.js b/otf-frontend/server/src/agenda/agenda.js new file mode 100644 index 0000000..5094b6b --- /dev/null +++ b/otf-frontend/server/src/agenda/agenda.js @@ -0,0 +1,51 @@ +/* Copyright (c) 2019 AT&T Intellectual Property. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +##############################################################################*/ + + +const logger = require('../lib/logger'); +const Agenda = require('agenda'); +const mongoData = require('config').mongo; +const jobTypes = ['test-execution-job']; +const agenda = new Agenda({ + db: { + address: 'mongodb://' + mongoData.username + ':' + mongoData.password + '@' + mongoData.baseUrl + mongoData.dbOtf + '?replicaSet=' + mongoData.replicaSet, + collection: 'agenda' + } +}); + +module.exports = { + agenda: agenda, + initializeAgenda: function () { + // Load all job types + jobTypes.forEach(type => { + require('./jobs/' + type)(agenda); + }); + + // Wait for the db connection to be established before starting agenda (sync). + agenda.on('ready', function () { + logger.debug('Agenda successfully established a connection to MongoDB.'); + agenda.start(); + // agenda.processEvery('0.001 seconds'); + }); + + async function graceful () { + await agenda.stop(); + process.exit(0); + } + + process.on('SIGTERM', graceful); + process.on('SIGINT', graceful); + } +};