package org.ovirt.engine.core.dao.gluster; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerService; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServiceStatus; import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.BaseDaoTestCase; /** * Tests for Services Dao */ public class GlusterServerServiceDaoTest extends BaseDaoTestCase { private static final Guid NEW_SERVICE_ID = new Guid("d1745ef8-8369-43e5-b55a-b4fceea63877"); private static final Guid SERVER1_ID = new Guid("23f6d691-5dfb-472b-86dc-9e1d2d3c18f3"); private static final Guid SERVER2_ID = new Guid("2001751e-549b-4e7a-aff6-32d36856c125"); private static final Guid CLUSTER_ID = new Guid("ae956031-6be2-43d6-bb8f-5191c9253314"); private static final Guid SERVICE1_ID = new Guid("c83c9ee3-b7d8-4709-ae4b-5d86a152e6b1"); private static final String SERVICE1_NAME = "gluster-swift-test-1"; private static final String VDS_NAME1 = "gluster-server1"; private static final ServiceType SERVICE1_TYPE = ServiceType.GLUSTER_SWIFT; private static final Guid SERVICE2_ID = new Guid("fc00df54-4fcd-4495-8756-b217780bdad7"); private static final String SERVICE2_NAME = "gluster-test"; private static final ServiceType SERVICE2_TYPE = ServiceType.GLUSTER; private static final Guid SERVER1_SERVICE_ID = new Guid("c77b4d6a-a2c9-4c9f-a873-3dbff8a34720"); private static final String VDS_NAME2 = "gluster-server2"; private static final Integer PID_1 = 11111; private static final Integer PID_2 = 22222; private static final Integer NEW_PID = 33333; private GlusterServerServiceDao dao; @Override public void setUp() throws Exception { super.setUp(); dao = dbFacade.getGlusterServerServiceDao(); } @Test public void testGetByClusterId() { List<GlusterServerService> services = dao.getByClusterId(CLUSTER_ID); assertNotNull(services); assertEquals(2, services.size()); for (GlusterServerService service : services) { Guid serverId = service.getServerId(); if (SERVER1_ID.equals(serverId)) { verifyServiceOnServer1(service); } else if (SERVER2_ID.equals(serverId)) { verifyServiceOnServer2(service); } else { fail("Unexpected server id: " + service.getServerId()); } } } @Test public void testGetByServerId() { List<GlusterServerService> services = dao.getByServerId(SERVER1_ID); assertNotNull(services); assertEquals(1, services.size()); verifyServiceOnServer1(services.get(0)); } @Test public void testGetByClusterIdAndServiceType() { List<GlusterServerService> services = dao.getByClusterIdAndServiceType(CLUSTER_ID, SERVICE1_TYPE); assertNotNull(services); assertEquals(1, services.size()); verifyServiceOnServer1(services.get(0)); } @Test public void testGetByServerIdAndServiceType() { List<GlusterServerService> services = dao.getByServerIdAndServiceType(SERVER1_ID, SERVICE1_TYPE); assertNotNull(services); assertEquals(1, services.size()); verifyServiceOnServer1(services.get(0)); } @Test public void testGetAllWithQuery() { List<GlusterServerService> services = dao.getAllWithQuery("select * from gluster_server_services_view where status = '" + GlusterServiceStatus.STOPPED.name() + "'"); assertNotNull(services); assertEquals(1, services.size()); verifyServiceOnServer2(services.get(0)); } @Test public void testSaveAndGet() { GlusterServerService service = dao.get(NEW_SERVICE_ID); assertNull(service); GlusterServerService newService = insertTestService(); service = dao.get(NEW_SERVICE_ID); assertNotNull(service); assertEquals(newService, service); } @Test public void testUpdate() { GlusterServerService existingService = dao.get(SERVER1_SERVICE_ID); assertNotNull(existingService); assertEquals(GlusterServiceStatus.RUNNING, existingService.getStatus()); GlusterServerService serviceToModify = dao.get(SERVER1_SERVICE_ID); serviceToModify.setStatus(GlusterServiceStatus.STOPPED); dao.update(serviceToModify); GlusterServerService modifiedService = dao.get(SERVER1_SERVICE_ID); assertNotNull(modifiedService); assertEquals(GlusterServiceStatus.STOPPED, modifiedService.getStatus()); assertEquals(GlusterServiceStatus.RUNNING, existingService.getStatus()); assertFalse(existingService.equals(modifiedService)); } @Test public void testUpdateByServerIdAndServiceType() { GlusterServerService existingService = dao.get(SERVER1_SERVICE_ID); assertNotNull(existingService); assertEquals(GlusterServiceStatus.RUNNING, existingService.getStatus()); GlusterServerService serviceToModify = dao.get(SERVER1_SERVICE_ID); serviceToModify.setStatus(GlusterServiceStatus.STOPPED); dao.updateByServerIdAndServiceType(serviceToModify); GlusterServerService modifiedService = dao.get(SERVER1_SERVICE_ID); assertNotNull(modifiedService); assertEquals(GlusterServiceStatus.STOPPED, modifiedService.getStatus()); assertEquals(GlusterServiceStatus.RUNNING, existingService.getStatus()); assertFalse(existingService.equals(modifiedService)); } private GlusterServerService insertTestService() { GlusterServerService service = new GlusterServerService(); service.setId(NEW_SERVICE_ID); service.setServerId(SERVER1_ID); service.setServiceId(SERVICE2_ID); service.setServiceType(SERVICE2_TYPE); service.setStatus(GlusterServiceStatus.UNKNOWN); service.setMessage("test message"); service.setPid(NEW_PID); service.setHostName(VDS_NAME1); dao.save(service); return service; } private void verifyServiceOnServer2(GlusterServerService service) { assertEquals(SERVICE2_ID, service.getServiceId()); assertEquals(SERVICE2_NAME, service.getServiceName()); assertEquals(SERVICE2_TYPE, service.getServiceType()); assertEquals(PID_2, service.getPid()); assertEquals(GlusterServiceStatus.STOPPED, service.getStatus()); assertEquals(VDS_NAME2, service.getHostName()); } private void verifyServiceOnServer1(GlusterServerService service) { assertEquals(SERVICE1_ID, service.getServiceId()); assertEquals(SERVICE1_NAME, service.getServiceName()); assertEquals(SERVICE1_TYPE, service.getServiceType()); assertEquals(PID_1, service.getPid()); assertEquals(GlusterServiceStatus.RUNNING, service.getStatus()); assertEquals(VDS_NAME1, service.getHostName()); } }