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.concurrent.ConcurrentSkipListMap;
26  
27  import com.google.protobuf.Message;
28  import com.google.protobuf.Service;
29  
30  import org.apache.hadoop.conf.Configuration;
31  import org.apache.hadoop.fs.FileSystem;
32  import org.apache.hadoop.hbase.catalog.CatalogTracker;
33  import org.apache.hadoop.hbase.executor.ExecutorService;
34  import org.apache.hadoop.hbase.fs.HFileSystem;
35  import org.apache.hadoop.hbase.ipc.RpcServerInterface;
36  import org.apache.hadoop.hbase.master.TableLockManager;
37  import org.apache.hadoop.hbase.master.TableLockManager.NullTableLockManager;
38  import org.apache.hadoop.hbase.protobuf.generated.RPCProtos;
39  import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;
40  import org.apache.hadoop.hbase.regionserver.CompactionRequestor;
41  import org.apache.hadoop.hbase.regionserver.FlushRequester;
42  import org.apache.hadoop.hbase.regionserver.HRegion;
43  import org.apache.hadoop.hbase.regionserver.HeapMemoryManager;
44  import org.apache.hadoop.hbase.regionserver.Leases;
45  import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
46  import org.apache.hadoop.hbase.regionserver.RegionServerServices;
47  import org.apache.hadoop.hbase.regionserver.ServerNonceManager;
48  import org.apache.hadoop.hbase.regionserver.wal.HLog;
49  import org.apache.hadoop.hbase.util.Bytes;
50  import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
51  import org.apache.zookeeper.KeeperException;
52  
53  /**
54   * Basic mock region server services.  Should only be instantiated by HBaseTestingUtility.b
55   */
56  class MockRegionServerServices implements RegionServerServices {
57    private final Map<String, HRegion> regions = new HashMap<String, HRegion>();
58    private boolean stopping = false;
59    private final ConcurrentSkipListMap<byte[], Boolean> rit =
60      new ConcurrentSkipListMap<byte[], Boolean>(Bytes.BYTES_COMPARATOR);
61    private HFileSystem hfs = null;
62    private ZooKeeperWatcher zkw = null;
63    private ServerName serverName = null;
64    private RpcServerInterface rpcServer = null;
65    private volatile boolean abortRequested;
66  
67    MockRegionServerServices(ZooKeeperWatcher zkw) {
68      this.zkw = zkw;
69    }
70  
71    MockRegionServerServices(ZooKeeperWatcher zkw, ServerName serverName) {
72      this.zkw = zkw;
73      this.serverName = serverName;
74    }
75  
76    MockRegionServerServices(){
77      this(null);
78    }
79  
80    @Override
81    public boolean removeFromOnlineRegions(HRegion r, ServerName destination) {
82      return this.regions.remove(r.getRegionInfo().getEncodedName()) != null;
83    }
84  
85    @Override
86    public HRegion getFromOnlineRegions(String encodedRegionName) {
87      return this.regions.get(encodedRegionName);
88    }
89  
90    public List<HRegion> getOnlineRegions(TableName tableName) throws IOException {
91      return null;
92    }
93  
94    @Override
95    public void addToOnlineRegions(HRegion r) {
96      this.regions.put(r.getRegionInfo().getEncodedName(), r);
97    }
98  
99    @Override
100   public void postOpenDeployTasks(HRegion r, CatalogTracker ct)
101       throws KeeperException, IOException {
102     addToOnlineRegions(r);
103   }
104 
105   @Override
106   public boolean isStopping() {
107     return this.stopping;
108   }
109 
110   @Override
111   public void postOpenDeployTasks(PostOpenDeployContext context, CatalogTracker ct)
112       throws KeeperException, IOException {
113   }
114 
115   @Override
116   public RpcServerInterface getRpcServer() {
117     return rpcServer;
118   }
119 
120   public void setRpcServer(RpcServerInterface rpc) {
121     this.rpcServer = rpc;
122   }
123   
124   @Override
125   public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
126     return rit;
127   }
128 
129   @Override
130   public FlushRequester getFlushRequester() {
131     return null;
132   }
133 
134   @Override
135   public CompactionRequestor getCompactionRequester() {
136     return null;
137   }
138 
139   @Override
140   public CatalogTracker getCatalogTracker() {
141     return null;
142   }
143 
144   @Override
145   public ZooKeeperWatcher getZooKeeper() {
146     return zkw;
147   }
148 
149   public RegionServerAccounting getRegionServerAccounting() {
150     return null;
151   }
152 
153   @Override
154   public TableLockManager getTableLockManager() {
155     return new NullTableLockManager();
156   }
157 
158   @Override
159   public ServerName getServerName() {
160     return this.serverName;
161   }
162 
163   @Override
164   public Configuration getConfiguration() {
165     return zkw == null ? null : zkw.getConfiguration();
166   }
167 
168   @Override
169   public void abort(String why, Throwable e) {
170     this.abortRequested = true;
171     stop(why);
172   }
173 
174   @Override
175   public void stop(String why) {
176     //no-op
177   }
178 
179   @Override
180   public boolean isStopped() {
181     return false;
182   }
183 
184   @Override
185   public boolean isAborted() {
186     return this.abortRequested;
187   }
188 
189   @Override
190   public HFileSystem getFileSystem() {
191     return this.hfs;
192   }
193 
194   public void setFileSystem(FileSystem hfs) {
195     this.hfs = (HFileSystem)hfs;
196   }
197 
198   @Override
199   public Leases getLeases() {
200     return null;
201   }
202 
203   @Override
204   public HLog getWAL(HRegionInfo regionInfo) throws IOException {
205     return null;
206   }
207 
208   @Override
209   public ExecutorService getExecutorService() {
210     return null;
211   }
212 
213   @Override
214   public void updateRegionFavoredNodesMapping(String encodedRegionName,
215       List<org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName> favoredNodes) {
216   }
217 
218   @Override
219   public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName) {
220     return null;
221   }
222 
223   @Override
224   public Map<String, HRegion> getRecoveringRegions() {
225     // TODO Auto-generated method stub
226     return null;
227   }
228 
229   @Override
230   public int getPriority(RPCProtos.RequestHeader header, Message param) {
231     return 0;
232   }
233 
234   @Override
235   public ServerNonceManager getNonceManager() {
236     // TODO Auto-generated method stub
237     return null;
238   }
239 
240   @Override
241   public boolean reportRegionStateTransition(TransitionCode code, long openSeqNum,
242       HRegionInfo... hris) {
243     return false;
244   }
245 
246   @Override
247   public boolean reportRegionStateTransition(TransitionCode code,
248       HRegionInfo... hris) {
249     return false;
250   }
251 
252   @Override
253   public boolean reportRegionStateTransition(RegionStateTransitionContext context) {
254     return false;
255   }
256 
257   @Override
258   public boolean registerService(Service service) {
259     // TODO Auto-generated method stub
260     return false;
261   }
262 
263   @Override
264   public HeapMemoryManager getHeapMemoryManager() {
265     return null;
266   }
267 
268   @Override
269   public double getCompactionPressure() {
270     return 0;
271   }
272 }