This is an automated email from the ASF dual-hosted git repository.
hanishakoneru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 69ee3a3 HDDS-3178. Add unit tests for OMGetDelegationToken Request
and Response (#770)
69ee3a3 is described below
commit 69ee3a3ae2145c7db0ecfc57ce1cf60204546934
Author: Yi Sheng <[email protected]>
AuthorDate: Wed May 6 01:22:34 2020 +0800
HDDS-3178. Add unit tests for OMGetDelegationToken Request and Response
(#770)
---
.../security/TestOMDelegationTokenRequest.java | 71 +++++++
.../security/TestOMGetDelegationTokenRequest.java | 221 +++++++++++++++++++++
.../ozone/om/request/security/package-info.java | 23 +++
.../security/TestOMDelegationTokenResponse.java | 51 +++++
.../security/TestOMGetDelegationTokenResponse.java | 95 +++++++++
.../ozone/om/response/security/package-info.java | 21 ++
6 files changed, 482 insertions(+)
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMDelegationTokenRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMDelegationTokenRequest.java
new file mode 100644
index 0000000..08c95f6
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMDelegationTokenRequest.java
@@ -0,0 +1,71 @@
+/*
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.ozone.om.request.security;
+
+import org.apache.hadoop.hdds.conf.ConfigurationSource;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
+import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
+import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_DB_DIRS;
+import org.junit.Rule;
+import org.junit.Before;
+import org.junit.After;
+import org.junit.rules.TemporaryFolder;
+import org.mockito.Mockito;
+import static org.mockito.Mockito.when;
+
+/**
+ * Base class for testing OM delegation token request.
+ */
+@SuppressWarnings("visibilitymodifier")
+public class TestOMDelegationTokenRequest {
+
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
+ protected OzoneManager ozoneManager;
+ protected OMMetrics omMetrics;
+ protected OMMetadataManager omMetadataManager;
+ protected ConfigurationSource conf;
+
+ // Just setting OzoneManagerDoubleBuffer which does nothing.
+ protected OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper =
+ ((response, transactionIndex) -> {
+ return null;
+ });
+
+ @Before
+ public void setup() throws Exception {
+ ozoneManager = Mockito.mock(OzoneManager.class);
+
+ conf = new OzoneConfiguration();
+ ((OzoneConfiguration) conf)
+ .set(OZONE_OM_DB_DIRS, folder.newFolder().getAbsolutePath());
+ omMetadataManager = new OmMetadataManagerImpl((OzoneConfiguration) conf);
+ when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
+ }
+
+ @After
+ public void stop() {
+ Mockito.framework().clearInlineMocks();
+ }
+}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMGetDelegationTokenRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMGetDelegationTokenRequest.java
new file mode 100644
index 0000000..df0fcb9
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMGetDelegationTokenRequest.java
@@ -0,0 +1,221 @@
+/*
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.ozone.om.request.security;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import com.google.common.base.Optional;
+import java.util.UUID;
+import org.apache.hadoop.ozone.om.response.OMClientResponse;
+import org.apache.hadoop.ozone.security.OzoneDelegationTokenSecretManager;
+import org.apache.hadoop.ozone.security.OzoneTokenIdentifier;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
+import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
+ .OMRequest;
+import static org.apache.hadoop.ozone.security.OzoneTokenIdentifier.KIND_NAME;
+import org.apache.hadoop.security.token.Token;
+import
org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenRequestProto;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.hadoop.io.Text;
+import org.mockito.Mockito;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.when;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The class tests OMGetDelegationTokenRequest.
+ */
+public class TestOMGetDelegationTokenRequest extends
+ TestOMDelegationTokenRequest {
+
+ private OzoneDelegationTokenSecretManager secretManager;
+ private OzoneTokenIdentifier identifier;
+ private Token<OzoneTokenIdentifier> token;
+ private Text tester;
+ private OMRequest originalRequest;
+ private OMRequest modifiedRequest;
+ private OMGetDelegationTokenRequest omGetDelegationTokenRequest;
+ final private String checkResponse = "";
+
+ @Before
+ public void setupGetDelegationToken() {
+ secretManager = Mockito.mock(OzoneDelegationTokenSecretManager.class);
+ when(ozoneManager.getDelegationTokenMgr()).thenReturn(secretManager);
+
+ setupToken();
+ setupRequest();
+ }
+
+ private void setupRequest() {
+ GetDelegationTokenRequestProto getDelegationTokenRequestProto =
+ GetDelegationTokenRequestProto.newBuilder()
+ .setRenewer(identifier.getRenewer().toString())
+ .build();
+
+ originalRequest = OMRequest.newBuilder()
+ .setClientId(UUID.randomUUID().toString())
+ .setCmdType(Type.GetDelegationToken)
+ .setGetDelegationTokenRequest(getDelegationTokenRequestProto)
+ .build();
+
+ omGetDelegationTokenRequest =
+ new OMGetDelegationTokenRequest(originalRequest);
+
+ modifiedRequest = null;
+ }
+
+ private void verifyUnchangedRequest() {
+ Assert.assertEquals(
+ originalRequest.getCmdType(),
+ modifiedRequest.getCmdType());
+ Assert.assertEquals(
+ originalRequest.getClientId(),
+ modifiedRequest.getClientId());
+ }
+
+ private void setupToken() {
+ tester = new Text("tester");
+ identifier = new OzoneTokenIdentifier(tester, tester, tester);
+ identifier.setOmCertSerialId("certID");
+ identifier.setOmServiceId("");
+
+ byte[] password = RandomStringUtils
+ .randomAlphabetic(10)
+ .getBytes(StandardCharsets.UTF_8);
+ Text service = new Text("OMTest:9862");
+ token = new Token<>(identifier.getBytes(), password, KIND_NAME, service);
+ }
+
+ private OMClientResponse setValidateAndUpdateCache() throws IOException {
+ modifiedRequest = omGetDelegationTokenRequest.preExecute(ozoneManager);
+ OMGetDelegationTokenRequest reqPreExecuted =
+ new OMGetDelegationTokenRequest(modifiedRequest);
+
+ long txLogIndex = 1L;
+ return reqPreExecuted.validateAndUpdateCache(
+ ozoneManager, txLogIndex, ozoneManagerDoubleBufferHelper);
+ }
+
+ @Test
+ public void testPreExecuteWithNonNullToken() throws Exception {
+ /* Let token of ozoneManager.getDelegationToken() is nonNull. */
+ when(ozoneManager.getDelegationToken(tester)).thenReturn(token);
+
+ long tokenRenewInterval = 1000L;
+ when(ozoneManager.getDelegationTokenMgr().getTokenRenewInterval())
+ .thenReturn(tokenRenewInterval);
+
+ modifiedRequest = omGetDelegationTokenRequest.preExecute(ozoneManager);
+ verifyUnchangedRequest();
+
+ long originalInterval =
originalRequest.getUpdateGetDelegationTokenRequest()
+ .getTokenRenewInterval();
+ long renewInterval = modifiedRequest.getUpdateGetDelegationTokenRequest()
+ .getTokenRenewInterval();
+ Assert.assertNotEquals(originalInterval, renewInterval);
+ Assert.assertEquals(tokenRenewInterval, renewInterval);
+
+ /* In preExecute(), if the token is nonNull
+ we set GetDelegationTokenResponse with response. */
+ Assert.assertNotEquals(checkResponse,
+ modifiedRequest.getUpdateGetDelegationTokenRequest()
+ .getGetDelegationTokenResponse()
+ .toString());
+ Assert.assertNotNull(modifiedRequest
+ .getUpdateGetDelegationTokenRequest()
+ .getGetDelegationTokenResponse());
+ }
+
+ @Test
+ public void testPreExecuteWithNullToken() throws Exception {
+ /* Let token of ozoneManager.getDelegationToken() is Null. */
+ when(ozoneManager.getDelegationToken(tester)).thenReturn(null);
+
+ modifiedRequest = omGetDelegationTokenRequest.preExecute(ozoneManager);
+ verifyUnchangedRequest();
+
+ /* In preExecute(), if the token is null
+ we do not set GetDelegationTokenResponse with response. */
+ Assert.assertEquals(checkResponse,
+ modifiedRequest.getUpdateGetDelegationTokenRequest()
+ .getGetDelegationTokenResponse()
+ .toString());
+ }
+
+ @Test
+ public void testValidateAndUpdateCacheWithNonNullToken() throws Exception {
+ /* Let token of ozoneManager.getDelegationToken() is nonNull. */
+ when(ozoneManager.getDelegationToken(tester)).thenReturn(token);
+
+ /* Mock OzoneDelegationTokenSecretManager#updateToken() to
+ * get specific renewTime for verifying OMClientResponse returned by
+ * validateAndUpdateCache(). */
+ long renewTime = 1000L;
+ when(secretManager.updateToken(
+ any(Token.class), any(OzoneTokenIdentifier.class), anyLong()))
+ .thenReturn(renewTime);
+
+ OMClientResponse clientResponse = setValidateAndUpdateCache();
+
+ Optional<Long> responseRenewTime = Optional.fromNullable(
+ omMetadataManager.getDelegationTokenTable().get(identifier));
+ Assert.assertEquals(Optional.of(renewTime), responseRenewTime);
+
+ Assert.assertEquals(Status.OK, clientResponse.getOMResponse().getStatus());
+ }
+
+ @Test
+ public void testValidateAndUpdateCacheWithNullToken() throws Exception {
+ /* Let token of ozoneManager.getDelegationToken() is Null. */
+ when(ozoneManager.getDelegationToken(tester)).thenReturn(null);
+
+ OMClientResponse clientResponse = setValidateAndUpdateCache();
+
+ boolean hasResponse = modifiedRequest.getUpdateGetDelegationTokenRequest()
+ .getGetDelegationTokenResponse().hasResponse();
+ Assert.assertFalse(hasResponse);
+
+ Optional<Long> responseRenewTime = Optional.fromNullable(
+ omMetadataManager.getDelegationTokenTable().get(identifier));
+ Assert.assertEquals(Optional.absent(), responseRenewTime);
+
+ Assert.assertEquals(Status.OK, clientResponse.getOMResponse().getStatus());
+ }
+
+ @Test
+ public void testValidateAndUpdateCacheWithException() throws Exception {
+ /* Create a token that causes InvalidProtocolBufferException by
+ * OzoneTokenIdentifier#readProtoBuf(). */
+ Token<OzoneTokenIdentifier> exceptToken = new Token<>();
+ when(ozoneManager.getDelegationToken(tester)).thenReturn(exceptToken);
+
+ OMClientResponse clientResponse = setValidateAndUpdateCache();
+
+ boolean hasResponse = modifiedRequest.getUpdateGetDelegationTokenRequest()
+ .getGetDelegationTokenResponse().hasResponse();
+ Assert.assertTrue(hasResponse);
+
+ Assert.assertNotEquals(Status.OK,
+ clientResponse.getOMResponse().getStatus());
+ }
+}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/package-info.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/package-info.java
new file mode 100644
index 0000000..4a72a86
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * 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 contains test classes for delegation token requests.
+ */
+package org.apache.hadoop.ozone.om.request.security;
\ No newline at end of file
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMDelegationTokenResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMDelegationTokenResponse.java
new file mode 100644
index 0000000..816e696
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMDelegationTokenResponse.java
@@ -0,0 +1,51 @@
+/*
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.ozone.om.response.security;
+
+import org.apache.hadoop.hdds.conf.ConfigurationSource;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.utils.db.BatchOperation;
+import org.apache.hadoop.ozone.om.OMConfigKeys;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
+
+/** Base test class for delegation token response. */
+@SuppressWarnings("visibilitymodifier")
+public class TestOMDelegationTokenResponse {
+
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
+ protected ConfigurationSource conf;
+ protected OMMetadataManager omMetadataManager;
+ protected BatchOperation batchOperation;
+
+ @Before
+ public void setup() throws IOException {
+ conf = new OzoneConfiguration();
+ ((OzoneConfiguration) conf).set(OMConfigKeys.OZONE_OM_DB_DIRS,
+ folder.newFolder().getAbsolutePath());
+ omMetadataManager = new OmMetadataManagerImpl((OzoneConfiguration) conf);
+ batchOperation = omMetadataManager.getStore().initBatchOperation();
+ }
+}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMGetDelegationTokenResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMGetDelegationTokenResponse.java
new file mode 100644
index 0000000..df90d7e
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMGetDelegationTokenResponse.java
@@ -0,0 +1,95 @@
+/*
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.ozone.om.response.security;
+
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.ozone.om.request.security.OMGetDelegationTokenRequest;
+import org.apache.hadoop.ozone.security.OzoneTokenIdentifier;
+import
org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenRequestProto;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
+ .OMRequest;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
+ .OMResponse;
+import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.UpdateGetDelegationTokenRequest;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
+import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status;
+import java.io.IOException;
+import java.util.UUID;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/** The class tests OMGetDelegationTokenResponse. */
+public class TestOMGetDelegationTokenResponse extends
+ TestOMDelegationTokenResponse {
+
+ private OzoneTokenIdentifier identifier;
+ private UpdateGetDelegationTokenRequest updateGetDelegationTokenRequest;
+
+ @Before
+ public void setupGetDelegationToken() {
+ Text tester = new Text("tester");
+ identifier = new OzoneTokenIdentifier(tester, tester, tester);
+ identifier.setOmCertSerialId("certID");
+
+ GetDelegationTokenRequestProto getDelegationTokenRequestProto =
+ GetDelegationTokenRequestProto.newBuilder()
+ .setRenewer(identifier.getRenewer().toString())
+ .build();
+
+ OMRequest omRequest = OMRequest.newBuilder()
+ .setClientId(UUID.randomUUID().toString())
+ .setCmdType(Type.GetDelegationToken)
+ .setGetDelegationTokenRequest(getDelegationTokenRequestProto)
+ .build();
+
+ updateGetDelegationTokenRequest =
+ new OMGetDelegationTokenRequest(omRequest)
+ .getOmRequest()
+ .getUpdateGetDelegationTokenRequest();
+ }
+
+ @Test
+ public void testAddToDBBatch() throws IOException {
+ OMResponse omResponse = OMResponse.newBuilder()
+ .setCmdType(Type.GetDelegationToken)
+ .setStatus(Status.OK)
+ .setSuccess(true)
+ .setGetDelegationTokenResponse(
+ updateGetDelegationTokenRequest
+ .getGetDelegationTokenResponse())
+ .build();
+
+ long renewTime = 1000L;
+ OMGetDelegationTokenResponse getDelegationTokenResponse =
+ new OMGetDelegationTokenResponse(identifier, renewTime, omResponse);
+
+ getDelegationTokenResponse.addToDBBatch(omMetadataManager, batchOperation);
+ omMetadataManager.getStore().commitBatchOperation(batchOperation);
+
+ long rowNumInTable = 1;
+ long rowNumInTokenTable = omMetadataManager
+ .countRowsInTable(omMetadataManager.getDelegationTokenTable());
+ Assert.assertEquals(rowNumInTable, rowNumInTokenTable);
+
+ long renewTimeInTable = omMetadataManager.getDelegationTokenTable()
+ .get(identifier);
+ Assert.assertEquals(renewTime, renewTimeInTable);
+ }
+}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/package-info.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/package-info.java
new file mode 100644
index 0000000..1c197c6
--- /dev/null
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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 contains test classes for delegation token responses.
+ */
+package org.apache.hadoop.ozone.om.response.security;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]