|
33 | 33 |
|
34 | 34 | import org.apache.gobblin.config.ConfigBuilder;
|
35 | 35 | import org.apache.gobblin.configuration.ConfigurationKeys;
|
| 36 | +import org.apache.gobblin.metrics.event.TimingEvent; |
36 | 37 | import org.apache.gobblin.runtime.api.JobSpec;
|
37 | 38 | import org.apache.gobblin.runtime.api.SpecExecutor;
|
38 | 39 | import org.apache.gobblin.runtime.spec_executorInstance.MockedSpecExecutor;
|
@@ -73,162 +74,194 @@ public void testGetJobSpecFromDag() throws Exception {
|
73 | 74 | }
|
74 | 75 |
|
75 | 76 | @Test
|
76 |
| - public void testIsDagFinishedSingleNode() throws URISyntaxException { |
| 77 | + public void testFlowStatusAndIsDagFinishedSingleNode() throws URISyntaxException { |
77 | 78 | Dag<JobExecutionPlan> dag =
|
78 | 79 | DagManagerTest.buildDag(id, flowExecutionId, flowFailureOption, 1, proxyUser, additionalConfig);
|
79 | 80 |
|
80 | 81 | setJobStatuses(dag, Collections.singletonList(COMPLETE));
|
81 | 82 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 83 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_SUCCEEDED, DagProcUtils.calcFlowStatus(dag)); |
82 | 84 |
|
83 | 85 | setJobStatuses(dag, Collections.singletonList(FAILED));
|
84 | 86 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 87 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
85 | 88 |
|
86 | 89 | setJobStatuses(dag, Collections.singletonList(CANCELLED));
|
87 | 90 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 91 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
88 | 92 |
|
89 | 93 | setJobStatuses(dag, Collections.singletonList(PENDING));
|
90 | 94 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 95 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
91 | 96 |
|
92 | 97 | setJobStatuses(dag, Collections.singletonList(PENDING_RETRY));
|
93 | 98 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 99 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
94 | 100 |
|
95 | 101 | setJobStatuses(dag, Collections.singletonList(PENDING_RESUME));
|
96 | 102 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 103 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_PENDING_RESUME, DagProcUtils.calcFlowStatus(dag)); |
97 | 104 |
|
98 | 105 | setJobStatuses(dag, Collections.singletonList(ORCHESTRATED));
|
99 | 106 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 107 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
100 | 108 |
|
101 | 109 | setJobStatuses(dag, Collections.singletonList(RUNNING));
|
102 | 110 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 111 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
103 | 112 | }
|
104 | 113 |
|
105 | 114 | @Test
|
106 |
| - public void testIsDagFinishedTwoNodes() throws URISyntaxException { |
| 115 | + public void testFlowStatusAndIsDagFinishedTwoNodes() throws URISyntaxException { |
107 | 116 | Dag<JobExecutionPlan> dag =
|
108 | 117 | DagManagerTest.buildDag(id, flowExecutionId, flowFailureOption, 2, proxyUser, additionalConfig);
|
109 | 118 |
|
110 | 119 | setJobStatuses(dag, Arrays.asList(COMPLETE, PENDING));
|
111 | 120 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 121 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
112 | 122 |
|
113 | 123 | setJobStatuses(dag, Arrays.asList(COMPLETE, FAILED));
|
114 | 124 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 125 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
115 | 126 |
|
116 | 127 | setJobStatuses(dag, Arrays.asList(FAILED, PENDING));
|
117 | 128 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 129 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
118 | 130 |
|
119 | 131 | setJobStatuses(dag, Arrays.asList(CANCELLED, PENDING));
|
120 | 132 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 133 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
121 | 134 | }
|
122 | 135 |
|
123 | 136 | @Test
|
124 |
| - public void testIsDagFinishedThreeNodes() throws URISyntaxException { |
| 137 | + public void testFlowStatusAndIsDagFinishedThreeNodes() throws URISyntaxException { |
125 | 138 | Dag<JobExecutionPlan> dag = buildComplexDag3();
|
126 | 139 |
|
127 | 140 | setJobStatuses(dag, Arrays.asList(COMPLETE, PENDING, PENDING));
|
128 | 141 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 142 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
129 | 143 |
|
130 | 144 | setJobStatuses(dag, Arrays.asList(COMPLETE, FAILED, PENDING));
|
131 | 145 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 146 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
132 | 147 |
|
133 | 148 | setJobStatuses(dag, Arrays.asList(COMPLETE, CANCELLED, PENDING));
|
134 | 149 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 150 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
135 | 151 | }
|
136 | 152 |
|
137 | 153 | @Test
|
138 |
| - public void testIsDagFinishedFourNodes() throws URISyntaxException { |
| 154 | + public void testFlowStatusAndIsDagFinishedFourNodes() throws URISyntaxException { |
139 | 155 | Dag<JobExecutionPlan> dag = buildLinearDagOf4Nodes();
|
140 | 156 |
|
141 | 157 | setJobStatuses(dag, Arrays.asList(COMPLETE, PENDING, PENDING, PENDING));
|
142 | 158 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 159 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
143 | 160 |
|
144 | 161 | setJobStatuses(dag, Arrays.asList(FAILED, PENDING, PENDING, PENDING));
|
145 | 162 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 163 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
146 | 164 |
|
147 | 165 | setJobStatuses(dag, Arrays.asList(CANCELLED, PENDING, PENDING, PENDING));
|
148 | 166 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 167 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
149 | 168 |
|
150 | 169 | setJobStatuses(dag, Arrays.asList(PENDING, PENDING, PENDING, PENDING));
|
151 | 170 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 171 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag)); |
152 | 172 | }
|
153 | 173 |
|
154 | 174 | @Test
|
155 |
| - public void testIsDagFinishedMultiNodes() throws URISyntaxException { |
| 175 | + public void testFlowStatusAndIsDagFinishedMultiNodes() throws URISyntaxException { |
156 | 176 | Dag<JobExecutionPlan> dag = buildComplexDag1();
|
157 | 177 | setJobStatuses(dag, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE));
|
158 | 178 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
159 | 179 | Collections.shuffle(dag.getNodes());
|
160 | 180 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 181 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_SUCCEEDED, DagProcUtils.calcFlowStatus(dag)); |
161 | 182 |
|
162 | 183 | Dag<JobExecutionPlan> dag2 = buildComplexDag1();
|
163 | 184 | setJobStatuses(dag2, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, PENDING, COMPLETE, COMPLETE, PENDING, COMPLETE, PENDING));
|
164 | 185 | Assert.assertFalse(DagProcUtils.isDagFinished(dag2));
|
165 | 186 | Collections.shuffle(dag2.getNodes());
|
166 | 187 | Assert.assertFalse(DagProcUtils.isDagFinished(dag2));
|
| 188 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag2)); |
167 | 189 |
|
168 | 190 | Dag<JobExecutionPlan> dag3 = buildComplexDag1();
|
169 | 191 | setJobStatuses(dag3, Arrays.asList(FAILED, COMPLETE, COMPLETE, COMPLETE, PENDING, COMPLETE, COMPLETE, PENDING, COMPLETE, PENDING));
|
170 | 192 | Assert.assertTrue(DagProcUtils.isDagFinished(dag3));
|
171 | 193 | Collections.shuffle(dag3.getNodes());
|
172 | 194 | Assert.assertTrue(DagProcUtils.isDagFinished(dag3));
|
| 195 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag3)); |
173 | 196 |
|
174 | 197 | Dag<JobExecutionPlan> dag4 = buildComplexDag1();
|
175 | 198 | setJobStatuses(dag4, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, CANCELLED, COMPLETE, PENDING, PENDING, PENDING));
|
176 | 199 | Assert.assertFalse(DagProcUtils.isDagFinished(dag4));
|
177 | 200 | Collections.shuffle(dag4.getNodes());
|
178 | 201 | Assert.assertFalse(DagProcUtils.isDagFinished(dag4));
|
| 202 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag4)); |
179 | 203 |
|
180 | 204 | Dag<JobExecutionPlan> dag5 = buildComplexDag1();
|
181 | 205 | setJobStatuses(dag5, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, CANCELLED, COMPLETE, COMPLETE, PENDING, PENDING));
|
182 | 206 | Assert.assertTrue(DagProcUtils.isDagFinished(dag5));
|
183 | 207 | Collections.shuffle(dag5.getNodes());
|
184 | 208 | Assert.assertTrue(DagProcUtils.isDagFinished(dag5));
|
| 209 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag5)); |
185 | 210 |
|
186 | 211 | Dag<JobExecutionPlan> dag6 = buildComplexDag1();
|
187 | 212 | setJobStatuses(dag6, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, PENDING_RESUME, COMPLETE, COMPLETE, PENDING, PENDING));
|
188 | 213 | Assert.assertFalse(DagProcUtils.isDagFinished(dag6));
|
189 | 214 | Collections.shuffle(dag6.getNodes());
|
190 | 215 | Assert.assertFalse(DagProcUtils.isDagFinished(dag6));
|
| 216 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_PENDING_RESUME, DagProcUtils.calcFlowStatus(dag6)); |
191 | 217 |
|
192 | 218 | Dag<JobExecutionPlan> dag7 = buildComplexDag1();
|
193 | 219 | setJobStatuses(dag7, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, PENDING_RETRY, COMPLETE, COMPLETE, PENDING, PENDING));
|
194 | 220 | Assert.assertFalse(DagProcUtils.isDagFinished(dag7));
|
195 | 221 | Collections.shuffle(dag7.getNodes());
|
196 | 222 | Assert.assertFalse(DagProcUtils.isDagFinished(dag7));
|
| 223 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag7)); |
197 | 224 |
|
198 | 225 | Dag<JobExecutionPlan> dag8 = buildComplexDag1();
|
199 | 226 | setJobStatuses(dag8, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, COMPLETE, COMPLETE, RUNNING, COMPLETE, COMPLETE, PENDING, PENDING));
|
200 | 227 | Assert.assertFalse(DagProcUtils.isDagFinished(dag8));
|
201 | 228 | Collections.shuffle(dag8.getNodes());
|
202 | 229 | Assert.assertFalse(DagProcUtils.isDagFinished(dag8));
|
| 230 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_RUNNING, DagProcUtils.calcFlowStatus(dag8)); |
203 | 231 |
|
204 | 232 | Dag<JobExecutionPlan> dag9 = buildComplexDag1();
|
205 | 233 | setJobStatuses(dag9, Arrays.asList(COMPLETE, COMPLETE, COMPLETE, FAILED, COMPLETE, COMPLETE, PENDING, COMPLETE, PENDING, COMPLETE));
|
206 | 234 | Assert.assertFalse(DagProcUtils.isDagFinished(dag9));
|
207 | 235 | Collections.shuffle(dag9.getNodes());
|
208 | 236 | Assert.assertFalse(DagProcUtils.isDagFinished(dag9));
|
| 237 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag9)); |
209 | 238 | }
|
210 | 239 |
|
211 | 240 | @Test
|
212 |
| - public void testIsDagFinishedWithFinishRunningFailureOptionTwoNodes() throws URISyntaxException { |
| 241 | + public void testFlowStatusAndIsDagFinishedWithFinishRunningFailureOptionTwoNodes() throws URISyntaxException { |
213 | 242 | Dag<JobExecutionPlan> dag =
|
214 | 243 | DagManagerTest.buildDag(id, flowExecutionId, flowFailureOption, 2, proxyUser, additionalConfig);
|
215 | 244 |
|
216 | 245 | setJobStatuses(dag, Arrays.asList(FAILED, PENDING));
|
217 | 246 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 247 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_FAILED, DagProcUtils.calcFlowStatus(dag)); |
218 | 248 |
|
219 | 249 | setJobStatuses(dag, Arrays.asList(CANCELLED, PENDING));
|
220 | 250 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 251 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
221 | 252 | }
|
222 | 253 |
|
223 | 254 | @Test
|
224 |
| - public void testIsDagFinishedWithFinishRunningFailureOptionMultiNodes() throws URISyntaxException { |
| 255 | + public void testFlowStatusAndIsDagFinishedWithFinishRunningFailureOptionMultiNodes() throws URISyntaxException { |
225 | 256 | Dag<JobExecutionPlan> dag = buildComplexDagWithFinishRunningFailureOption();
|
226 | 257 |
|
227 | 258 | setJobStatuses(dag, Arrays.asList(COMPLETE, CANCELLED, COMPLETE, PENDING, PENDING));
|
228 | 259 | Assert.assertTrue(DagProcUtils.isDagFinished(dag));
|
| 260 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
229 | 261 |
|
230 | 262 | setJobStatuses(dag, Arrays.asList(COMPLETE, CANCELLED, COMPLETE, RUNNING, PENDING));
|
231 | 263 | Assert.assertFalse(DagProcUtils.isDagFinished(dag));
|
| 264 | + Assert.assertEquals(TimingEvent.FlowTimings.FLOW_CANCELLED, DagProcUtils.calcFlowStatus(dag)); |
232 | 265 | }
|
233 | 266 |
|
234 | 267 | private void setJobStatuses(Dag<JobExecutionPlan> dag, List<ExecutionStatus> statuses) {
|
|
0 commit comments