Throwable sparkJobException = sparkJobStatus.getSparkJobException(); if (sparkJobException != null) { HiveException he;
@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 testSetSparkExceptionWithJobError() { SparkTask sparkTask = new SparkTask(); SparkJobStatus mockSparkJobStatus = mock(SparkJobStatus.class); ExecutionException ee = new ExecutionException("Exception thrown by job", new SparkException("Job aborted due to stage failure: Not a task or OOM error")); when(mockSparkJobStatus.getSparkJobException()).thenReturn(ee); sparkTask.setSparkException(mockSparkJobStatus, 3); Assert.assertTrue(sparkTask.getException() instanceof HiveException); Assert.assertEquals(((HiveException) sparkTask.getException()).getCanonicalErrorMsg(), ErrorMsg.SPARK_JOB_RUNTIME_ERROR); Assert.assertTrue(sparkTask.getException().getMessage().contains("Not a task or OOM error")); }
@Test public void testSetSparkExceptionWithOOMError() { SparkTask sparkTask = new SparkTask(); SparkJobStatus mockSparkJobStatus = mock(SparkJobStatus.class); ExecutionException jobError = new ExecutionException( new SparkException("Container killed by YARN for exceeding memory limits")); when(mockSparkJobStatus.getSparkJobException()).thenReturn(jobError); sparkTask.setSparkException(mockSparkJobStatus, 3); Assert.assertTrue(sparkTask.getException() instanceof HiveException); Assert.assertEquals(((HiveException) sparkTask.getException()).getCanonicalErrorMsg(), ErrorMsg.SPARK_RUNTIME_OOM); }