PySparkInterpreter extends PythonInterpreter { @Override public InterpreterResult interpret(String st, InterpreterContext context) throws InterpreterException { PrintStream originalStdout = System.out; PrintStream originalStderr = System.err; try { System.setOut(new PrintStream(context.out)); System.setErr(new PrintStream(context.out)); Utils.printDeprecateMessage(sparkInterpreter.getSparkVersion(), context, properties); return super.interpret(st, context); } finally { System.setOut(originalStdout); System.setErr(originalStderr); } } PySparkInterpreter(Properties property); @Override void open(); @Override void close(); @Override InterpreterResult interpret(String st, InterpreterContext context); ZeppelinContext getZeppelinContext(); JavaSparkContext getJavaSparkContext(); Object getSparkSession(); SparkConf getSparkConf(); Object getSQLContext(); boolean isSpark1(); boolean isSpark3();  }
@Override @Test public void testFailtoLaunchPythonProcess() throws InterpreterException { tearDown(); intpGroup = new InterpreterGroup(); Properties properties = new Properties(); properties.setProperty(SparkStringConstants.APP_NAME_PROP_NAME, "Zeppelin Test"); properties.setProperty("spark.pyspark.python", "invalid_python"); properties.setProperty("zeppelin.python.useIPython", "false"); properties.setProperty("zeppelin.python.gatewayserver_address", "127.0.0.1"); properties.setProperty("zeppelin.spark.maxResult", "3"); interpreter = new LazyOpenInterpreter(new PySparkInterpreter(properties)); interpreter.setInterpreterGroup(intpGroup); Interpreter sparkInterpreter = new LazyOpenInterpreter(new SparkInterpreter(properties)); sparkInterpreter.setInterpreterGroup(intpGroup); LazyOpenInterpreter iPySparkInterpreter = new LazyOpenInterpreter(new IPySparkInterpreter(properties)); iPySparkInterpreter.setInterpreterGroup(intpGroup); intpGroup.put("note", new LinkedList<Interpreter>()); intpGroup.get("note").add(interpreter); intpGroup.get("note").add(sparkInterpreter); intpGroup.get("note").add(iPySparkInterpreter); InterpreterContext.set(getInterpreterContext()); try { interpreter.interpret("1+1", getInterpreterContext()); fail("Should fail to open PySparkInterpreter"); } catch (InterpreterException e) { String stacktrace = ExceptionUtils.getStackTrace(e); assertTrue(stacktrace, stacktrace.contains("No such file or directory")); } }