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