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