diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java index e810c54b12..ab29c1ede7 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java @@ -28,7 +28,7 @@ import org.apache.hadoop.hdds.scm.HddsServerUtil; import org.apache.hadoop.hdds.scm.ScmConfigKeys; import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol; -import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.ipc.ProtobufRpcEngine; import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.security.KerberosInfo; import org.slf4j.Logger; @@ -60,6 +60,8 @@ public class SCMSecurityProtocolServer implements SCMSecurityProtocol { rpcAddress = HddsServerUtil .getScmSecurityInetAddress(conf); // SCM security service RPC service. + RPC.setProtocolEngine(conf, SCMSecurityProtocolPB.class, + ProtobufRpcEngine.class); BlockingService secureProtoPbService = SCMSecurityProtocolProtos.SCMSecurityProtocolService .newReflectiveBlockingService( diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMSecurityProtocolServer.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMSecurityProtocolServer.java new file mode 100644 index 0000000000..8e7d84c4dd --- /dev/null +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMSecurityProtocolServer.java @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.hadoop.hdds.scm.server; + +import org.apache.hadoop.hdds.conf.OzoneConfiguration; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.Timeout; + +/** + * Test class for {@link SCMSecurityProtocolServer}. + * */ +public class TestSCMSecurityProtocolServer { + private SCMSecurityProtocolServer securityProtocolServer; + private OzoneConfiguration config; + + @Rule + public Timeout timeout = new Timeout(1000 * 20); + + @Before + public void setUp() throws Exception { + config = new OzoneConfiguration(); + securityProtocolServer = new SCMSecurityProtocolServer(config, null); + } + + @After + public void tearDown() throws Exception { + if (securityProtocolServer != null) { + securityProtocolServer.stop(); + securityProtocolServer = null; + } + config = null; + } + + @Test + public void testStart() { + securityProtocolServer.start(); + } + + @Test + public void testStop() { + securityProtocolServer.stop(); + } +} \ No newline at end of file diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java index a0119b21fe..3d3462650e 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java @@ -298,7 +298,8 @@ public void testSecureKsmInitializationSuccess() throws Exception { } catch (Exception ex) { // Expects timeout failure from scmClient in KSM but KSM user login via // kerberos should succeed - Assert.assertTrue(logs.getOutput().contains("KSM login successful")); + Assert.assertTrue( + logs.getOutput().contains("Ozone Manager login successful.")); } }