1 /* Copyright (c) 2019 AT&T Intellectual Property. #
\r
3 # Licensed under the Apache License, Version 2.0 (the "License"); #
\r
4 # you may not use this file except in compliance with the License. #
\r
5 # You may obtain a copy of the License at #
\r
7 # http://www.apache.org/licenses/LICENSE-2.0 #
\r
9 # Unless required by applicable law or agreed to in writing, software #
\r
10 # distributed under the License is distributed on an "AS IS" BASIS, #
\r
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
\r
12 # See the License for the specific language governing permissions and #
\r
13 # limitations under the License. #
\r
14 ##############################################################################*/
\r
17 const logger = require('../../lib/logger');
\r
18 const utils = require('../../lib/otf-util');
\r
19 const ObjectId = require('mongoose').Types.ObjectId;
\r
21 class TestSchedule {
\r
22 constructor (testInstanceId, testInstanceStartDate, testInstanceExecFreqInSeconds, testInstanceEndDate,
\r
23 async, asyncTopic, asyncMode, executorId) {
\r
24 this.testInstanceId = testInstanceId;
\r
25 this.testInstanceStartDate = testInstanceStartDate;
\r
26 this.testInstanceExecFreqInSeconds = testInstanceExecFreqInSeconds;
\r
27 this.testInstanceEndDate = testInstanceEndDate;
\r
29 this.asyncTopic = asyncTopic;
\r
30 this.asyncMode = asyncMode;
\r
31 this.executorId = executorId;
\r
34 get testInstanceId () {
\r
35 return this._testInstanceId;
\r
38 set testInstanceId (value) {
\r
40 throw 'testInstanceId is required.';
\r
43 if (!utils.isValidObjectId(value)) {
\r
44 throw 'testInstanceId must be a valid ObjectId';
\r
47 this._testInstanceId = new ObjectId(value);
\r
50 get testInstanceStartDate () {
\r
51 return this._testInstanceStartDate;
\r
54 set testInstanceStartDate (value) {
\r
55 // Accepts type Date, and the "now" keyword recognized by human interval (integrated with Agenda)
\r
56 if (value !== 'now') {
\r
57 let parsedDate = Date.parse(value);
\r
59 if (isNaN((parsedDate))) {
\r
60 throw 'testInstanceStartDate must be a valid date, or must be ' / 'now' / '.';
\r
64 this._testInstanceStartDate = value;
\r
67 get testInstanceExecFreqInSeconds () {
\r
68 return this._testInstanceExecFreqInSeconds;
\r
71 set testInstanceExecFreqInSeconds (value) {
\r
73 if (typeof value !== 'number') {
\r
74 throw 'testInstanceExecFreqInSeconds must be a number.';
\r
78 throw 'testInstanceExecFreqInSeconds must be greater than or equal to 30.';
\r
82 this._testInstanceExecFreqInSeconds = value;
\r
85 get testInstanceEndDate () {
\r
86 return this._testInstanceEndDate;
\r
89 set testInstanceEndDate (value) {
\r
90 // Allow a null end date
\r
92 let parsedDate = Date.parse(value);
\r
94 if (isNaN((parsedDate))) {
\r
95 throw 'testInstanceEndDate must be a valid date.';
\r
99 this._testInstanceEndDate = value;
\r
103 return this._async;
\r
106 set async (value) {
\r
107 this._async = value;
\r
110 get asyncTopic () {
\r
111 return this._asynTopic;
\r
114 set asyncTopic (value) {
\r
115 this._asynTopic = value;
\r
119 return this._asyncMode;
\r
122 set asyncMode (value) {
\r
123 this._asyncMode = value;
\r
126 get executorId () {
\r
127 return this._executorId;
\r
130 set executorId (value) {
\r
132 throw 'executorId is required.';
\r
135 if (!utils.isValidObjectId(value)) {
\r
136 throw 'executorId must be a valid ObjectId.';
\r
139 this._executorId = new ObjectId(value);
\r
144 'testInstanceId: ' + this._testInstanceId + '\n' +
\r
145 'testInstanceStartDate: ' + this._testInstanceStartDate + '\n' +
\r
146 'testInstanceExecFreqInSeconds: ' + this._testInstanceExecFreqInSeconds + '\n' +
\r
147 'testInstanceStartDate: ' + this._testInstanceStartDate + '\n' +
\r
148 'async: ' + this._async + '\n' +
\r
149 'asnycTopic: ' + this._asyncTopic + '\n' +
\r
150 'executorId: ' + this._executorId);
\r
154 module.exports = TestSchedule;
\r