You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2021/05/06 19:14:06 UTC
[accumulo] branch main updated: Create MockServerContext for use in
unit tests (#2083)
This is an automated email from the ASF dual-hosted git repository.
mmiller pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 6a0a5ee Create MockServerContext for use in unit tests (#2083)
6a0a5ee is described below
commit 6a0a5ee30788f9f606166b8391b22c23d65071dc
Author: Mike Miller <mm...@apache.org>
AuthorDate: Thu May 6 15:13:54 2021 -0400
Create MockServerContext for use in unit tests (#2083)
---
.../apache/accumulo/server/MockServerContext.java | 55 ++++++++++++++++++++++
.../accumulo/server/client/BulkImporterTest.java | 11 +----
.../server/conf/NamespaceConfigurationTest.java | 10 +---
.../conf/ServerConfigurationFactoryTest.java | 16 +------
.../server/conf/TableConfigurationTest.java | 10 +---
.../server/conf/ZooConfigurationFactoryTest.java | 7 +--
.../master/balancer/TableLoadBalancerTest.java | 10 +---
.../server/problems/ProblemReportTest.java | 4 +-
.../security/handler/ZKAuthenticatorTest.java | 7 ++-
9 files changed, 72 insertions(+), 58 deletions(-)
diff --git a/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java b/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
new file mode 100644
index 0000000..64694e8
--- /dev/null
+++ b/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
@@ -0,0 +1,55 @@
+/*
+ * 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.accumulo.server;
+
+import static org.easymock.EasyMock.expect;
+
+import java.util.Properties;
+
+import org.apache.accumulo.core.conf.ConfigurationCopy;
+import org.apache.accumulo.core.conf.DefaultConfiguration;
+import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.core.crypto.CryptoServiceFactory;
+import org.easymock.EasyMock;
+
+/**
+ * Get a generic mocked ServerContext with junk for testing.
+ */
+public class MockServerContext {
+
+ public static ServerContext get() {
+ ServerContext sc = EasyMock.createMock(ServerContext.class);
+ ConfigurationCopy conf = new ConfigurationCopy(DefaultConfiguration.getInstance());
+ conf.set(Property.INSTANCE_VOLUMES, "file:///");
+ expect(sc.getConfiguration()).andReturn(conf).anyTimes();
+ expect(sc.getCryptoService()).andReturn(CryptoServiceFactory.newDefaultInstance()).anyTimes();
+ expect(sc.getProperties()).andReturn(new Properties()).anyTimes();
+ return sc;
+ }
+
+ public static ServerContext getWithZK(String instanceID, String zk, int zkTimeout) {
+ var sc = get();
+ expect(sc.getZooKeeperRoot()).andReturn("/accumulo/" + instanceID).anyTimes();
+ expect(sc.getInstanceID()).andReturn(instanceID).anyTimes();
+ expect(sc.getZooKeepers()).andReturn(zk).anyTimes();
+ expect(sc.getZooKeepersSessionTimeOut()).andReturn(zkTimeout).anyTimes();
+ return sc;
+ }
+
+}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
index 566596d..b0d17be 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
@@ -31,9 +31,6 @@ import java.util.TreeSet;
import org.apache.accumulo.core.clientImpl.ClientContext;
import org.apache.accumulo.core.clientImpl.TabletLocator;
import org.apache.accumulo.core.clientImpl.TabletLocator.TabletLocation;
-import org.apache.accumulo.core.conf.ConfigurationCopy;
-import org.apache.accumulo.core.conf.DefaultConfiguration;
-import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.crypto.CryptoServiceFactory;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
@@ -43,6 +40,7 @@ import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.file.FileOperations;
import org.apache.accumulo.core.file.FileSKVWriter;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManagerImpl;
import org.apache.hadoop.conf.Configuration;
@@ -113,12 +111,7 @@ public class BulkImporterTest {
public void testFindOverlappingTablets() throws Exception {
MockTabletLocator locator = new MockTabletLocator();
FileSystem fs = FileSystem.getLocal(new Configuration());
- ServerContext context = EasyMock.createMock(ServerContext.class);
- ConfigurationCopy conf = new ConfigurationCopy(DefaultConfiguration.getInstance());
- conf.set(Property.INSTANCE_VOLUMES, "file:///");
- EasyMock.expect(context.getConfiguration()).andReturn(conf).anyTimes();
- EasyMock.expect(context.getCryptoService()).andReturn(CryptoServiceFactory.newDefaultInstance())
- .anyTimes();
+ ServerContext context = MockServerContext.get();
EasyMock.replay(context);
String file = "target/testFile.rf";
fs.delete(new Path(file), true);
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
index fcf6d20..2b51c95 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
@@ -29,7 +29,6 @@ import static org.junit.Assert.assertNull;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.UUID;
import java.util.function.Predicate;
@@ -41,6 +40,7 @@ import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.fate.zookeeper.ZooCache;
import org.apache.accumulo.fate.zookeeper.ZooCacheFactory;
import org.apache.accumulo.fate.zookeeper.ZooUtil;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.junit.Before;
import org.junit.Test;
@@ -61,14 +61,8 @@ public class NamespaceConfigurationTest {
public void setUp() {
iid = UUID.randomUUID().toString();
- context = createMock(ServerContext.class);
+ context = MockServerContext.getWithZK(iid, ZOOKEEPERS, ZK_SESSION_TIMEOUT);
parent = createMock(AccumuloConfiguration.class);
-
- expect(context.getProperties()).andReturn(new Properties());
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/" + iid).anyTimes();
- expect(context.getInstanceID()).andReturn(iid).anyTimes();
- expect(context.getZooKeepers()).andReturn(ZOOKEEPERS).anyTimes();
- expect(context.getZooKeepersSessionTimeOut()).andReturn(ZK_SESSION_TIMEOUT).anyTimes();
replay(context);
c = new NamespaceConfiguration(NSID, context, parent);
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
index d753270..67c22ed 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
@@ -30,14 +30,13 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
-import java.util.Properties;
-
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.DefaultConfiguration;
import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.fate.zookeeper.ZooCache;
import org.apache.accumulo.fate.zookeeper.ZooCacheFactory;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.easymock.EasyMock;
import org.junit.After;
@@ -77,11 +76,7 @@ public class ServerConfigurationFactoryTest {
@Before
public void setUp() {
- context = createMock(ServerContext.class);
- expect(context.getInstanceID()).andReturn(IID).anyTimes();
- expect(context.getProperties()).andReturn(new Properties()).anyTimes();
- expect(context.getZooKeepers()).andReturn(ZK_HOST).anyTimes();
- expect(context.getZooKeepersSessionTimeOut()).andReturn(ZK_TIMEOUT).anyTimes();
+ context = MockServerContext.getWithZK(IID, ZK_HOST, ZK_TIMEOUT);
}
@After
@@ -89,10 +84,6 @@ public class ServerConfigurationFactoryTest {
ServerConfigurationFactory.clearCachedConfigurations();
}
- private void mockInstanceForConfig() {
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/" + IID).anyTimes();
- }
-
private void ready() {
replay(context);
scf = new ServerConfigurationFactory(context, siteConfig);
@@ -115,7 +106,6 @@ public class ServerConfigurationFactoryTest {
@Test
public void testGetConfiguration() {
- mockInstanceForConfig();
ready();
AccumuloConfiguration c = scf.getSystemConfiguration();
assertNotNull(c);
@@ -125,11 +115,9 @@ public class ServerConfigurationFactoryTest {
@Test
public void testGetNamespaceConfiguration() {
- mockInstanceForConfig();
ready();
NamespaceConfiguration c = scf.getNamespaceConfiguration(NSID);
assertEquals(NSID, c.getNamespaceId());
-
assertSame(c, scf.getNamespaceConfiguration(NSID));
}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
index 6b19a18..6b20d87 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
@@ -28,7 +28,6 @@ import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.UUID;
import java.util.function.Predicate;
@@ -38,6 +37,7 @@ import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.fate.zookeeper.ZooCache;
import org.apache.accumulo.fate.zookeeper.ZooCacheFactory;
import org.apache.accumulo.fate.zookeeper.ZooUtil;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.junit.Before;
import org.junit.Test;
@@ -57,13 +57,7 @@ public class TableConfigurationTest {
@Before
public void setUp() {
iid = UUID.randomUUID().toString();
- context = createMock(ServerContext.class);
-
- expect(context.getProperties()).andReturn(new Properties()).anyTimes();
- expect(context.getInstanceID()).andReturn(iid).anyTimes();
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/" + iid).anyTimes();
- expect(context.getZooKeepers()).andReturn(ZOOKEEPERS).anyTimes();
- expect(context.getZooKeepersSessionTimeOut()).andReturn(ZK_SESSION_TIMEOUT).anyTimes();
+ context = MockServerContext.getWithZK(iid, ZOOKEEPERS, ZK_SESSION_TIMEOUT);
replay(context);
parent = createMock(NamespaceConfiguration.class);
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/ZooConfigurationFactoryTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/ZooConfigurationFactoryTest.java
index c651b24..4b3cac6 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/ZooConfigurationFactoryTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/ZooConfigurationFactoryTest.java
@@ -30,6 +30,7 @@ import static org.junit.Assert.assertSame;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.fate.zookeeper.ZooCache;
import org.apache.accumulo.fate.zookeeper.ZooCacheFactory;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.apache.zookeeper.Watcher;
import org.junit.Before;
@@ -45,7 +46,7 @@ public class ZooConfigurationFactoryTest {
@Before
public void setUp() {
- context = createMock(ServerContext.class);
+ context = MockServerContext.getWithZK("iid", "localhost", 120000);
zcf = createMock(ZooCacheFactory.class);
zc = createMock(ZooCache.class);
zconff = new ZooConfigurationFactory();
@@ -54,10 +55,6 @@ public class ZooConfigurationFactoryTest {
@Test
public void testGetInstance() {
- expect(context.getZooKeeperRoot()).andReturn("zkroot").anyTimes();
- expect(context.getInstanceID()).andReturn("iid").anyTimes();
- expect(context.getZooKeepers()).andReturn("localhost").anyTimes();
- expect(context.getZooKeepersSessionTimeOut()).andReturn(120000).anyTimes();
replay(context);
expect(zcf.getZooCache(eq("localhost"), eq(120000), isA(Watcher.class))).andReturn(zc)
.anyTimes();
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
index e9c19fb..c0a9011 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
@@ -28,7 +28,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -43,6 +42,7 @@ import org.apache.accumulo.core.master.thrift.TabletServerStatus;
import org.apache.accumulo.core.metadata.TServerInstance;
import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
import org.apache.accumulo.core.util.HostAndPort;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.conf.TableConfiguration;
import org.apache.accumulo.server.master.state.TabletMigration;
@@ -134,15 +134,9 @@ public class TableLoadBalancerTest {
}
private ServerContext createMockContext() {
- ServerContext context = createMock(ServerContext.class);
final String instanceId =
UUID.nameUUIDFromBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}).toString();
- expect(context.getProperties()).andReturn(new Properties()).anyTimes();
- expect(context.getInstanceID()).andReturn(instanceId).anyTimes();
- expect(context.getZooKeepers()).andReturn("10.0.0.1:1234").anyTimes();
- expect(context.getZooKeepersSessionTimeOut()).andReturn(30_000).anyTimes();
- expect(context.getZooKeeperRoot()).andReturn("/root/").anyTimes();
- return context;
+ return MockServerContext.getWithZK(instanceId, "10.0.0.1:1234", 30_000);
}
@Test
diff --git a/server/base/src/test/java/org/apache/accumulo/server/problems/ProblemReportTest.java b/server/base/src/test/java/org/apache/accumulo/server/problems/ProblemReportTest.java
index 43a4ad3..1fe239c 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/problems/ProblemReportTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/problems/ProblemReportTest.java
@@ -41,6 +41,7 @@ import org.apache.accumulo.fate.zookeeper.ZooReaderWriter;
import org.apache.accumulo.fate.zookeeper.ZooUtil;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeMissingPolicy;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.apache.hadoop.io.Text;
import org.junit.Before;
@@ -57,9 +58,8 @@ public class ProblemReportTest {
@Before
public void setUp() {
- context = createMock(ServerContext.class);
+ context = MockServerContext.getWithZK("instance", "", 30_000);
zoorw = createMock(ZooReaderWriter.class);
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/instance");
expect(context.getZooReaderWriter()).andReturn(zoorw).anyTimes();
replay(context);
}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java b/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
index cf38070..be96256 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
@@ -39,6 +39,7 @@ import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.core.security.TablePermission;
import org.apache.accumulo.core.util.ByteArraySet;
import org.apache.accumulo.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.server.MockServerContext;
import org.apache.accumulo.server.ServerContext;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
@@ -132,10 +133,9 @@ public class ZKAuthenticatorTest {
byte[] newHash = ZKSecurityTool.createPass(rawPass.clone());
// mocking zk interaction
- ServerContext context = createMock(ServerContext.class);
+ ServerContext context = MockServerContext.getWithZK("example", "", 30_000);
ZooReaderWriter zr = createMock(ZooReaderWriter.class);
expect(context.getZooReaderWriter()).andReturn(zr).anyTimes();
- expect(context.getInstanceID()).andReturn("example").once();
ZooKeeper zk = createMock(ZooKeeper.class);
expect(zk.getChildren(EasyMock.anyObject(), EasyMock.anyObject()))
.andReturn(Arrays.asList(principal)).anyTimes();
@@ -166,10 +166,9 @@ public class ZKAuthenticatorTest {
byte[] outdatedHash = ZKSecurityTool.createOutdatedPass(rawPass);
// mocking zk interaction
- ServerContext context = createMock(ServerContext.class);
+ ServerContext context = MockServerContext.getWithZK("example", "", 30_000);
ZooReaderWriter zr = createMock(ZooReaderWriter.class);
expect(context.getZooReaderWriter()).andReturn(zr).anyTimes();
- expect(context.getInstanceID()).andReturn("example").once();
ZooKeeper zk = createMock(ZooKeeper.class);
expect(zk.getChildren(EasyMock.anyObject(), EasyMock.anyObject()))
.andReturn(Arrays.asList(principal)).anyTimes();