package com.neverwinterdp.registry.activity;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.neverwinterdp.registry.Registry;
import com.neverwinterdp.registry.RegistryConfig;
import com.neverwinterdp.registry.zk.RegistryImpl;
import com.neverwinterdp.util.FileUtil;
import com.neverwinterdp.zk.tool.server.EmbededZKServer;
public class ActivityServiceUnitTest {
static {
System.setProperty("log4j.configuration", "file:src/test/resources/test-log4j.properties") ;
}
static public String ACTIVITIES_PATH = "/activities" ;
static private EmbededZKServer zkServerLauncher ;
private Registry registry ;
@BeforeClass
static public void startServer() throws Exception {
FileUtil.removeIfExist("./build/data", false);
zkServerLauncher = new EmbededZKServer("./build/data/zookeeper") ;
zkServerLauncher.start();
}
static public void stopServer() throws Exception {
zkServerLauncher.shutdown();
}
@Before
public void setup() throws Exception {
registry = newRegistry().connect();
}
@After
public void teardown() throws Exception {
registry.rdelete(ACTIVITIES_PATH);
registry.disconnect();
}
private Registry newRegistry() {
return new RegistryImpl(RegistryConfig.getDefault()) ;
}
@Test
public void testActivityService() throws Exception {
ActivityService service = new ActivityService(registry, ACTIVITIES_PATH) ;
HelloActivityBuilder hello = new HelloActivityBuilder(10) ;
Activity activityCreate = service.create(hello);
Activity activityGet = service.getActivity(activityCreate.getId()) ;
Assert.assertEquals(activityCreate.getId(), activityGet.getId());
List<ActivityStep> activityStepsGet = service.getActivitySteps(activityCreate);
Assert.assertEquals(10, activityStepsGet.size());
ActivityStep activityStep0 = activityStepsGet.get(0) ;
service.assign(activityCreate, activityStep0, new WorkerDescriptor());
Assert.assertEquals(
ActivityStep.Status.ASSIGNED,
service.getActivityStep(activityCreate.getId(), activityStep0.getId()).getStatus());
service.finish(activityCreate, activityStep0);
Assert.assertEquals(
ActivityStep.Status.FINISHED,
service.getActivityStep(activityCreate.getId(), activityStep0.getId()).getStatus());
Assert.assertEquals(1, service.getActiveActivities().size());
registry.get("/").dump(System.out);
service.history(activityGet);
Assert.assertEquals(1, service.getHistoryActivities().size());
registry.get("/").dump(System.out);
}
@Test
public void testRunning() throws Exception {
ActivityService service = new ActivityService(registry, ACTIVITIES_PATH) ;
HelloActivityBuilder hello = new HelloActivityBuilder(10) ;
Activity activity = service.create(hello) ;
ActivityCoordinator coordinator = activity.newActivityCoordinator() ;
coordinator.onStart(activity);
}
static public class WorkerDescriptor {
String refPath = "some/path";
public String getRefPath() { return refPath; }
public void setRefPath(String refPath) { this.refPath = refPath; }
}
}