package org.ovirt.engine.api.restapi.resource.gluster;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
import org.ovirt.engine.core.common.businessentities.gluster.BrickDetails;
import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
import org.ovirt.engine.core.common.businessentities.gluster.MallInfo;
import org.ovirt.engine.core.common.businessentities.gluster.MemoryStatus;
import org.ovirt.engine.core.common.job.JobExecutionStatus;
import org.ovirt.engine.core.compat.Guid;
public class GlusterTestHelper {
protected static final Guid[] GUIDS = { new Guid("00000000-0000-0000-0000-000000000000"),
new Guid("11111111-1111-1111-1111-111111111111"),
new Guid("22222222-2222-2222-2222-222222222222"),
new Guid("33333333-3333-3333-3333-333333333333") };
protected static final Guid clusterId = GUIDS[0];
protected static final Guid serverId = GUIDS[1];
protected static final Guid volumeId = GUIDS[2];
protected static final Guid brickId = GUIDS[0];
protected static final String brickDir = "/export/vol1/brick1";
protected static final String brickName = "server:" + brickDir;
protected static final String volumeName = "AnyVolume";
protected static final Integer BRICK_PORT = 49152;
protected static final String BRICK_MNT_OPT = "rw";
protected GlusterBrickEntity getBrickEntity(int index, boolean hasDetails) {
GlusterBrickEntity entity = mock(GlusterBrickEntity.class);
when(entity.getId()).thenReturn(GUIDS[index]);
when(entity.getServerId()).thenReturn(serverId);
when(entity.getBrickDirectory()).thenReturn(GlusterTestHelper.brickDir);
when(entity.getQualifiedName()).thenReturn(GlusterTestHelper.brickName);
when(entity.getVolumeId()).thenReturn(volumeId);
if (hasDetails) {
BrickDetails brickDetails = mock(BrickDetails.class);
BrickProperties brickProps = mock(BrickProperties.class);
MemoryStatus memStatus = mock(MemoryStatus.class);
MallInfo mallInfo = mock(MallInfo.class);
when(mallInfo.getArena()).thenReturn(888);
when(brickProps.getMntOptions()).thenReturn(GlusterTestHelper.BRICK_MNT_OPT);
when(brickProps.getPort()).thenReturn(GlusterTestHelper.BRICK_PORT);
when(brickDetails.getMemoryStatus()).thenReturn(memStatus);
when(memStatus.getMallInfo()).thenReturn(mallInfo);
when(brickDetails.getBrickProperties()).thenReturn(brickProps);
when(entity.getBrickDetails()).thenReturn(brickDetails);
}
return entity;
}
protected GlusterVolumeEntity getVolumeEntity(int index) {
List<GlusterVolumeEntity> volumesList = new ArrayList<>();
GlusterVolumeEntity entity1 = mock(GlusterVolumeEntity.class);
when(entity1.getId()).thenReturn(volumeId);
when(entity1.getName()).thenReturn(volumeName);
when(entity1.getClusterId()).thenReturn(clusterId);
volumesList.add(entity1);
GlusterAsyncTask task = new GlusterAsyncTask();
task.setType(GlusterTaskType.REMOVE_BRICK);
task.setStatus(JobExecutionStatus.FINISHED);
task.setTaskId(GUIDS[2]);
GlusterVolumeEntity entity2 = mock(GlusterVolumeEntity.class);
when(entity2.getId()).thenReturn(volumeId);
when(entity2.getName()).thenReturn(volumeName);
when(entity2.getClusterId()).thenReturn(clusterId);
when(entity2.getAsyncTask()).thenReturn(task);
volumesList.add(entity2);
return volumesList.get(index);
}
protected GlusterVolumeAdvancedDetails getVolumeAdvancedDetailsEntity() {
GlusterVolumeAdvancedDetails entity = mock(GlusterVolumeAdvancedDetails.class);
BrickDetails brickDetails = mock(BrickDetails.class);
BrickProperties brickProps = mock(BrickProperties.class);
when(brickProps.getMntOptions()).thenReturn(BRICK_MNT_OPT);
when(brickProps.getPort()).thenReturn(BRICK_PORT);
when(brickDetails.getBrickProperties()).thenReturn(brickProps);
List<BrickDetails> brickDetailsList = Collections.singletonList(brickDetails);
when(entity.getBrickDetails()).thenReturn(brickDetailsList);
return entity;
}
}