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