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 RpcServerInterface getRpcServer() {
112     return rpcServer;
113   }
114 
115   public void setRpcServer(RpcServerInterface rpc) {
116     this.rpcServer = rpc;
117   }
118   
119   @Override
120   public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
121     return rit;
122   }
123 
124   @Override
125   public FlushRequester getFlushRequester() {
126     return null;
127   }
128 
129   @Override
130   public CompactionRequestor getCompactionRequester() {
131     return null;
132   }
133 
134   @Override
135   public CatalogTracker getCatalogTracker() {
136     return null;
137   }
138 
139   @Override
140   public ZooKeeperWatcher getZooKeeper() {
141     return zkw;
142   }
143 
144   public RegionServerAccounting getRegionServerAccounting() {
145     return null;
146   }
147 
148   @Override
149   public TableLockManager getTableLockManager() {
150     return new NullTableLockManager();
151   }
152 
153   @Override
154   public ServerName getServerName() {
155     return this.serverName;
156   }
157 
158   @Override
159   public Configuration getConfiguration() {
160     return zkw == null ? null : zkw.getConfiguration();
161   }
162 
163   @Override
164   public void abort(String why, Throwable e) {
165     this.abortRequested = true;
166     stop(why);
167   }
168 
169   @Override
170   public void stop(String why) {
171     //no-op
172   }
173 
174   @Override
175   public boolean isStopped() {
176     return false;
177   }
178 
179   @Override
180   public boolean isAborted() {
181     return this.abortRequested;
182   }
183 
184   @Override
185   public HFileSystem getFileSystem() {
186     return this.hfs;
187   }
188 
189   public void setFileSystem(FileSystem hfs) {
190     this.hfs = (HFileSystem)hfs;
191   }
192 
193   @Override
194   public Leases getLeases() {
195     return null;
196   }
197 
198   @Override
199   public HLog getWAL(HRegionInfo regionInfo) throws IOException {
200     return null;
201   }
202 
203   @Override
204   public ExecutorService getExecutorService() {
205     return null;
206   }
207 
208   @Override
209   public void updateRegionFavoredNodesMapping(String encodedRegionName,
210       List<org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName> favoredNodes) {
211   }
212 
213   @Override
214   public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName) {
215     return null;
216   }
217 
218   @Override
219   public Map<String, HRegion> getRecoveringRegions() {
220     // TODO Auto-generated method stub
221     return null;
222   }
223 
224   @Override
225   public int getPriority(RPCProtos.RequestHeader header, Message param) {
226     return 0;
227   }
228 
229   @Override
230   public ServerNonceManager getNonceManager() {
231     // TODO Auto-generated method stub
232     return null;
233   }
234 
235   @Override
236   public boolean reportRegionStateTransition(TransitionCode code, long openSeqNum,
237       HRegionInfo... hris) {
238     return false;
239   }
240 
241   @Override
242   public boolean reportRegionStateTransition(TransitionCode code,
243       HRegionInfo... hris) {
244     return false;
245   }
246 
247   @Override
248   public boolean registerService(Service service) {
249     // TODO Auto-generated method stub
250     return false;
251   }
252 
253   @Override
254   public HeapMemoryManager getHeapMemoryManager() {
255     return null;
256   }
257 
258   @Override
259   public double getCompactionPressure() {
260     return 0;
261   }
262 }