package org.ovirt.engine.core.bll.gluster; import static org.mockito.Mockito.doReturn; import org.junit.Before; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.ovirt.engine.core.bll.BaseCommandTest; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.gluster.GeoRepSessionStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession; import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.StorageDomainDRDao; import org.ovirt.engine.core.dao.gluster.GlusterGeoRepDao; import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; public abstract class GeoRepSessionCommandTest<T extends GeoRepSessionCommandBase<?>> extends BaseCommandTest { @Mock protected GlusterGeoRepDao geoRepDao; @Mock protected GlusterVolumeDao volumeDao; @Mock private StorageDomainDRDao storageDomainDRDao; protected final Guid stoppedVolumeId = new Guid("8bc6f108-c0ef-43ab-ba20-ec41107220f5"); protected final Guid startedVolumeId = new Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e"); protected final Guid geoRepSessionId = new Guid("bbcb2f73-fab3-4a42-93f0-d5e4c069a43e"); private final Guid CLUSTER_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1"); @Spy @InjectMocks T cmd = createCommand(); protected abstract T createCommand(); @Before public void prepareMocks() { doReturn(getVds(VDSStatus.Up)).when(cmd).getUpServer(); doReturn(getGeoRepSession(geoRepSessionId)).when(geoRepDao).getById(geoRepSessionId); doReturn(getGlusterVolume(startedVolumeId)).when(volumeDao).getById(startedVolumeId); doReturn(getGlusterVolume(stoppedVolumeId)).when(volumeDao).getById(stoppedVolumeId); } private VDS getVds(VDSStatus status) { VDS vds = new VDS(); vds.setId(Guid.newGuid()); vds.setVdsName("gfs1"); vds.setClusterId(CLUSTER_ID); vds.setStatus(status); return vds; } private GlusterGeoRepSession getGeoRepSession(Guid gSessionId) { return getGeoRepSession(gSessionId, GeoRepSessionStatus.ACTIVE); } protected GlusterGeoRepSession getGeoRepSession(Guid gSessionId, GeoRepSessionStatus status) { GlusterGeoRepSession session = new GlusterGeoRepSession(); session.setStatus(status); session.setId(gSessionId); return session; } private GlusterVolumeEntity getGlusterVolume(Guid volumeId) { GlusterVolumeEntity volumeEntity = new GlusterVolumeEntity(); volumeEntity.setId(volumeId); volumeEntity.setName("test-vol"); volumeEntity.setStatus(volumeId.equals(startedVolumeId) ? GlusterStatus.UP : GlusterStatus.DOWN); volumeEntity.setClusterId(CLUSTER_ID); return volumeEntity; } }