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