From b6ee64653e338969312d4c7da52f16e1f1e4ab43 Mon Sep 17 00:00:00 2001 From: cxorm Date: Sat, 4 Apr 2020 04:32:59 +0800 Subject: [PATCH 1/3] Add unit tests for OMGetDelegationToken Request and Response --- .../TestOMDelegationTokenRequest.java | 69 ++++++ .../TestOMGetDelegationTokenRequest.java | 220 ++++++++++++++++++ .../om/request/security/package-info.java | 23 ++ .../TestOMDelegationTokenResponse.java | 50 ++++ .../TestOMGetDelegationTokenResponse.java | 95 ++++++++ .../om/response/security/package-info.java | 21 ++ 6 files changed, 478 insertions(+) create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMDelegationTokenRequest.java create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMGetDelegationTokenRequest.java create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/package-info.java create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMDelegationTokenResponse.java create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMGetDelegationTokenResponse.java create mode 100644 hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/package-info.java 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 000000000000..4973aeb9ded3 --- /dev/null +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMDelegationTokenRequest.java @@ -0,0 +1,69 @@ +/* + * 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.ozone.om.request.security; + +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 OzoneConfiguration 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(); + conf.set(OZONE_OM_DB_DIRS, folder.newFolder().getAbsolutePath()); + omMetadataManager = new OmMetadataManagerImpl(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 000000000000..4211dfdaee21 --- /dev/null +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/security/TestOMGetDelegationTokenRequest.java @@ -0,0 +1,220 @@ +/* + * 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.ozone.om.request.security; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.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 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); + secretManager = ozoneManager.getDelegationTokenMgr(); + + 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"); + + 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 responseRenewTime = Optional.ofNullable( + 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 responseRenewTime = Optional.ofNullable( + omMetadataManager.getDelegationTokenTable().get(identifier)); + Assert.assertEquals(Optional.empty(), responseRenewTime); + + Assert.assertEquals(Status.OK, clientResponse.getOMResponse().getStatus()); + } + + @Test + public void testValidateAndUpdateCacheWithException() throws Exception { + /* Create a token that causes InvalidProtocolBufferException by + * OzoneTokenIdentifier#readProtoBuf(). */ + Token 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 000000000000..4a72a86c81fa --- /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 000000000000..84ced2de16e9 --- /dev/null +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/security/TestOMDelegationTokenResponse.java @@ -0,0 +1,50 @@ +/* + * 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.ozone.om.response.security; + +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 OzoneConfiguration conf; + protected OMMetadataManager omMetadataManager; + protected BatchOperation batchOperation; + + @Before + public void setup() throws IOException { + conf = new OzoneConfiguration(); + conf.set(OMConfigKeys.OZONE_OM_DB_DIRS, + folder.newFolder().getAbsolutePath()); + omMetadataManager = new OmMetadataManagerImpl(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 000000000000..df90d7ec8931 --- /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 + *

+ * 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.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 000000000000..1c197c6f4dc9 --- /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 + *

+ * 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 responses. + */ +package org.apache.hadoop.ozone.om.response.security; From e1e0da7682bdcb769b68c2b6c8d991b65691919c Mon Sep 17 00:00:00 2001 From: cxorm Date: Wed, 29 Apr 2020 18:06:15 +0800 Subject: [PATCH 2/3] use interface ConfigurationSource --- .../om/request/security/TestOMDelegationTokenRequest.java | 8 +++++--- .../response/security/TestOMDelegationTokenResponse.java | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) 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 index 4973aeb9ded3..08c95f6e8f2e 100644 --- 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 @@ -18,6 +18,7 @@ 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; @@ -44,7 +45,7 @@ public class TestOMDelegationTokenRequest { protected OzoneManager ozoneManager; protected OMMetrics omMetrics; protected OMMetadataManager omMetadataManager; - protected OzoneConfiguration conf; + protected ConfigurationSource conf; // Just setting OzoneManagerDoubleBuffer which does nothing. protected OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper = @@ -57,8 +58,9 @@ public void setup() throws Exception { ozoneManager = Mockito.mock(OzoneManager.class); conf = new OzoneConfiguration(); - conf.set(OZONE_OM_DB_DIRS, folder.newFolder().getAbsolutePath()); - omMetadataManager = new OmMetadataManagerImpl(conf); + ((OzoneConfiguration) conf) + .set(OZONE_OM_DB_DIRS, folder.newFolder().getAbsolutePath()); + omMetadataManager = new OmMetadataManagerImpl((OzoneConfiguration) conf); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); } 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 index 84ced2de16e9..816e696ea0c1 100644 --- 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 @@ -18,6 +18,7 @@ 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; @@ -35,16 +36,16 @@ public class TestOMDelegationTokenResponse { @Rule public TemporaryFolder folder = new TemporaryFolder(); - protected OzoneConfiguration conf; + protected ConfigurationSource conf; protected OMMetadataManager omMetadataManager; protected BatchOperation batchOperation; @Before public void setup() throws IOException { conf = new OzoneConfiguration(); - conf.set(OMConfigKeys.OZONE_OM_DB_DIRS, + ((OzoneConfiguration) conf).set(OMConfigKeys.OZONE_OM_DB_DIRS, folder.newFolder().getAbsolutePath()); - omMetadataManager = new OmMetadataManagerImpl(conf); + omMetadataManager = new OmMetadataManagerImpl((OzoneConfiguration) conf); batchOperation = omMetadataManager.getStore().initBatchOperation(); } } From 6648e07693196b658b8c8809e1a5f37b6489c11f Mon Sep 17 00:00:00 2001 From: cxorm Date: Thu, 30 Apr 2020 14:07:24 +0800 Subject: [PATCH 3/3] fix test --- .../security/TestOMGetDelegationTokenRequest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 index 4211dfdaee21..df0fcb9fd19a 100644 --- 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 @@ -20,7 +20,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.Optional; +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; @@ -61,7 +61,6 @@ public class TestOMGetDelegationTokenRequest extends public void setupGetDelegationToken() { secretManager = Mockito.mock(OzoneDelegationTokenSecretManager.class); when(ozoneManager.getDelegationTokenMgr()).thenReturn(secretManager); - secretManager = ozoneManager.getDelegationTokenMgr(); setupToken(); setupRequest(); @@ -98,6 +97,7 @@ private void setupToken() { tester = new Text("tester"); identifier = new OzoneTokenIdentifier(tester, tester, tester); identifier.setOmCertSerialId("certID"); + identifier.setOmServiceId(""); byte[] password = RandomStringUtils .randomAlphabetic(10) @@ -176,7 +176,8 @@ public void testValidateAndUpdateCacheWithNonNullToken() throws Exception { .thenReturn(renewTime); OMClientResponse clientResponse = setValidateAndUpdateCache(); - Optional responseRenewTime = Optional.ofNullable( + + Optional responseRenewTime = Optional.fromNullable( omMetadataManager.getDelegationTokenTable().get(identifier)); Assert.assertEquals(Optional.of(renewTime), responseRenewTime); @@ -194,9 +195,9 @@ public void testValidateAndUpdateCacheWithNullToken() throws Exception { .getGetDelegationTokenResponse().hasResponse(); Assert.assertFalse(hasResponse); - Optional responseRenewTime = Optional.ofNullable( + Optional responseRenewTime = Optional.fromNullable( omMetadataManager.getDelegationTokenTable().get(identifier)); - Assert.assertEquals(Optional.empty(), responseRenewTime); + Assert.assertEquals(Optional.absent(), responseRenewTime); Assert.assertEquals(Status.OK, clientResponse.getOMResponse().getStatus()); }