This is an automated email from the ASF dual-hosted git repository. zjffdu pushed a commit to branch branch-0.9 in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/branch-0.9 by this push: new 1c7274a [ZEPPELIN-4768] Correct a typo in isUserImpersonateForSparkInterpreter 1c7274a is described below commit 1c7274a37e4e84743b52ff8f7ee73387eb861cc9 Author: Philipp Dallig <philipp.dal...@gmail.com> AuthorDate: Tue Apr 21 10:25:01 2020 +0200 [ZEPPELIN-4768] Correct a typo in isUserImpersonateForSparkInterpreter ### What is this PR for? Small typo fix ### What type of PR is it? Bug Fix ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-4768 ### How should this be tested? * **Travis-CI**: https://travis-ci.org/github/Reamer/zeppelin/builds/677598691 ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Philipp Dallig <philipp.dal...@gmail.com> Closes #3744 from Reamer/typo_in_spark_user_impersonate and squashes the following commits: 7094ab04e [Philipp Dallig] Correct a typo in isUserImpersonateForSparkInterpreter (cherry picked from commit badb2b4ba2b731f585e0aec6b791eeff792076b3) Signed-off-by: Jeff Zhang <zjf...@apache.org> --- .../launcher/K8sStandardInterpreterLauncher.java | 2 +- .../K8sStandardInterpreterLauncherTest.java | 87 ++++++++++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncher.java b/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncher.java index 085c3f9..80bd4aa 100644 --- a/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncher.java +++ b/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncher.java @@ -135,7 +135,7 @@ public class K8sStandardInterpreterLauncher extends InterpreterLauncher { private boolean isUserImpersonateForSparkInterpreter(InterpreterLaunchContext context) { return zConf.getZeppelinImpersonateSparkProxyUser() && context.getOption().isUserImpersonate() && - "spark".equalsIgnoreCase(context.getInterpreterGroupId()); + "spark".equalsIgnoreCase(context.getInterpreterSettingGroup()); } @Override diff --git a/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncherTest.java b/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncherTest.java index 4cd035a..b25373d 100644 --- a/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncherTest.java +++ b/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sStandardInterpreterLauncherTest.java @@ -25,6 +25,7 @@ import org.junit.Test; import java.io.IOException; import java.util.Properties; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -75,4 +76,90 @@ public class K8sStandardInterpreterLauncherTest { // then assertTrue(client instanceof K8sRemoteInterpreterProcess); } + + @Test + public void testK8sLauncherWithSparkAndUserImpersonate() throws IOException { + // given + Kubectl kubectl = mock(Kubectl.class); + when(kubectl.getNamespace()).thenReturn("default"); + + ZeppelinConfiguration zConf = new ZeppelinConfiguration(); + K8sStandardInterpreterLauncher launcher = new K8sStandardInterpreterLauncher(zConf, null, kubectl); + Properties properties = new Properties(); + properties.setProperty("ENV_1", "VALUE_1"); + properties.setProperty("property_1", "value_1"); + properties.setProperty("CALLBACK_HOST", "zeppelin-server.default.svc"); + properties.setProperty("CALLBACK_PORT", "12320"); + properties.setProperty("SERVICE_DOMAIN", "example.com"); + properties.setProperty("zeppelin.interpreter.connect.timeout", "60"); + InterpreterOption option = new InterpreterOption(); + option.setUserImpersonate(true); + InterpreterLaunchContext context = new InterpreterLaunchContext( + properties, + option, + null, + "user1", // username + "spark-user1", //interpretergroupId + "dummy", // interpreterSettingId + "spark", // interpreterSettingGroup + "spark", // interpreterSettingName + 0, + "host"); + // when + InterpreterClient client = launcher.launch(context); + + // then + assertTrue(client instanceof K8sRemoteInterpreterProcess); + K8sRemoteInterpreterProcess process = (K8sRemoteInterpreterProcess) client; + assertTrue(process.isSpark()); + + // when + process.start(context.getUserName()); + + // then + assertTrue(process.buildSparkSubmitOptions().contains("--proxy-user user1")); + } + + @Test + public void testK8sLauncherWithSparkAndWithoutUserImpersonate() throws IOException { + // given + Kubectl kubectl = mock(Kubectl.class); + when(kubectl.getNamespace()).thenReturn("default"); + + ZeppelinConfiguration zConf = new ZeppelinConfiguration(); + K8sStandardInterpreterLauncher launcher = new K8sStandardInterpreterLauncher(zConf, null, kubectl); + Properties properties = new Properties(); + properties.setProperty("ENV_1", "VALUE_1"); + properties.setProperty("property_1", "value_1"); + properties.setProperty("CALLBACK_HOST", "zeppelin-server.default.svc"); + properties.setProperty("CALLBACK_PORT", "12320"); + properties.setProperty("SERVICE_DOMAIN", "example.com"); + properties.setProperty("zeppelin.interpreter.connect.timeout", "60"); + InterpreterOption option = new InterpreterOption(); + option.setUserImpersonate(false); + InterpreterLaunchContext context = new InterpreterLaunchContext( + properties, + option, + null, + "user1", // username + "spark-user1", //interpretergroupId + "dummy", // interpreterSettingId + "spark", // interpreterSettingGroup + "spark", // interpreterSettingName + 0, + "host"); + // when + InterpreterClient client = launcher.launch(context); + + // then + assertTrue(client instanceof K8sRemoteInterpreterProcess); + K8sRemoteInterpreterProcess process = (K8sRemoteInterpreterProcess) client; + assertTrue(process.isSpark()); + + // when + process.start(context.getUserName()); + + // then + assertFalse(process.buildSparkSubmitOptions().contains("--proxy-user user1")); + } }