001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hbase.master;
019
020import static org.mockito.Mockito.mock;
021
022import java.io.IOException;
023import java.util.List;
024import java.util.concurrent.Semaphore;
025import org.apache.hadoop.conf.Configuration;
026import org.apache.hadoop.fs.FileSystem;
027import org.apache.hadoop.hbase.ChoreService;
028import org.apache.hadoop.hbase.CoordinatedStateManager;
029import org.apache.hadoop.hbase.ServerName;
030import org.apache.hadoop.hbase.TableDescriptors;
031import org.apache.hadoop.hbase.TableName;
032import org.apache.hadoop.hbase.client.AsyncClusterConnection;
033import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
034import org.apache.hadoop.hbase.client.Connection;
035import org.apache.hadoop.hbase.client.MasterSwitchType;
036import org.apache.hadoop.hbase.client.NormalizeTableFilterParams;
037import org.apache.hadoop.hbase.client.RegionInfo;
038import org.apache.hadoop.hbase.client.TableDescriptor;
039import org.apache.hadoop.hbase.executor.ExecutorService;
040import org.apache.hadoop.hbase.favored.FavoredNodesManager;
041import org.apache.hadoop.hbase.master.assignment.AssignmentManager;
042import org.apache.hadoop.hbase.master.janitor.CatalogJanitor;
043import org.apache.hadoop.hbase.master.locking.LockManager;
044import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerManager;
045import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
046import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;
047import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;
048import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
049import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;
050import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;
051import org.apache.hadoop.hbase.procedure2.LockedResource;
052import org.apache.hadoop.hbase.procedure2.Procedure;
053import org.apache.hadoop.hbase.procedure2.ProcedureEvent;
054import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;
055import org.apache.hadoop.hbase.quotas.MasterQuotaManager;
056import org.apache.hadoop.hbase.replication.ReplicationException;
057import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
058import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;
059import org.apache.hadoop.hbase.replication.SyncReplicationState;
060import org.apache.hadoop.hbase.replication.master.ReplicationLogCleanerBarrier;
061import org.apache.hadoop.hbase.rsgroup.RSGroupInfoManager;
062import org.apache.hadoop.hbase.security.access.AccessChecker;
063import org.apache.hadoop.hbase.security.access.ZKPermissionWatcher;
064import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
065
066import org.apache.hbase.thirdparty.com.google.protobuf.Service;
067
068public class MockNoopMasterServices implements MasterServices {
069  private final Configuration conf;
070  private final MetricsMaster metricsMaster;
071
072  public MockNoopMasterServices(final Configuration conf) {
073    this.conf = conf;
074    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(mock(HMaster.class)));
075  }
076
077  @Override
078  public void checkTableModifiable(TableName tableName) throws IOException {
079    // no-op
080  }
081
082  @Override
083  public long truncateRegion(RegionInfo regionInfo, long nonceGroup, long nonce)
084    throws IOException {
085    return 0;
086  }
087
088  @Override
089  public long createTable(final TableDescriptor desc, final byte[][] splitKeys,
090    final long nonceGroup, final long nonce) throws IOException {
091    // no-op
092    return -1;
093  }
094
095  @Override
096  public long createSystemTable(final TableDescriptor tableDescriptor) throws IOException {
097    return -1;
098  }
099
100  @Override
101  public AssignmentManager getAssignmentManager() {
102    return null;
103  }
104
105  @Override
106  public ExecutorService getExecutorService() {
107    return null;
108  }
109
110  @Override
111  public ChoreService getChoreService() {
112    return null;
113  }
114
115  @Override
116  public CatalogJanitor getCatalogJanitor() {
117    return null;
118  }
119
120  @Override
121  public MasterFileSystem getMasterFileSystem() {
122    return null;
123  }
124
125  @Override
126  public MasterWalManager getMasterWalManager() {
127    return null;
128  }
129
130  @Override
131  public MasterCoprocessorHost getMasterCoprocessorHost() {
132    return null;
133  }
134
135  @Override
136  public MasterQuotaManager getMasterQuotaManager() {
137    return null;
138  }
139
140  @Override
141  public RegionNormalizerManager getRegionNormalizerManager() {
142    return null;
143  }
144
145  @Override
146  public ProcedureExecutor<MasterProcedureEnv> getMasterProcedureExecutor() {
147    return null;
148  }
149
150  @Override
151  public MetricsMaster getMasterMetrics() {
152    return metricsMaster;
153  }
154
155  @Override
156  public ServerManager getServerManager() {
157    return null;
158  }
159
160  @Override
161  public ZKWatcher getZooKeeper() {
162    return null;
163  }
164
165  @Override
166  public CoordinatedStateManager getCoordinatedStateManager() {
167    return null;
168  }
169
170  @Override
171  public Connection getConnection() {
172    return null;
173  }
174
175  @Override
176  public Configuration getConfiguration() {
177    return conf;
178  }
179
180  @Override
181  public ServerName getServerName() {
182    return ServerName.valueOf("mock.master", 12345, 1);
183  }
184
185  @Override
186  public void abort(String why, Throwable e) {
187    // no-op
188  }
189
190  @Override
191  public boolean isAborted() {
192    return false;
193  }
194
195  private boolean stopped = false;
196
197  @Override
198  public void stop(String why) {
199    stopped = true;
200  }
201
202  @Override
203  public boolean isStopping() {
204    return stopped;
205  }
206
207  @Override
208  public boolean isStopped() {
209    return stopped;
210  }
211
212  @Override
213  public TableDescriptors getTableDescriptors() {
214    return null;
215  }
216
217  @Override
218  public boolean registerService(Service instance) {
219    return false;
220  }
221
222  @Override
223  public boolean abortProcedure(final long procId, final boolean mayInterruptIfRunning)
224    throws IOException {
225    return false; // To change body of implemented methods use File | Settings | File Templates.
226  }
227
228  @Override
229  public List<Procedure<?>> getProcedures() throws IOException {
230    return null; // To change body of implemented methods use File | Settings | File Templates.
231  }
232
233  @Override
234  public List<LockedResource> getLocks() throws IOException {
235    return null;
236  }
237
238  @Override
239  public List<TableDescriptor> listTableDescriptorsByNamespace(String name) throws IOException {
240    return null; // To change body of implemented methods use File | Settings | File Templates.
241  }
242
243  @Override
244  public List<TableName> listTableNamesByNamespace(String name) throws IOException {
245    return null;
246  }
247
248  @Override
249  public long deleteTable(final TableName tableName, final long nonceGroup, final long nonce)
250    throws IOException {
251    return -1;
252  }
253
254  @Override
255  public long truncateTable(final TableName tableName, final boolean preserveSplits,
256    final long nonceGroup, final long nonce) throws IOException {
257    return -1;
258  }
259
260  @Override
261  public long modifyTable(final TableName tableName, final TableDescriptor descriptor,
262    final long nonceGroup, final long nonce) throws IOException {
263    return -1;
264  }
265
266  @Override
267  public long modifyTable(TableName tableName, TableDescriptor descriptor, long nonceGroup,
268    long nonce, boolean reopenRegions) throws IOException {
269    return -1;
270  }
271
272  @Override
273  public long enableTable(final TableName tableName, final long nonceGroup, final long nonce)
274    throws IOException {
275    return -1;
276  }
277
278  @Override
279  public long disableTable(TableName tableName, final long nonceGroup, final long nonce)
280    throws IOException {
281    return -1;
282  }
283
284  @Override
285  public long addColumn(final TableName tableName, final ColumnFamilyDescriptor columnDescriptor,
286    final long nonceGroup, final long nonce) throws IOException {
287    return -1;
288  }
289
290  @Override
291  public long modifyColumn(final TableName tableName, final ColumnFamilyDescriptor descriptor,
292    final long nonceGroup, final long nonce) throws IOException {
293    return -1;
294  }
295
296  @Override
297  public long deleteColumn(final TableName tableName, final byte[] columnName,
298    final long nonceGroup, final long nonce) throws IOException {
299    return -1;
300  }
301
302  @Override
303  public long mergeRegions(final RegionInfo[] regionsToMerge, final boolean forcible,
304    final long nonceGroup, final long nonce) throws IOException {
305    return -1;
306  }
307
308  @Override
309  public long splitRegion(final RegionInfo regionInfo, final byte[] splitRow, final long nonceGroup,
310    final long nonce) throws IOException {
311    return -1;
312  }
313
314  @Override
315  public TableStateManager getTableStateManager() {
316    return mock(TableStateManager.class);
317  }
318
319  @Override
320  public boolean isActiveMaster() {
321    return true;
322  }
323
324  @Override
325  public boolean isInitialized() {
326    return false;
327  }
328
329  @Override
330  public boolean isInMaintenanceMode() {
331    return false;
332  }
333
334  @Override
335  public boolean skipRegionManagementAction(String action) {
336    return false;
337  }
338
339  @Override
340  public long getLastMajorCompactionTimestamp(TableName table) throws IOException {
341    return 0;
342  }
343
344  @Override
345  public long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException {
346    return 0;
347  }
348
349  @Override
350  public ClusterSchema getClusterSchema() {
351    return null;
352  }
353
354  @Override
355  public LoadBalancer getLoadBalancer() {
356    return null;
357  }
358
359  @Override
360  public FavoredNodesManager getFavoredNodesManager() {
361    return null;
362  }
363
364  @Override
365  public SnapshotManager getSnapshotManager() {
366    return null;
367  }
368
369  @Override
370  public MasterProcedureManagerHost getMasterProcedureManagerHost() {
371    return null;
372  }
373
374  @Override
375  public boolean isSplitOrMergeEnabled(MasterSwitchType switchType) {
376    return false;
377  }
378
379  @Override
380  public long addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)
381    throws ReplicationException {
382    return 0;
383  }
384
385  @Override
386  public long removeReplicationPeer(String peerId) throws ReplicationException {
387    return 0;
388  }
389
390  @Override
391  public long enableReplicationPeer(String peerId) throws ReplicationException, IOException {
392    return 0;
393  }
394
395  @Override
396  public long disableReplicationPeer(String peerId) throws ReplicationException, IOException {
397    return 0;
398  }
399
400  @Override
401  public ReplicationPeerConfig getReplicationPeerConfig(String peerId)
402    throws ReplicationException, IOException {
403    return null;
404  }
405
406  @Override
407  public long updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)
408    throws ReplicationException, IOException {
409    return 0;
410  }
411
412  @Override
413  public List<ReplicationPeerDescription> listReplicationPeers(String regex)
414    throws ReplicationException, IOException {
415    return null;
416  }
417
418  @Override
419  public LockManager getLockManager() {
420    return null;
421  }
422
423  @Override
424  public String getRegionServerVersion(ServerName sn) {
425    return "0.0.0";
426  }
427
428  @Override
429  public void checkIfShouldMoveSystemRegionAsync() {
430  }
431
432  @Override
433  public String getClientIdAuditPrefix() {
434    return null;
435  }
436
437  @Override
438  public ProcedureEvent<?> getInitializedEvent() {
439    return null;
440  }
441
442  @Override
443  public FileSystem getFileSystem() {
444    return null;
445  }
446
447  @Override
448  public Connection createConnection(Configuration conf) throws IOException {
449    return null;
450  }
451
452  @Override
453  public ReplicationPeerManager getReplicationPeerManager() {
454    return null;
455  }
456
457  @Override
458  public boolean isClusterUp() {
459    return true;
460  }
461
462  public long transitReplicationPeerSyncReplicationState(String peerId,
463    SyncReplicationState clusterState) throws ReplicationException, IOException {
464    return 0;
465  }
466
467  @Override
468  public SyncReplicationReplayWALManager getSyncReplicationReplayWALManager() {
469    return null;
470  }
471
472  @Override
473  public AccessChecker getAccessChecker() {
474    return null;
475  }
476
477  @Override
478  public ZKPermissionWatcher getZKPermissionWatcher() {
479    return null;
480  }
481
482  @Override
483  public List<RegionPlan> executeRegionPlansWithThrottling(List<RegionPlan> plans) {
484    return null;
485  }
486
487  @Override
488  public AsyncClusterConnection getAsyncClusterConnection() {
489    return null;
490  }
491
492  @Override
493  public void runReplicationBarrierCleaner() {
494  }
495
496  @Override
497  public RSGroupInfoManager getRSGroupInfoManager() {
498    return null;
499  }
500
501  @Override
502  public boolean isBalancerOn() {
503    return false;
504  }
505
506  @Override
507  public boolean normalizeRegions(NormalizeTableFilterParams ntfp, boolean isHighPriority) {
508    return false;
509  }
510
511  @Override
512  public MetaLocationSyncer getMetaLocationSyncer() {
513    return null;
514  }
515
516  @Override
517  public void flushMasterStore() {
518  }
519
520  @Override
521  public long modifyTableStoreFileTracker(TableName tableName, String dstSFT, long nonceGroup,
522    long nonce) throws IOException {
523    return -1;
524  }
525
526  @Override
527  public long modifyColumnStoreFileTracker(TableName tableName, byte[] family, String dstSFT,
528    long nonceGroup, long nonce) throws IOException {
529    return -1;
530  }
531
532  @Override
533  public boolean replicationPeerModificationSwitch(boolean on) throws IOException {
534    return false;
535  }
536
537  @Override
538  public boolean isReplicationPeerModificationEnabled() {
539    return false;
540  }
541
542  @Override
543  public ReplicationLogCleanerBarrier getReplicationLogCleanerBarrier() {
544    return null;
545  }
546
547  @Override
548  public Semaphore getSyncReplicationPeerLock() {
549    return null;
550  }
551
552  @Override
553  public long flushTable(TableName tableName, List<byte[]> columnFamilies, long nonceGroup,
554    long nonce) throws IOException {
555    return 0;
556  }
557}