package com.dgrid.test;
import java.util.concurrent.TimeUnit;
import junit.framework.TestCase;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dgrid.gen.Host;
import com.dgrid.gen.Joblet;
import com.dgrid.gen.JobletResult;
import com.dgrid.joblets.HostFactRunnable;
import com.dgrid.plugin.PluginManager;
import com.dgrid.service.DGridClient;
import com.dgrid.service.DGridExecutorService;
import com.dgrid.service.DGridPluginManager;
import com.dgrid.util.io.HostnameDiscovery;
public abstract class BaseTestCase extends TestCase {
protected AbstractApplicationContext ctx;
protected DGridClient gridClient;
protected DGridPluginManager pluginManager;
protected Host host;
public BaseTestCase() {
super();
}
public void setUp() throws Exception {
String[] paths = new String[] { "/applicationContext.xml",
"/applicationContext-hibernate.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
gridClient = (DGridClient) ctx.getBean(DGridClient.NAME);
pluginManager = (DGridPluginManager) ctx.getBean(PluginManager.NAME);
host = gridClient.registerHost(HostnameDiscovery.getHostname());
pluginManager.init();
pluginManager.start();
DGridExecutorService executor = (DGridExecutorService) ctx
.getBean(DGridExecutorService.NAME);
executor.scheduleAtFixedRate(new HostFactRunnable(ctx), 0l, 5l,
TimeUnit.MINUTES);
}
public void tearDown() throws Exception {
ctx.registerShutdownHook();
}
protected JobletResult doWork() throws Exception {
Joblet joblet = gridClient.getWork();
JobletResult result = gridClient.executeJoblet(joblet);
return result;
}
protected Object getBean(String name) {
return ctx.getBean(name);
}
protected String getHostname() {
return HostnameDiscovery.getHostname();
}
}