--- /dev/null
+/* Copyright (c) 2019 AT&T Intellectual Property. #\r
+# #\r
+# Licensed under the Apache License, Version 2.0 (the "License"); #\r
+# you may not use this file except in compliance with the License. #\r
+# You may obtain a copy of the License at #\r
+# #\r
+# http://www.apache.org/licenses/LICENSE-2.0 #\r
+# #\r
+# Unless required by applicable law or agreed to in writing, software #\r
+# distributed under the License is distributed on an "AS IS" BASIS, #\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #\r
+# See the License for the specific language governing permissions and #\r
+# limitations under the License. #\r
+##############################################################################*/\r
+\r
+\r
+const logger = require('../lib/logger');\r
+const Agenda = require('agenda');\r
+const mongoData = require('config').mongo;\r
+const jobTypes = ['test-execution-job'];\r
+const agenda = new Agenda({\r
+ db: {\r
+ address: 'mongodb://' + mongoData.username + ':' + mongoData.password + '@' + mongoData.baseUrl + mongoData.dbOtf + '?replicaSet=' + mongoData.replicaSet,\r
+ collection: 'agenda'\r
+ }\r
+});\r
+\r
+module.exports = {\r
+ agenda: agenda,\r
+ initializeAgenda: function () {\r
+ // Load all job types\r
+ jobTypes.forEach(type => {\r
+ require('./jobs/' + type)(agenda);\r
+ });\r
+\r
+ // Wait for the db connection to be established before starting agenda (sync).\r
+ agenda.on('ready', function () {\r
+ logger.debug('Agenda successfully established a connection to MongoDB.');\r
+ agenda.start();\r
+ // agenda.processEvery('0.001 seconds');\r
+ });\r
+\r
+ async function graceful () {\r
+ await agenda.stop();\r
+ process.exit(0);\r
+ }\r
+\r
+ process.on('SIGTERM', graceful);\r
+ process.on('SIGINT', graceful);\r
+ }\r
+};\r