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