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