package org.ovirt.engine.core.bll.gluster; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.ovirt.engine.core.bll.AbstractQueryTest; import org.ovirt.engine.core.bll.utils.GlusterUtil; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionInfo; import org.ovirt.engine.core.common.queries.gluster.GlusterParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; public class GetGlusterVolumeOptionsInfoQueryTest extends AbstractQueryTest<GlusterParameters, GetGlusterVolumeOptionsInfoQuery<GlusterParameters>> { List<GlusterVolumeOptionInfo> expected; GlusterParameters parameters; private Guid CLUSTER_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1"); @Mock private GlusterUtil glusterUtils; 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; } @Before @Override public void setUp() throws Exception { super.setUp(); setupExpectedGlusterVolumeOptionInfo(); setupMock(); } private void setupExpectedGlusterVolumeOptionInfo() { parameters = new GlusterParameters(CLUSTER_ID); expected = new ArrayList<>(); GlusterVolumeOptionInfo option = new GlusterVolumeOptionInfo(); option.setKey("cluster.self-heal-window-size"); option.setDefaultValue("1"); option.setDescription("Maximum number blocks per file for which self-heal process would be applied simultaneously."); expected.add(option); } private void setupMock() { VDSReturnValue returnValue = new VDSReturnValue(); returnValue.setSucceeded(true); returnValue.setReturnValue(expected); doReturn(returnValue).when(getQuery()).runVdsCommand(eq(VDSCommandType.GetGlusterVolumeOptionsInfo), any(VDSParametersBase.class)); when(glusterUtils.getUpServer(CLUSTER_ID)).thenReturn(getVds(VDSStatus.Up)); } @Test public void testExecuteQueryCommnad() { when(getQueryParameters().getClusterId()).thenReturn(parameters.getClusterId()); getQuery().executeQueryCommand(); List<GlusterVolumeOptionInfo> options = getQuery().getQueryReturnValue().getReturnValue(); assertNotNull(options); assertEquals(expected, options); } }