Skip to content

Package: JobScheduleServiceSteps

JobScheduleServiceSteps

nameinstructionbranchcomplexitylinemethod
JobScheduleServiceSteps(StepData, DBHelper)
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
aRegularTriggerCreatorWithTheName(String)
M: 58 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
aRegularTriggerCreatorWithTheNameAndFollowingProperties(String, List)
M: 55 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
aTriggerCreatorWithoutAName()
M: 25 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
afterScenario()
M: 26 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
beforeScenario(Scenario)
M: 57 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 13 C: 0
0%
M: 1 C: 0
0%
createTriggerWithDateProperties()
M: 64 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 17 C: 0
0%
M: 1 C: 0
0%
iCreateANewTriggerEntityFromTheExistingCreator()
M: 48 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 13 C: 0
0%
M: 1 C: 0
0%
iDeleteThePreviouslyCreatedTrigger()
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
iDeleteTriggerWithName(String)
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
iFindTriggerPropertiesWithName(String)
M: 40 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
iSearchForTheTriggerInTheDatabase()
M: 31 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 9 C: 0
0%
M: 1 C: 0
0%
iSearchForTheTriggerWithNameInTheDatabase(String)
M: 40 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
iSetCronExpressionTo(String)
M: 19 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
iSetRetryIntervalTo(long)
M: 20 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
iSetRetryIntervalToNull()
M: 19 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
iTryToCreateSchedulerWithName(String)
M: 52 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 14 C: 0
0%
M: 1 C: 0
0%
iTryToDeleteTrigger()
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
iTryToEditEndDateTo(String, String)
M: 33 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
iTryToEditSchedulerPropertyTo(String)
M: 50 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 12 C: 0
0%
M: 1 C: 0
0%
iTryToEditStartDateTo(String, String)
M: 33 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
iTryToEditTriggerName(String)
M: 28 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 9 C: 0
0%
M: 1 C: 0
0%
setDateAndTimeValue(String, String)
M: 68 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 16 C: 0
0%
M: 1 C: 0
0%
setTodayAsDateValue(String)
M: 35 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 9 C: 0
0%
M: 1 C: 0
0%
setTodayAsTriggerStartDate(String)
M: 17 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
setTomorrowAsDateValue(String)
M: 39 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
setTomorrowAsTriggerEndDate(String)
M: 17 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
setTomorrowAsTriggerStartDate(String)
M: 17 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
setTriggerEndDate(String, String)
M: 18 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
setTriggerStartDate(String, String)
M: 18 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
setWithinSecondsAsTriggerEndDate(String)
M: 25 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
static {...}
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
thereIsNoTriggerWithTheNameInTheDatabase(String)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2020, 2022 Eurotech and/or its affiliates and others
3: *
4: * This program and the accompanying materials are made
5: * available under the terms of the Eclipse Public License 2.0
6: * which is available at https://www.eclipse.org/legal/epl-2.0/
7: *
8: * SPDX-License-Identifier: EPL-2.0
9: *
10: * Contributors:
11: * Eurotech - initial API and implementation
12: *******************************************************************************/
13: package org.eclipse.kapua.service.scheduler.steps;
14:
15: import cucumber.api.Scenario;
16: import cucumber.api.java.After;
17: import cucumber.api.java.Before;
18: import cucumber.api.java.en.And;
19: import cucumber.api.java.en.Then;
20: import cucumber.runtime.java.guice.ScenarioScoped;
21: import org.apache.shiro.SecurityUtils;
22: import org.eclipse.kapua.KapuaException;
23: import org.eclipse.kapua.commons.security.KapuaSecurityUtils;
24: import org.eclipse.kapua.commons.security.KapuaSession;
25: import org.eclipse.kapua.commons.util.xml.XmlUtil;
26: import org.eclipse.kapua.locator.KapuaLocator;
27: import org.eclipse.kapua.model.id.KapuaId;
28: import org.eclipse.kapua.model.query.predicate.AttributePredicate;
29: import org.eclipse.kapua.qa.common.DBHelper;
30: import org.eclipse.kapua.qa.common.StepData;
31: import org.eclipse.kapua.qa.common.TestBase;
32: import org.eclipse.kapua.qa.common.TestJAXBContextProvider;
33: import org.eclipse.kapua.qa.common.cucumber.CucTriggerProperty;
34: import org.eclipse.kapua.service.scheduler.trigger.Trigger;
35: import org.eclipse.kapua.service.scheduler.trigger.TriggerAttributes;
36: import org.eclipse.kapua.service.scheduler.trigger.TriggerCreator;
37: import org.eclipse.kapua.service.scheduler.trigger.TriggerFactory;
38: import org.eclipse.kapua.service.scheduler.trigger.TriggerListResult;
39: import org.eclipse.kapua.service.scheduler.trigger.TriggerQuery;
40: import org.eclipse.kapua.service.scheduler.trigger.TriggerService;
41: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerDefinition;
42: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerDefinitionAttributes;
43: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerDefinitionFactory;
44: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerDefinitionQuery;
45: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerDefinitionService;
46: import org.eclipse.kapua.service.scheduler.trigger.definition.TriggerProperty;
47: import org.slf4j.Logger;
48: import org.slf4j.LoggerFactory;
49:
50: import javax.inject.Inject;
51: import java.text.ParseException;
52: import java.text.SimpleDateFormat;
53: import java.util.ArrayList;
54: import java.util.Calendar;
55: import java.util.Date;
56: import java.util.List;
57:
58: @ScenarioScoped
59: public class JobScheduleServiceSteps extends TestBase {
60:
61: private TriggerFactory triggerFactory;
62: private TriggerService triggerService;
63: private TriggerDefinitionFactory triggerDefinitionFactory;
64: private TriggerDefinitionService triggerDefinitionService;
65:
66: private static final String TRIGGER_DEFINITION_ID = "TriggerDefinitionId";
67: private static final String TRIGGER = "Trigger";
68: private static final String TRIGGER_CREATOR = "TriggerCreator";
69: private static final String CURRENT_TRIGGER_ID = "CurrentTriggerId";
70: private static final String UPDATED_TRIGGER = "UpdatedTrigger";
71: private static final String TRIGGER_START_DATE = "TriggerStartDate";
72: private static final String TRIGGER_END_DATE = "TriggerEndDate";
73:
74: // ****************************************************************************************
75: // * Implementation of Gherkin steps used in JobService.feature scenarios. *
76: // * *
77: // * MockedLocator is used for Location Service. Mockito is used to mock other *
78: // * services that the Account services dependent on. Dependent services are: *
79: // * - Authorization Service *
80: // ****************************************************************************************
81:
82: private static final Logger LOGGER = LoggerFactory.getLogger(JobScheduleServiceSteps.class);
83: private static final String KAPUA_ID_CLASS_NAME = "org.eclipse.kapua.model.id.KapuaId";
84:
85: // Default constructor
86: @Inject
87: public JobScheduleServiceSteps(StepData stepData, DBHelper dbHelper) {
88:
89: this.stepData = stepData;
90: this.database = dbHelper;
91: }
92:
93: // ************************************************************************************
94: // ************************************************************************************
95: // * Definition of Cucumber scenario steps *
96: // ************************************************************************************
97: // ************************************************************************************
98:
99: // ************************************************************************************
100: // * Setup and tear-down steps *
101: // ************************************************************************************
102:
103: @Before
104: public void beforeScenario(Scenario scenario) {
105:
106: this.scenario = scenario;
107: database.setup();
108: stepData.clear();
109:
110: locator = KapuaLocator.getInstance();
111:
112: triggerFactory = locator.getFactory(TriggerFactory.class);
113: triggerService = locator.getService(TriggerService.class);
114: triggerDefinitionFactory = locator.getFactory(TriggerDefinitionFactory.class);
115: triggerDefinitionService = locator.getService(TriggerDefinitionService.class);
116:
117:• if (isUnitTest()) {
118: // Create KapuaSession using KapuaSecurtiyUtils and kapua-sys user as logged in user.
119: // All operations on database are performed using system user.
120: // Only for unit tests. Integration tests assume that a real logon is performed.
121: KapuaSession kapuaSession = new KapuaSession(null, SYS_SCOPE_ID, SYS_USER_ID);
122: KapuaSecurityUtils.setSession(kapuaSession);
123: }
124:
125: // Setup JAXB context
126: XmlUtil.setContextProvider(new TestJAXBContextProvider());
127: }
128:
129: @After
130: public void afterScenario() {
131:
132: // ************************************************************************************
133: // * Clean up the database *
134: // ************************************************************************************
135: try {
136: LOGGER.info("Logging out in cleanup");
137:• if (isIntegrationTest()) {
138: database.deleteAll();
139: SecurityUtils.getSubject().logout();
140: } else {
141: database.dropAll();
142: database.close();
143: }
144: KapuaSecurityUtils.clearSession();
145: } catch (Exception e) {
146: LOGGER.error("Failed to log out in @After", e);
147: }
148: }
149:
150: // ************************************************************************************
151: // * The Cucumber test steps *
152: // ************************************************************************************
153:
154: @And("^I try to create scheduler with name \"([^\"]*)\"$")
155: public void iTryToCreateSchedulerWithName(String schedulerName) throws Exception {
156: TriggerCreator triggerCreator = triggerFactory.newCreator(getCurrentScopeId());
157: KapuaId triggerDefinitionId = (KapuaId) stepData.get(TRIGGER_DEFINITION_ID);
158: triggerCreator.setName(schedulerName);
159: triggerCreator.setStartsOn(new Date());
160: triggerCreator.setTriggerDefinitionId(triggerDefinitionId);
161: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
162:
163: try {
164: primeException();
165: stepData.remove(TRIGGER);
166: Trigger trigger = triggerService.create(triggerCreator);
167: stepData.put(TRIGGER, trigger);
168: } catch (KapuaException ex) {
169: verifyException(ex);
170: }
171: }
172:
173: @And("^I find scheduler properties with name \"([^\"]*)\"$")
174: public void iFindTriggerPropertiesWithName(String triggerDefinitionName) throws Exception {
175: primeException();
176:
177: try {
178: TriggerDefinitionQuery triggerDefinitionQuery = triggerDefinitionFactory.newQuery(getCurrentScopeId());
179: triggerDefinitionQuery.setPredicate(triggerDefinitionQuery.attributePredicate(TriggerDefinitionAttributes.NAME, triggerDefinitionName, AttributePredicate.Operator.EQUAL));
180: TriggerDefinition triggerDefinition = triggerDefinitionService.query(triggerDefinitionQuery).getFirstItem();
181:
182: stepData.put("TriggerDefinition", triggerDefinition);
183: stepData.put(TRIGGER_DEFINITION_ID, triggerDefinition.getId());
184: } catch (KapuaException ex) {
185: verifyException(ex);
186: }
187: }
188:
189: @And("^A regular trigger creator with the name \"([^\"]*)\" is created$")
190: public void aRegularTriggerCreatorWithTheName(String triggerName) {
191: TriggerCreator triggerCreator = triggerFactory.newCreator(getCurrentScopeId());
192: KapuaId currentTriggerDefId = (KapuaId) stepData.get(TRIGGER_DEFINITION_ID);
193: KapuaId jobId = (KapuaId) stepData.get("CurrentJobId");
194:
195: triggerCreator.setName(triggerName);
196: triggerCreator.setTriggerDefinitionId(currentTriggerDefId);
197: triggerCreator.getTriggerProperties().add(triggerDefinitionFactory.newTriggerProperty("jobId", KAPUA_ID_CLASS_NAME, jobId.toCompactId()));
198: triggerCreator.getTriggerProperties().add(triggerDefinitionFactory.newTriggerProperty("scopeId", KAPUA_ID_CLASS_NAME, getCurrentScopeId().toCompactId()));
199: stepData.remove(TRIGGER_CREATOR);
200: stepData.put(TRIGGER_CREATOR, triggerCreator);
201: }
202:
203: @And("^A trigger creator without a name")
204: public void aTriggerCreatorWithoutAName() {
205: TriggerCreator triggerCreator = triggerFactory.newCreator(getCurrentScopeId());
206: KapuaId currentTriggerDefId = (KapuaId) stepData.get(TRIGGER_DEFINITION_ID);
207:
208: triggerCreator.setTriggerDefinitionId(currentTriggerDefId);
209: triggerCreator.setName(null);
210:
211: stepData.put(TRIGGER_CREATOR, triggerCreator);
212: }
213:
214: @And("^A regular trigger creator with the name \"([^\"]*)\" and following properties$")
215: public void aRegularTriggerCreatorWithTheNameAndFollowingProperties(String triggerName, List<CucTriggerProperty> list) {
216: TriggerCreator triggerCreator = triggerFactory.newCreator(getCurrentScopeId());
217: KapuaId currentTriggerDefId = (KapuaId) stepData.get(TRIGGER_DEFINITION_ID);
218:
219: triggerCreator.setName(triggerName);
220: triggerCreator.setTriggerDefinitionId(currentTriggerDefId);
221:
222: List<TriggerProperty> tmpPropList = new ArrayList<>();
223:• for (CucTriggerProperty prop : list) {
224: tmpPropList.add(triggerFactory.newTriggerProperty(prop.getName(), prop.getType(), prop.getValue()));
225: }
226: triggerCreator.setTriggerProperties(tmpPropList);
227:
228: stepData.put(TRIGGER_CREATOR, triggerCreator);
229: }
230:
231: @And("^I try to create a new trigger entity from the existing creator$")
232: public void iCreateANewTriggerEntityFromTheExistingCreator() throws Exception {
233: TriggerCreator triggerCreator = (TriggerCreator) stepData.get(TRIGGER_CREATOR);
234: triggerCreator.setScopeId(getCurrentScopeId());
235: triggerCreator.setStartsOn(new Date());
236:
237: primeException();
238: try {
239: stepData.remove(TRIGGER);
240: stepData.remove(CURRENT_TRIGGER_ID);
241: Trigger trigger = triggerService.create(triggerCreator);
242: stepData.put(TRIGGER, trigger);
243: stepData.put(CURRENT_TRIGGER_ID, trigger.getId());
244: } catch (Exception ex) {
245: verifyException(ex);
246: }
247: }
248:
249: @And("^I try to edit trigger name \"([^\"]*)\"$")
250: public void iTryToEditTriggerName(String newTriggerName) throws Exception {
251: try {
252: Trigger trigger = (Trigger) stepData.get(TRIGGER);
253: trigger.setName(newTriggerName);
254: primeException();
255: Trigger updatedTrigger = triggerService.update(trigger);
256: stepData.put(UPDATED_TRIGGER, updatedTrigger);
257: } catch (Exception ex) {
258: verifyException(ex);
259: }
260: }
261:
262: @And("^I try to delete last created trigger$")
263: public void iTryToDeleteTrigger() throws Exception {
264: try {
265: Trigger trigger = (Trigger) stepData.get(TRIGGER);
266: primeException();
267: triggerService.delete(getCurrentScopeId(), trigger.getId());
268: } catch (Exception ex) {
269: verifyException(ex);
270: }
271: }
272:
273: @And("^I create a new trigger from the existing creator with previously defined date properties$")
274: public void createTriggerWithDateProperties() throws Exception {
275: TriggerCreator triggerCreator = (TriggerCreator) stepData.get(TRIGGER_CREATOR);
276: Date startDate = (Date) stepData.get(TRIGGER_START_DATE);
277: Date endDate = (Date) stepData.get(TRIGGER_END_DATE);
278: triggerCreator.setScopeId(getCurrentScopeId());
279: triggerCreator.setStartsOn(startDate);
280: triggerCreator.setEndsOn(endDate);
281: primeException();
282: try {
283: stepData.remove(TRIGGER);
284: stepData.remove(CURRENT_TRIGGER_ID);
285: Trigger trigger = triggerService.create(triggerCreator);
286: trigger.getTriggerProperties();
287: stepData.put(TRIGGER, trigger);
288: stepData.put(CURRENT_TRIGGER_ID, trigger.getId());
289: } catch (Exception ex) {
290: verifyException(ex);
291: }
292: }
293:
294: @And("^The trigger is set to start on (.*) at (.*).")
295: public void setTriggerStartDate(String startDateStr, String startTimeStr) throws Exception {
296: try {
297: primeException();
298: Date startDate = setDateAndTimeValue(startDateStr, startTimeStr);
299: stepData.put(TRIGGER_START_DATE, startDate);
300: } catch (ParseException ex) {
301: verifyException(ex);
302: }
303: }
304:
305: @And("^The trigger is set to start today at (.*).")
306: public void setTodayAsTriggerStartDate(String startTimeStr) throws Exception {
307: try {
308: primeException();
309: Date startDate = setTodayAsDateValue(startTimeStr);
310: stepData.put(TRIGGER_START_DATE, startDate);
311: } catch (Exception ex) {
312: verifyException(ex);
313: }
314: }
315:
316: @And("^The trigger is set to start tomorrow at (.*).")
317: public void setTomorrowAsTriggerStartDate(String startTimeStr) throws Exception {
318: try {
319: primeException();
320: Date startDate = setTomorrowAsDateValue(startTimeStr);
321: stepData.put(TRIGGER_START_DATE, startDate);
322: } catch (Exception ex) {
323: verifyException(ex);
324: }
325: }
326:
327: @And("^The trigger is set to end on (.*) at (.*).")
328: public void setTriggerEndDate(String endDateStr, String endTimeStr) throws Exception {
329: try {
330: primeException();
331: Date endDate = setDateAndTimeValue(endDateStr, endTimeStr);
332: stepData.put(TRIGGER_END_DATE, endDate);
333: } catch (ParseException ex) {
334: verifyException(ex);
335: }
336: }
337:
338: @And("^The trigger is set to end in (.*) seconds.")
339: public void setWithinSecondsAsTriggerEndDate(String secondsString) throws Exception {
340: try {
341: primeException();
342: int seconds = Integer.parseInt(secondsString);
343:
344: Calendar calendar = Calendar.getInstance();
345: calendar.add(Calendar.SECOND, seconds);
346: Date endDate = calendar.getTime();
347: stepData.put(TRIGGER_END_DATE, endDate);
348: } catch (Exception ex) {
349: verifyException(ex);
350: }
351: }
352:
353: @And("^The trigger is set to end tomorrow at (.*).")
354: public void setTomorrowAsTriggerEndDate(String startTimeStr) throws Exception {
355: try {
356: primeException();
357: Date endDate = setTomorrowAsDateValue(startTimeStr);
358: stepData.put(TRIGGER_END_DATE, endDate);
359: } catch (Exception ex) {
360: verifyException(ex);
361: }
362: }
363:
364: private Date setDateAndTimeValue(String dateStr, String timeStr) throws ParseException {
365: String[] dateComponents = dateStr.split("-");
366: int day = Integer.parseInt(dateComponents[0]);
367: int month = Integer.parseInt(dateComponents[1]);
368: int year = Integer.parseInt(dateComponents[2]);
369:
370: String[] timeComponents = timeStr.split(":");
371: int hour = Integer.parseInt(timeComponents[0]);
372: int minutes = Integer.parseInt(timeComponents[1]);
373:
374: Calendar calendar = Calendar.getInstance();
375: calendar.set(Calendar.DAY_OF_MONTH, day);
376: calendar.set(Calendar.MONTH, month - 1);
377: calendar.set(Calendar.YEAR, year);
378: calendar.set(Calendar.HOUR_OF_DAY, hour);
379: calendar.set(Calendar.MINUTE, minutes);
380: calendar.set(Calendar.SECOND, 0);
381: calendar.set(Calendar.MILLISECOND, 0);
382: return calendar.getTime();
383: }
384:
385: private Date setTodayAsDateValue(String timeString) {
386: String[] timeComponents = timeString.split(":");
387: int hour = Integer.parseInt(timeComponents[0]);
388: int minutes = Integer.parseInt(timeComponents[1]);
389:
390: Calendar calendar = Calendar.getInstance();
391: calendar.set(Calendar.HOUR_OF_DAY, hour);
392: calendar.set(Calendar.MINUTE, minutes);
393: calendar.set(Calendar.SECOND, 0);
394: calendar.set(Calendar.MILLISECOND, 0);
395: return calendar.getTime();
396: }
397:
398: private Date setTomorrowAsDateValue(String timeStr) {
399: String[] timeComponents = timeStr.split(":");
400: int hour = Integer.parseInt(timeComponents[0]);
401: int minutes = Integer.parseInt(timeComponents[1]);
402:
403: Calendar calendar = Calendar.getInstance();
404: calendar.add(Calendar.DATE, 1);
405: calendar.set(Calendar.HOUR_OF_DAY, hour);
406: calendar.set(Calendar.MINUTE, minutes);
407: calendar.set(Calendar.SECOND, 0);
408: calendar.set(Calendar.MILLISECOND, 0);
409: return calendar.getTime();
410: }
411:
412: @And("^I set retry interval to (\\d+)$")
413: public void iSetRetryIntervalTo(long retryInterval) {
414: TriggerCreator triggerCreator = (TriggerCreator) stepData.get(TRIGGER_CREATOR);
415: triggerCreator.setRetryInterval(retryInterval);
416: stepData.remove(TRIGGER_CREATOR);
417: stepData.put(TRIGGER_CREATOR, triggerCreator);
418: }
419:
420: @Then("^I set retry interval to null$")
421: public void iSetRetryIntervalToNull() {
422: TriggerCreator triggerCreator = (TriggerCreator) stepData.get(TRIGGER_CREATOR);
423: triggerCreator.setRetryInterval(null);
424: stepData.remove(TRIGGER_CREATOR);
425: stepData.put(TRIGGER_CREATOR, triggerCreator);
426: }
427:
428: @Then("^I set cron expression to \"([^\"]*)\"$")
429: public void iSetCronExpressionTo(String cron) throws Throwable {
430: TriggerCreator triggerCreator = (TriggerCreator) stepData.get(TRIGGER_CREATOR);
431: triggerCreator.setCronScheduling(cron);
432: stepData.remove(TRIGGER_CREATOR);
433: stepData.put(TRIGGER_CREATOR, triggerCreator);
434: }
435:
436: @Then("^I delete the previously created trigger$")
437: public void iDeleteThePreviouslyCreatedTrigger() throws Exception {
438: Trigger trigger = (Trigger) stepData.get(TRIGGER);
439: primeException();
440: try {
441: triggerService.delete(trigger.getScopeId(), trigger.getId());
442: } catch (KapuaException ex) {
443: verifyException(ex);
444: }
445: }
446:
447: @And("^I search for the trigger in the database$")
448: public void iSearchForTheTriggerInTheDatabase() throws Exception {
449: KapuaId currentTriggerID = (KapuaId) stepData.get(CURRENT_TRIGGER_ID);
450: primeException();
451: try {
452: stepData.remove(TRIGGER);
453: Trigger trigger = triggerService.find(getCurrentScopeId(), currentTriggerID);
454: stepData.put(TRIGGER, trigger);
455: } catch (Exception ex) {
456: verifyException(ex);
457: }
458: }
459:
460: @Then("^I delete trigger with name \"([^\"]*)\"$")
461: public void iDeleteTriggerWithName(String arg0) throws Throwable {
462: Trigger trigger = (Trigger) stepData.get(TRIGGER);
463: primeException();
464: try {
465: triggerService.delete(trigger.getScopeId(), trigger.getId());
466: } catch (KapuaException ex) {
467: verifyException(ex);
468: }
469: }
470:
471: @And("^I search for the trigger with name \"([^\"]*)\" in the database$")
472: public void iSearchForTheTriggerWithNameInTheDatabase(String triggerName) throws Throwable {
473: TriggerQuery triggerQuery = triggerFactory.newQuery(getCurrentScopeId());
474: triggerQuery.setPredicate(triggerQuery.attributePredicate(TriggerAttributes.NAME, triggerName, AttributePredicate.Operator.EQUAL));
475: primeException();
476: try {
477: stepData.remove(TRIGGER);
478: TriggerListResult triggerListResult = triggerService.query(triggerQuery);
479: Trigger trigger = triggerListResult.getFirstItem();
480: stepData.put(TRIGGER, trigger);
481: } catch (Exception ex) {
482: verifyException(ex);
483: }
484: }
485:
486: @And("^There is no trigger with the name \"([^\"]*)\" in the database$")
487: public void thereIsNoTriggerWithTheNameInTheDatabase(String triggerName) throws Throwable {
488: assertNull(stepData.get(TRIGGER));
489: }
490:
491: @And("^I try to edit trigger definition to \"([^\"]*)\"$")
492: public void iTryToEditSchedulerPropertyTo(String trigerDefinition) throws Exception {
493: Trigger trigger = (Trigger) stepData.get(TRIGGER);
494:
495: primeException();
496:
497: try {
498: TriggerDefinitionQuery triggerDefinitionQuery = triggerDefinitionFactory.newQuery(getCurrentScopeId());
499: triggerDefinitionQuery.setPredicate(triggerDefinitionQuery.attributePredicate(TriggerDefinitionAttributes.NAME, trigerDefinition, AttributePredicate.Operator.EQUAL));
500: TriggerDefinition triggerDefinition = triggerDefinitionService.query(triggerDefinitionQuery).getFirstItem();
501:
502: trigger.setTriggerDefinitionId(triggerDefinition.getId());
503: Trigger updateTrigger = triggerService.update(trigger);
504: stepData.put(UPDATED_TRIGGER, updateTrigger);
505: } catch (KapuaException ex) {
506: verifyException(ex);
507: }
508: }
509:
510: @And("^I try to edit start date to (.*) at (.*)$")
511: public void iTryToEditStartDateTo(String startDate, String startTime) throws Exception {
512:
513: Trigger trigger = (Trigger) stepData.get(TRIGGER);
514: Date newTriggerStartOnDate = setDateAndTimeValue(startDate, startTime);
515: trigger.setStartsOn(newTriggerStartOnDate);
516: try {
517: primeException();
518: Trigger updatedTrigger = triggerService.update(trigger);
519: stepData.put(UPDATED_TRIGGER, updatedTrigger);
520: } catch (KapuaException ex) {
521: verifyException(ex);
522: }
523: }
524:
525: @And("^I try to edit end date to (.*) at (.*)$")
526: public void iTryToEditEndDateTo(String endDate, String endTime) throws Exception {
527:
528: Trigger trigger = (Trigger) stepData.get(TRIGGER);
529: Date newTriggerEndsOnDate = setDateAndTimeValue(endDate, endTime);
530: trigger.setEndsOn(newTriggerEndsOnDate);
531: try {
532: primeException();
533: Trigger updatedTrigger = triggerService.update(trigger);
534: stepData.put(UPDATED_TRIGGER, updatedTrigger);
535: } catch (KapuaException ex) {
536: verifyException(ex);
537: }
538: }
539: }
540:
541: