package org.ourgrid.acceptance.util;
import java.io.File;
import org.junit.After;
import org.junit.Before;
import org.ourgrid.acceptance.discoveryservice.DiscoveryServiceAcceptanceTestCase;
import org.ourgrid.acceptance.discoveryservice.DiscoveryServiceAcceptanceTestComponent;
import org.ourgrid.common.config.Configuration;
import org.ourgrid.common.interfaces.CommunityStatusProvider;
import org.ourgrid.common.interfaces.DiscoveryService;
import org.ourgrid.common.interfaces.control.DiscoveryServiceControl;
import org.ourgrid.common.statistics.util.hibernate.HibernateUtil;
import org.ourgrid.discoveryservice.DiscoveryServiceComponent;
import org.ourgrid.discoveryservice.DiscoveryServiceConstants;
import org.ourgrid.discoveryservice.communication.receiver.DiscoveryServiceNotificationReceiver;
import org.ourgrid.discoveryservice.config.DiscoveryServiceConfiguration;
import org.ourgrid.discoveryservice.config.PersistNetworkUtil;
import br.edu.ufcg.lsd.commune.Module;
import br.edu.ufcg.lsd.commune.container.ObjectDeployment;
import br.edu.ufcg.lsd.commune.context.ModuleContext;
import br.edu.ufcg.lsd.commune.network.xmpp.CommuneNetworkException;
import br.edu.ufcg.lsd.commune.processor.ProcessorStartException;
import br.edu.ufcg.lsd.commune.testinfra.TestObjectsRegistry;
public class DiscoveryServiceAcceptanceUtil extends AcceptanceUtil {
private static final String CONF_XML_PATH = "ds-hibernate.cfg.xml";
public DiscoveryServiceAcceptanceUtil(ModuleContext context){
super(context);
}
@Before
public static void setUp() throws Exception{
System.setProperty("OGROOT", ".");
Configuration.getInstance(DiscoveryServiceConfiguration.DISCOVERY_SERVICE);
PersistNetworkUtil.getInstance().setPropertiesFileName(
DiscoveryServiceAcceptanceTestCase.DS_PROP_FILEPATH);
if (HibernateUtil.getSessionFactory() == null) {
HibernateUtil.setUp(CONF_XML_PATH);
}
HibernateUtil.recreateSchema();
}
@After
public static void tearDown() throws Exception {
if (application != null && !application.getContainerDAO().isStopped()) {
application.stop();
}
TestObjectsRegistry.reset();
File propertiesFile = new File(DiscoveryServiceAcceptanceTestCase.DS_PROP_FILEPATH);
if (propertiesFile.exists()) {
propertiesFile.delete();
}
}
public DiscoveryServiceComponent createDiscoveryServiceComponent() throws CommuneNetworkException, ProcessorStartException, InterruptedException{
application = new DiscoveryServiceAcceptanceTestComponent(context);
Thread.sleep(2000);
return (DiscoveryServiceComponent) application;
}
public DiscoveryServiceControl getDiscoveryServiceControl(DiscoveryServiceComponent component) {
ObjectDeployment deployment = getDiscoveryServiceControlDeployment(component);
return (DiscoveryServiceControl) deployment.getObject();
}
public ObjectDeployment getDiscoveryServiceControlDeployment(DiscoveryServiceComponent component) {
return component.getObject(Module.CONTROL_OBJECT_NAME);
}
public DiscoveryService getDiscoveryServiceProxy() {
ObjectDeployment deployment = getDiscoveryServiceObjectDeployment();
return (DiscoveryService) deployment.getObject();
}
public ObjectDeployment getDiscoveryServiceObjectDeployment() {
return getTestProxy(application, DiscoveryServiceConstants.DS_OBJECT_NAME);
}
public ObjectDeployment getDiscoveryServiceDeployment(DiscoveryServiceComponent component) {
return component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME);
}
public CommunityStatusProvider getCommunityStatusProviders(DiscoveryServiceComponent component) {
ObjectDeployment objectDeployment = getCommunityStatusProvidersObjectDeployment(component);
return (CommunityStatusProvider) objectDeployment.getObject();
}
public ObjectDeployment getCommunityStatusProvidersObjectDeployment(DiscoveryServiceComponent component) {
return component.getObject(DiscoveryServiceConstants.COMMUNITY_STATUS_PROVIDER);
}
public ObjectDeployment
getDiscoveryServiceClientFailureControllerObjectDeployment(DiscoveryServiceComponent component) {
return component.getObject(DiscoveryServiceConstants.DS_CLIENT_MONITOR);
}
public ObjectDeployment
getDiscoveryServiceMonitorDeployment() {
return getContainerObject(application, DiscoveryServiceConstants.DS_MONITOR);
}
public DiscoveryServiceNotificationReceiver
getDiscoveryServiceNotificationReceiver() {
ObjectDeployment objectDeployment = getDiscoveryServiceMonitorDeployment();
return (DiscoveryServiceNotificationReceiver) objectDeployment.getObject();
}
}