1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase;
19
20 import java.io.IOException;
21 import java.net.InetSocketAddress;
22 import java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25 import java.util.Set;
26 import java.util.concurrent.ConcurrentSkipListMap;
27 import java.util.concurrent.atomic.AtomicBoolean;
28
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31 import org.apache.hadoop.conf.Configuration;
32 import org.apache.hadoop.fs.FileSystem;
33 import org.apache.hadoop.hbase.client.ClusterConnection;
34 import org.apache.hadoop.hbase.executor.ExecutorService;
35 import org.apache.hadoop.hbase.fs.HFileSystem;
36 import org.apache.hadoop.hbase.ipc.RpcServerInterface;
37 import org.apache.hadoop.hbase.master.TableLockManager;
38 import org.apache.hadoop.hbase.master.TableLockManager.NullTableLockManager;
39 import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;
40 import org.apache.hadoop.hbase.quotas.RegionServerQuotaManager;
41 import org.apache.hadoop.hbase.regionserver.CompactionRequestor;
42 import org.apache.hadoop.hbase.regionserver.FlushRequester;
43 import org.apache.hadoop.hbase.regionserver.HeapMemoryManager;
44 import org.apache.hadoop.hbase.regionserver.Leases;
45 import org.apache.hadoop.hbase.regionserver.MetricsRegionServer;
46 import org.apache.hadoop.hbase.regionserver.Region;
47 import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
48 import org.apache.hadoop.hbase.regionserver.RegionServerServices;
49 import org.apache.hadoop.hbase.regionserver.ServerNonceManager;
50 import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;
51 import org.apache.hadoop.hbase.util.Bytes;
52 import org.apache.hadoop.hbase.wal.WAL;
53 import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
54 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
55 import org.apache.zookeeper.KeeperException;
56
57 import com.google.protobuf.Service;
58
59
60
61
62 public class MockRegionServerServices implements RegionServerServices {
63 protected static final Log LOG = LogFactory.getLog(MockRegionServerServices.class);
64 private final Map<String, Region> regions = new HashMap<String, Region>();
65 private final ConcurrentSkipListMap<byte[], Boolean> rit =
66 new ConcurrentSkipListMap<byte[], Boolean>(Bytes.BYTES_COMPARATOR);
67 private HFileSystem hfs = null;
68 private final Configuration conf;
69 private ZooKeeperWatcher zkw = null;
70 private ServerName serverName = null;
71 private RpcServerInterface rpcServer = null;
72 private volatile boolean abortRequested;
73 private volatile boolean stopping = false;
74 private final AtomicBoolean running = new AtomicBoolean(true);
75
76 MockRegionServerServices(ZooKeeperWatcher zkw) {
77 this(zkw, null);
78 }
79
80 MockRegionServerServices(ZooKeeperWatcher zkw, ServerName serverName) {
81 this.zkw = zkw;
82 this.serverName = serverName;
83 this.conf = (zkw == null ? new Configuration() : zkw.getConfiguration());
84 }
85
86 MockRegionServerServices(){
87 this(null, null);
88 }
89
90 public MockRegionServerServices(Configuration conf) {
91 this.conf = conf;
92 }
93
94 @Override
95 public boolean removeFromOnlineRegions(Region r, ServerName destination) {
96 return this.regions.remove(r.getRegionInfo().getEncodedName()) != null;
97 }
98
99 @Override
100 public Region getFromOnlineRegions(String encodedRegionName) {
101 return this.regions.get(encodedRegionName);
102 }
103
104 public List<Region> getOnlineRegions(TableName tableName) throws IOException {
105 return null;
106 }
107
108 @Override
109 public Set<TableName> getOnlineTables() {
110 return null;
111 }
112
113 @Override
114 public List<Region> getOnlineRegions() {
115 return null;
116 }
117
118 @Override
119 public void addToOnlineRegions(Region r) {
120 this.regions.put(r.getRegionInfo().getEncodedName(), r);
121 }
122
123 @Override
124 public void postOpenDeployTasks(Region r) throws KeeperException, IOException {
125 addToOnlineRegions(r);
126 }
127
128 @Override
129 public void postOpenDeployTasks(PostOpenDeployContext context) throws KeeperException,
130 IOException {
131 addToOnlineRegions(context.getRegion());
132 }
133
134 @Override
135 public boolean isStopping() {
136 return this.stopping;
137 }
138
139 @Override
140 public RpcServerInterface getRpcServer() {
141 return rpcServer;
142 }
143
144 public void setRpcServer(RpcServerInterface rpc) {
145 this.rpcServer = rpc;
146 }
147
148 @Override
149 public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
150 return rit;
151 }
152
153 @Override
154 public FlushRequester getFlushRequester() {
155 return null;
156 }
157
158 @Override
159 public CompactionRequestor getCompactionRequester() {
160 return null;
161 }
162
163 @Override
164 public ClusterConnection getConnection() {
165 return null;
166 }
167
168 @Override
169 public MetaTableLocator getMetaTableLocator() {
170 return null;
171 }
172
173 @Override
174 public ZooKeeperWatcher getZooKeeper() {
175 return zkw;
176 }
177
178 @Override
179 public CoordinatedStateManager getCoordinatedStateManager() {
180 return null;
181 }
182
183 public RegionServerAccounting getRegionServerAccounting() {
184 return null;
185 }
186
187 @Override
188 public TableLockManager getTableLockManager() {
189 return new NullTableLockManager();
190 }
191
192 @Override
193 public RegionServerQuotaManager getRegionServerQuotaManager() {
194 return null;
195 }
196
197 @Override
198 public ServerName getServerName() {
199 return this.serverName;
200 }
201
202 @Override
203 public Configuration getConfiguration() {
204 return conf;
205 }
206
207 @Override
208 public void abort(String why, Throwable e) {
209 this.abortRequested = true;
210 stop(why);
211 }
212
213 @Override
214 public void stop(String why) {
215 this.stopping = true;
216 if (running.compareAndSet(true, false)) {
217 LOG.info("Shutting down due to request '" + why + "'");
218 }
219 }
220
221 @Override
222 public boolean isStopped() {
223 return !(running.get());
224 }
225
226 @Override
227 public boolean isAborted() {
228 return this.abortRequested;
229 }
230
231 @Override
232 public HFileSystem getFileSystem() {
233 return this.hfs;
234 }
235
236 public void setFileSystem(FileSystem hfs) {
237 this.hfs = (HFileSystem)hfs;
238 }
239
240 @Override
241 public Leases getLeases() {
242 return null;
243 }
244
245 @Override
246 public WAL getWAL(HRegionInfo regionInfo) throws IOException {
247 return null;
248 }
249
250 @Override
251 public ExecutorService getExecutorService() {
252 return null;
253 }
254
255 @Override
256 public ChoreService getChoreService() {
257 return null;
258 }
259
260 @Override
261 public void updateRegionFavoredNodesMapping(String encodedRegionName,
262 List<org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName> favoredNodes) {
263 }
264
265 @Override
266 public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName) {
267 return null;
268 }
269
270 @Override
271 public Map<String, Region> getRecoveringRegions() {
272
273 return null;
274 }
275
276 @Override
277 public ServerNonceManager getNonceManager() {
278
279 return null;
280 }
281
282 @Override
283 public boolean reportRegionStateTransition(TransitionCode code, long openSeqNum,
284 HRegionInfo... hris) {
285 return false;
286 }
287
288 @Override
289 public boolean reportRegionStateTransition(TransitionCode code,
290 HRegionInfo... hris) {
291 return false;
292 }
293
294 @Override
295 public boolean reportRegionStateTransition(RegionStateTransitionContext context) {
296 return false;
297 }
298
299 @Override
300 public boolean registerService(Service service) {
301
302 return false;
303 }
304
305 @Override
306 public HeapMemoryManager getHeapMemoryManager() {
307 return null;
308 }
309
310 @Override
311 public double getCompactionPressure() {
312 return 0;
313 }
314
315 @Override
316 public ThroughputController getFlushThroughputController() {
317 return null;
318 }
319
320 @Override
321 public double getFlushPressure() {
322 return 0;
323 }
324
325 @Override
326 public MetricsRegionServer getMetrics() {
327 return null;
328 }
329
330 @Override
331 public void unassign(byte[] regionName) throws IOException {
332 }
333 }