Throwable monitorError = sparkJobStatus.getMonitorError(); if (monitorError != null) { if ((monitorError instanceof InterruptedException) ||
@Test public void testHandleInterruptedException() throws Exception { HiveConf hiveConf = new HiveConf(); SparkTask sparkTask = new SparkTask(); sparkTask.setWork(mock(SparkWork.class)); DriverContext mockDriverContext = mock(DriverContext.class); QueryState mockQueryState = mock(QueryState.class); when(mockQueryState.getConf()).thenReturn(hiveConf); sparkTask.initialize(mockQueryState, null, mockDriverContext, null); SparkJobStatus mockSparkJobStatus = mock(SparkJobStatus.class); when(mockSparkJobStatus.getMonitorError()).thenReturn(new InterruptedException()); SparkSession mockSparkSession = mock(SparkSession.class); SparkJobRef mockSparkJobRef = mock(SparkJobRef.class); when(mockSparkJobRef.monitorJob()).thenReturn(2); when(mockSparkJobRef.getSparkJobStatus()).thenReturn(mockSparkJobStatus); when(mockSparkSession.submit(any(), any())).thenReturn(mockSparkJobRef); SessionState.start(hiveConf); SessionState.get().setSparkSession(mockSparkSession); sparkTask.execute(mockDriverContext); verify(mockSparkJobRef, atLeastOnce()).cancelJob(); when(mockSparkJobStatus.getMonitorError()).thenReturn( new HiveException(new InterruptedException())); sparkTask.execute(mockDriverContext); verify(mockSparkJobRef, atLeastOnce()).cancelJob(); }
@Test public void testSparkExceptionAndMonitorError() { SparkTask sparkTask = new SparkTask(); SparkJobStatus mockSparkJobStatus = mock(SparkJobStatus.class); when(mockSparkJobStatus.getMonitorError()).thenReturn(new RuntimeException()); when(mockSparkJobStatus.getSparkJobException()).thenReturn( new ExecutionException(new SparkException(""))); sparkTask.setSparkException(mockSparkJobStatus, 3); Assert.assertTrue(sparkTask.getException() instanceof HiveException); Assert.assertEquals(((HiveException) sparkTask.getException()).getCanonicalErrorMsg(), ErrorMsg.SPARK_JOB_RUNTIME_ERROR); }
@Test public void testSetSparkExceptionWithTimeoutError() { SparkTask sparkTask = new SparkTask(); SparkJobStatus mockSparkJobStatus = mock(SparkJobStatus.class); when(mockSparkJobStatus.getMonitorError()).thenReturn(new HiveException(ErrorMsg .SPARK_JOB_MONITOR_TIMEOUT, Long.toString(60))); sparkTask.setSparkException(mockSparkJobStatus, 3); Assert.assertTrue(sparkTask.getException() instanceof HiveException); Assert.assertEquals(((HiveException) sparkTask.getException()).getCanonicalErrorMsg(), ErrorMsg.SPARK_JOB_MONITOR_TIMEOUT); Assert.assertTrue(sparkTask.getException().getMessage().contains("60s")); }