@@ -72,44 +72,59 @@ class JobSchedulerIntegrationTest extends SpecificationWithJUnit with Mockito {
72
72
73
73
" Marking a job successful updates the success and error counts and triggers children" in {
74
74
val epsilon = Minutes .minutes(20 ).toPeriod
75
- val job1 = new ScheduleBasedJob (schedule = " R/2012-01-01T00:00:00.000Z/PT1M " ,
75
+ val job1 = new ScheduleBasedJob (schedule = " R/2012-01-01T00:00:00.000Z/PT1D " ,
76
76
name = " job1" , command = " fooo" , epsilon = epsilon, retries = 0 )
77
- val job2 = new DependencyBasedJob (Set (" job1" ), name = " job2" , command = " CMD" , disabled = false )
77
+ val dependentJob = new DependencyBasedJob (Set (" job1" , " job3" ), name = " dependentJob" , command = " CMD" , disabled = false )
78
+ val job3 = new ScheduleBasedJob (schedule = " R/2012-01-01T00:00:00.000Z/PT1D" ,
79
+ name = " job3" , command = " fooo" , epsilon = epsilon, retries = 0 )
78
80
79
81
val horizon = Minutes .minutes(5 ).toPeriod
80
82
val mockTaskManager = mock[TaskManager ]
81
- val graph = new JobGraph ()
83
+ val jobGraph = new JobGraph ()
82
84
val mockPersistenceStore = mock[PersistenceStore ]
83
85
val mockJobsObserver = mockFullObserver
84
86
85
- val scheduler = mockScheduler(horizon, mockTaskManager, graph , mockPersistenceStore, mockJobsObserver)
87
+ val scheduler = mockScheduler(horizon, mockTaskManager, jobGraph , mockPersistenceStore, mockJobsObserver)
86
88
val date = DateTime .parse(" 2011-01-01T00:05:01.000Z" )
89
+
90
+ val edgeInvocationCount = jobGraph.edgeInvocationCount
91
+
87
92
scheduler.leader.set(true )
88
93
scheduler.registerJob(job1, persist = true , date)
89
- scheduler.registerJob(job2, persist = true , date)
94
+ scheduler.registerJob(job3, persist = true , date)
95
+ scheduler.registerJob(dependentJob, persist = true , date)
96
+
90
97
scheduler.run(() => {
91
98
date
92
99
})
93
100
94
101
val failedDate = date.plusMinutes(1 )
102
+ val passingDate = date.plusMinutes(1 )
95
103
96
104
scheduler.handleFailedTask(TaskUtils .getTaskStatus(job1, failedDate, 0 ))
97
- val failedJob = graph.lookupVertex(" job1" ).get
105
+ scheduler.handleFinishedTask(TaskUtils .getTaskStatus(job3, passingDate, 0 ))
106
+ val failedJob = jobGraph.lookupVertex(" job1" ).get
98
107
failedJob.errorCount must_== 1
99
108
failedJob.successCount must_== 0
100
109
failedJob.errorsSinceLastSuccess must_== 1
101
110
102
111
scheduler.markJobSuccessAndFireOffDependencies(" job1" )
103
- val jobMarkedSuccess = graph .lookupVertex(" job1" ).get
112
+ val jobMarkedSuccess = jobGraph .lookupVertex(" job1" ).get
104
113
jobMarkedSuccess.errorCount must_== 1
105
114
jobMarkedSuccess.successCount must_== 1
106
115
jobMarkedSuccess.errorsSinceLastSuccess must_== 0
107
116
val lastSuccess = DateTime .parse(jobMarkedSuccess.lastSuccess)
108
- there was one(mockTaskManager).enqueue(TaskUtils .getTaskId(job2 , lastSuccess, 0 ),
117
+ there was one(mockTaskManager).enqueue(TaskUtils .getTaskId(dependentJob , lastSuccess, 0 ),
109
118
highPriority = false )
110
- scheduler.handleFinishedTask(TaskUtils .getTaskStatus(job2, lastSuccess, 0 ))
111
- val dependentJob = graph.lookupVertex(" job2" ).get
112
- dependentJob.successCount must_== 1
119
+ scheduler.handleStartedTask(TaskUtils .getTaskStatus(dependentJob, lastSuccess, 0 ))
120
+ scheduler.handleFinishedTask(TaskUtils .getTaskStatus(dependentJob, lastSuccess, 0 ))
121
+ edgeInvocationCount.get(jobGraph.dag.getEdge(" job1" , " dependentJob" )) must_== Some (0L )
122
+ jobGraph.lookupVertex(" dependentJob" ).get.successCount must_== 1
123
+
124
+ scheduler.handleFinishedTask(TaskUtils .getTaskStatus(job1, passingDate, 0 ))
125
+ scheduler.markJobSuccessAndFireOffDependencies(" dependentJob" )
126
+ jobGraph.lookupVertex(" dependentJob" ).get.successCount must_== 2
127
+ edgeInvocationCount.get(jobGraph.dag.getEdge(" job1" , " dependentJob" )) must_== Some (0L )
113
128
}
114
129
115
130
" Tests that a disabled job does not run and does not execute dependant children." in {
0 commit comments