View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
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   * Basic mock region server services.  Should only be instantiated by HBaseTestingUtility.b
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     // TODO Auto-generated method stub
273     return null;
274   }
275 
276   @Override
277   public ServerNonceManager getNonceManager() {
278     // TODO Auto-generated method stub
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     // TODO Auto-generated method stub
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 }