@Test
 public void canDoActionFailsOnCompat() {
   cmd = spy(createTestCommand(volumeId2, 0));
   prepareMocks(cmd);
   doReturn(UNSUPPORTED_VERSION).when(vdsGroup).getCompatibilityVersion();
   assertFalse(cmd.canDoAction());
   assertTrue(
       cmd.getReturnValue()
           .getCanDoActionMessages()
           .contains(EngineMessage.GLUSTER_TASKS_NOT_SUPPORTED_FOR_CLUSTER_LEVEL.toString()));
 }
  @Test
  public void executeCommandWhenFailed() {
    cmd = spy(createTestCommand(volumeId2, 0));
    prepareMocks(cmd);
    mockBackend(false, EngineError.GlusterVolumeRemoveBricksStartFailed);
    assertTrue(cmd.canDoAction());
    cmd.executeCommand();

    assertEquals(
        cmd.getAuditLogTypeValue(), AuditLogType.START_REMOVING_GLUSTER_VOLUME_BRICKS_FAILED);
  }
  @Test
  public void executeCommand() {
    cmd = spy(createTestCommand(volumeId2, 0));
    prepareMocks(cmd);
    mockBackend(true, null);
    assertTrue(cmd.canDoAction());
    cmd.executeCommand();

    verify(cmd).startSubStep();
    verify(cmd).handleTaskReturn(asyncTaskToBeReturned);
    verify(cmd).updateBricksWithTaskID(asyncTaskToBeReturned);
    assertEquals(cmd.getAuditLogTypeValue(), AuditLogType.START_REMOVING_GLUSTER_VOLUME_BRICKS);
  }
 @Test
 public void canDoActionFailsOnNull() {
   cmd = spy(createTestCommand(null, 0));
   prepareMocks(cmd);
   assertFalse(cmd.canDoAction());
 }
 @Test
 public void canDoActionFails() {
   cmd = spy(createTestCommand(volumeId1, 0));
   prepareMocks(cmd);
   assertFalse(cmd.canDoAction());
 }
 @Test
 public void canDoActionSucceeds() {
   cmd = spy(createTestCommand(volumeId2, 0));
   prepareMocks(cmd);
   assertTrue(cmd.canDoAction());
 }