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}