package org.ovirt.engine.core.bll.gluster; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.ovirt.engine.core.bll.BaseCommandTest; import org.ovirt.engine.core.bll.utils.GlusterUtil; import org.ovirt.engine.core.common.action.gluster.GlusterVolumeGeoRepSessionParameters; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; 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.compat.Version; import org.ovirt.engine.core.dao.ClusterDao; import org.ovirt.engine.core.dao.VdsDao; import org.ovirt.engine.core.dao.gluster.GlusterGeoRepDao; import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; public class CreateGlusterVolumeGeoRepSessionCommandTest extends BaseCommandTest { private static final Version SUPPORTED_VERSION = Version.v3_6; private final String slaveVolumeName = "slaveVol"; private final Guid masterVolumeId = Guid.newGuid(); @Mock GlusterVolumeDao volumeDao; @Mock VdsDao vdsDao; @Mock ClusterDao clusterDao; @Mock GlusterGeoRepDao geoRepDao; @Mock protected Cluster cluster; @Mock private GlusterUtil glusterUtil; @Mock protected GlusterVolumeEntity volume; @Mock protected VDS vds; @Spy @InjectMocks CreateGlusterVolumeGeoRepSessionCommand command = new CreateGlusterVolumeGeoRepSessionCommand (new GlusterVolumeGeoRepSessionParameters (masterVolumeId, slaveVolumeName, Guid.newGuid(), null, null, false), null); @Test public void commandSucceeds() { doReturn(SUPPORTED_VERSION).when(cluster).getCompatibilityVersion(); doReturn(volume).when(command).getSlaveVolume(); doReturn(vds).when(command).getSlaveHost(); assertTrue(command.validate()); } @Before public void prepareMocks() { doReturn(volume).when(volumeDao).getById(masterVolumeId); doReturn(GlusterStatus.UP).when(volume).getStatus(); doReturn(cluster).when(command).getCluster(); doReturn(vds).when(command).getUpServer(); doReturn(VDSStatus.Up).when(vds).getStatus(); } @Test public void commandFailsSlaveVolumeNotMonitoredByOvirt() { doReturn(SUPPORTED_VERSION).when(cluster).getCompatibilityVersion(); doReturn(vds).when(command).getSlaveHost(); assertFalse(command.validate()); } @Test public void commandFailsSessionExists() { doReturn(volume).when(command).getSlaveVolume(); doReturn(vds).when(command).getSlaveHost(); doReturn(SUPPORTED_VERSION).when(cluster).getCompatibilityVersion(); doReturn(new GlusterGeoRepSession()).when(geoRepDao).getGeoRepSession(any(), any(), any()); assertFalse(command.validate()); } @Test public void commandFailsSlaveHostInvalid() { doReturn(vds).when(command).getUpServer(); doReturn(SUPPORTED_VERSION).when(cluster).getCompatibilityVersion(); doReturn(volume).when(command).getSlaveVolume(); assertFalse(command.validate()); } }