Repository: incubator-myriad Updated Branches: refs/heads/master 6354ce6ac -> 4a6e50c41
http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferLifeCycleManagerTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferLifeCycleManagerTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferLifeCycleManagerTest.java new file mode 100644 index 0000000..a16e8e6 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferLifeCycleManagerTest.java @@ -0,0 +1,54 @@ +package org.apache.myriad.scheduler.fgs; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.apache.hadoop.net.NodeBase; +import org.apache.hadoop.yarn.api.records.impl.pb.NodeIdPBImpl; +import org.apache.hadoop.yarn.api.records.impl.pb.ResourcePBImpl; +import org.apache.hadoop.yarn.proto.YarnProtos.NodeIdProto; +import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; +import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerNode; +import org.apache.mesos.Protos.Offer; +import org.apache.myriad.TestObjectFactory; +import org.apache.myriad.scheduler.MockSchedulerDriver; +import org.apache.myriad.scheduler.MyriadDriver; +import org.apache.myriad.state.MockRMContext; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit tests for OfferLifeCycleManager + */ +public class OfferLifeCycleManagerTest { + OfferLifecycleManager manager; + + @Before + public void setUp() throws Exception { + NodeStore store = new NodeStore(); + NodeIdProto nodeId = NodeIdProto.newBuilder().setHost("localhost").setPort(8000).build(); + RMNode rmNode = new RMNodeImpl(new NodeIdPBImpl(nodeId), new MockRMContext(), "localhost", 8000, 8070, new NodeBase(), + new ResourcePBImpl(), "1.0"); + SchedulerNode node = new FiCaSchedulerNode(rmNode, false); + store.add(node); + manager = new OfferLifecycleManager(store, new MyriadDriver(new MockSchedulerDriver())); + } + + @Test + public void testAddOffers() throws Exception { + manager.addOffers(TestObjectFactory.getOffer("localhost", "slave-1", "mock-framework", "offer-1")); + assertNotNull(manager.getOfferFeed("localhost").poll()); + } + + @Test + public void testMarkAsConsumed() throws Exception { + Offer offer = TestObjectFactory.getOffer("localhost-1", "slave-2", "mock-framework", "consumed-offer-1"); + manager.addOffers(offer); + manager.markAsConsumed(offer); + ConsumedOffer cOffers = manager.getConsumedOffer("localhost-1"); + Offer cOffer = cOffers.getOffers().get(0); + assertEquals(offer, cOffer); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferUtilsTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferUtilsTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferUtilsTest.java new file mode 100644 index 0000000..915ac0b --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/scheduler/fgs/OfferUtilsTest.java @@ -0,0 +1,74 @@ +package org.apache.myriad.scheduler.fgs; + +import java.util.List; + +import org.apache.mesos.Protos; +import org.apache.mesos.Protos.FrameworkID; +import org.apache.mesos.Protos.Offer; +import org.apache.mesos.Protos.OfferID; +import org.apache.mesos.Protos.Resource; +import org.apache.mesos.Protos.SlaveID; +import org.apache.mesos.Protos.Value; +import org.apache.mesos.Protos.Value.Scalar; +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +import com.google.common.collect.Lists; + +/** + * Unit tests for OfferUtils + */ +public class OfferUtilsTest { + + List<Offer> offers; + + @Before + public void setUp() throws Exception { + offers = generateOffers(generateResources()); + } + + private List<Offer> generateOffers(List<Resource> resources) { + FrameworkID fidOne = Protos.FrameworkID.newBuilder().setValue("framework-1").build(); + FrameworkID fidTwo = Protos.FrameworkID.newBuilder().setValue("framework-2").build(); + FrameworkID fidThree = Protos.FrameworkID.newBuilder().setValue("framework-3").build(); + FrameworkID fidFour = Protos.FrameworkID.newBuilder().setValue("framework-4").build(); + + OfferID oidOne = Protos.OfferID.newBuilder().setValue("offer-1").build(); + OfferID oidTwo = Protos.OfferID.newBuilder().setValue("offer-2").build(); + OfferID oidThree = Protos.OfferID.newBuilder().setValue("offer-3").build(); + OfferID oidFour = Protos.OfferID.newBuilder().setValue("offer-4").build(); + + SlaveID sidOne = Protos.SlaveID.newBuilder().setValue("slave-1").build(); + SlaveID sidTwo = Protos.SlaveID.newBuilder().setValue("slave-2").build(); + SlaveID sidThree = Protos.SlaveID.newBuilder().setValue("slave-3").build(); + SlaveID sidFour = Protos.SlaveID.newBuilder().setValue("slave-4").build(); + + Offer offerOne = Protos.Offer.newBuilder().setFrameworkId(fidOne).setHostname("10.0.0.1").setId(oidOne).setSlaveId(sidOne). + addResources(resources.get(0)).addResources(resources.get(1)).build(); + Offer offerTwo = Protos.Offer.newBuilder().setFrameworkId(fidTwo).setHostname("10.0.0.2").setId(oidTwo).setSlaveId(sidTwo). + addResources(resources.get(2)).addResources(resources.get(3)).build(); + Offer offerThree = Protos.Offer.newBuilder().setFrameworkId(fidThree).setHostname("10.0.0.3").setId(oidThree).setSlaveId(sidThree). + addResources(resources.get(0)).addResources(resources.get(3)).build(); + Offer offerFour = Protos.Offer.newBuilder().setFrameworkId(fidFour).setHostname("10.0.0.4").setId(oidFour).setSlaveId(sidFour). + addResources(resources.get(2)).addResources(resources.get(1)).build(); + + return Lists.newArrayList(offerOne, offerTwo, offerThree, offerFour); + } + + private List<Resource> generateResources() { + Resource rOne = Protos.Resource.newBuilder().setName("cpus").setType(Value.Type.SCALAR).setScalar(Scalar.newBuilder().setValue(0.5)).build(); + Resource rTwo = Protos.Resource.newBuilder().setName("mem").setType(Value.Type.SCALAR).setScalar(Scalar.newBuilder().setValue(1.0)).build(); + Resource rThree = Protos.Resource.newBuilder().setName("cpus").setType(Value.Type.SCALAR).setScalar(Scalar.newBuilder().setValue(1.0)).build(); + Resource rFour = Protos.Resource.newBuilder().setName("mem").setType(Value.Type.SCALAR).setScalar(Scalar.newBuilder().setValue(2.0)).build(); + + return Lists.newArrayList(rOne, rTwo, rThree, rFour); + } + + @Test + public void testgetYarnResourcesFromMesosOffers() throws Exception { + org.apache.hadoop.yarn.api.records.Resource resource = OfferUtils.getYarnResourcesFromMesosOffers(offers); + assertEquals(6.0, resource.getMemory(), 1.0); + assertEquals(3.0, resource.getVirtualCores(), 1.0); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/ClusterTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/ClusterTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/ClusterTest.java new file mode 100644 index 0000000..69954b7 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/ClusterTest.java @@ -0,0 +1,62 @@ +package org.apache.myriad.state; + +import static org.junit.Assert.assertEquals; + +import org.apache.myriad.scheduler.ServiceResourceProfile; +import org.apache.myriad.scheduler.constraints.LikeConstraint; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit tests for Cluster + */ +public class ClusterTest { + Cluster cluster; + NodeTask task1, task2, task3; + + @Before + public void setUp() throws Exception { + cluster = new Cluster(); + cluster.setClusterName("test-cluster"); + cluster.setMinQuota(5.0); + cluster.setResourceManagerHost("localhost"); + cluster.setResourceManagerPort("8192"); + + task1 = new NodeTask(new ServiceResourceProfile("profile1", 0.1, 1024.0), new LikeConstraint("hostname1", "host-[0-9]*.example1.com")); + task2 = new NodeTask(new ServiceResourceProfile("profile2", 0.2, 1024.0), new LikeConstraint("hostname2", "host-[0-9]*.example2.com")); + task3 = new NodeTask(new ServiceResourceProfile("profile3", 0.3, 1024.0), new LikeConstraint("hostname3", "host-[0-9]*.example3.com")); + } + + private void resetCluster() throws Exception { + cluster.removeAllNodes(); + } + + @Test + public void testCoreAttributes() throws Exception { + assertEquals("test-cluster", cluster.getClusterName()); + assertEquals(5.0, cluster.getMinQuota(), 0.0001); + assertEquals("localhost", cluster.getResourceManagerHost()); + assertEquals("8192", cluster.getResourceManagerPort()); + } + + @Test + public void testAddNode() throws Exception { + resetCluster(); + cluster.addNode(task1); + assertEquals(1, cluster.getNodes().size()); + cluster.addNode(task2); + assertEquals(2, cluster.getNodes().size()); + } + + @Test + public void testRemoveNode() throws Exception { + resetCluster(); + cluster.addNode(task1); + cluster.addNode(task2); + cluster.addNode(task3); + cluster.removeNode(task1); + assertEquals(2, cluster.getNodes().size()); + cluster.removeNode(task2); + assertEquals(1, cluster.getNodes().size()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockDispatcher.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockDispatcher.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockDispatcher.java new file mode 100644 index 0000000..bc06441 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockDispatcher.java @@ -0,0 +1,32 @@ +package org.apache.myriad.state; + +import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.event.EventHandler; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; + +/** + * Mock Dispatcher implementation for unit tests + */ +public class MockDispatcher implements Dispatcher { + EventHandler<RMAppEvent> handler = new MockEventHandler(); + + /** + * Mock EventHandler implementation for unit tests + */ + public static class MockEventHandler implements EventHandler<RMAppEvent> { + @Override + public void handle(RMAppEvent event) { + //noop + } + } + + @Override + public EventHandler<RMAppEvent> getEventHandler() { + return handler; + } + + @Override + public void register(Class<? extends Enum> eventType, EventHandler handler) { + //noop + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockFuture.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockFuture.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockFuture.java new file mode 100644 index 0000000..fa4628f --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockFuture.java @@ -0,0 +1,44 @@ +package org.apache.myriad.state; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.apache.mesos.state.Variable; + +/** + * Stubbed-out implementation for unit tests + */ +public class MockFuture implements Future<Variable> { + private Variable value; + + public MockFuture(Variable value) { + this.value = value; + } + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return false; + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public boolean isDone() { + return false; + } + + @Override + public Variable get() throws InterruptedException, ExecutionException { + return value; + } + + @Override + public Variable get(long timeout, TimeUnit unit) + throws InterruptedException, ExecutionException, TimeoutException { + return value; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMApp.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMApp.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMApp.java new file mode 100644 index 0000000..822c08a --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMApp.java @@ -0,0 +1,202 @@ +package org.apache.myriad.state; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; +import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; +import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; +import org.apache.hadoop.yarn.api.records.NodeId; +import org.apache.hadoop.yarn.api.records.Priority; +import org.apache.hadoop.yarn.api.records.ReservationId; +import org.apache.hadoop.yarn.api.records.ResourceRequest; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMetrics; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; +import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; + +/** + * Mock RMApp for unit tests + */ +public class MockRMApp implements RMApp { + static final int DT = 1000000; + String user = "yarn"; + String name = "mock-app"; + String queue = "mock-queue"; + long start = System.currentTimeMillis(); + long submit = start - (5 * DT); + long finish = start + (15 * DT); + RMAppState state = RMAppState.NEW; + String applicationType = "mock"; + ApplicationId id; + ApplicationSubmissionContext context; + String tUrl = "localhost:8080"; + String oUrl = "localhost:8081"; + int maxAppAttempts = 5; + + Map<ApplicationAttemptId, RMAppAttempt> attempts = new HashMap<ApplicationAttemptId, RMAppAttempt>(); + + public MockRMApp(int newId, long time, RMAppState state) { + finish = time; + id = ApplicationId.newInstance(System.currentTimeMillis(), newId); + context = ApplicationSubmissionContext.newInstance(id, name, queue, Priority.newInstance(0), null, false, false, newId, null, applicationType); + this.state = state; + } + + @Override + public void handle(RMAppEvent event) { + + } + + @Override + public ApplicationId getApplicationId() { + return id; + } + + @Override + public ApplicationSubmissionContext getApplicationSubmissionContext() { + return context; + } + + @Override + public RMAppState getState() { + return state; + } + + @Override + public String getUser() { + return user; + } + + @Override + public float getProgress() { + return 0; + } + + @Override + public RMAppAttempt getRMAppAttempt(ApplicationAttemptId appAttemptId) { + return null; + } + + @Override + public String getQueue() { + return queue; + } + + @Override + public void setQueue(String queue) { + this.queue = queue; + } + + @Override + public String getName() { + return name; + } + + @Override + public RMAppAttempt getCurrentAppAttempt() { + return null; + } + + @Override + public Map<ApplicationAttemptId, RMAppAttempt> getAppAttempts() { + return attempts; + } + + @Override + public ApplicationReport createAndGetApplicationReport(String clientUserName, boolean allowAccess) { + return null; + } + + @Override + public int pullRMNodeUpdates(Collection<RMNode> updatedNodes) { + return 0; + } + + @Override + public long getFinishTime() { + return finish; + } + + @Override + public long getStartTime() { + return start; + } + + @Override + public long getSubmitTime() { + return submit; + } + + @Override + public String getTrackingUrl() { + return this.tUrl; + } + + @Override + public String getOriginalTrackingUrl() { + return this.oUrl; + } + + @Override + public StringBuilder getDiagnostics() { + return null; + } + + @Override + public FinalApplicationStatus getFinalApplicationStatus() { + return null; + } + + @Override + public int getMaxAppAttempts() { + return this.maxAppAttempts; + } + + @Override + public String getApplicationType() { + return this.applicationType; + } + + @Override + public Set<String> getApplicationTags() { + return null; + } + + @Override + public boolean isAppFinalStateStored() { + return false; + } + + @Override + public Set<NodeId> getRanNodes() { + return null; + } + + @Override + public YarnApplicationState createApplicationState() { + return null; + } + + @Override + public RMAppMetrics getRMAppMetrics() { + return null; + } + + @Override + public ReservationId getReservationId() { + return null; + } + + @Override + public ResourceRequest getAMResourceRequest() { + return null; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMContext.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMContext.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMContext.java new file mode 100644 index 0000000..42fa045 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockRMContext.java @@ -0,0 +1,339 @@ +package org.apache.myriad.state; + +import java.nio.ByteBuffer; +import java.util.concurrent.ConcurrentMap; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.ha.HAServiceProtocol; +import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState; +import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.NodeId; +import org.apache.hadoop.yarn.conf.ConfigurationProvider; +import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.server.resourcemanager.AdminService; +import org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService; +import org.apache.hadoop.yarn.server.resourcemanager.ClientRMService; +import org.apache.hadoop.yarn.server.resourcemanager.NodesListManager; +import org.apache.hadoop.yarn.server.resourcemanager.RMActiveServiceContext; +import org.apache.hadoop.yarn.server.resourcemanager.RMContext; +import org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService; +import org.apache.hadoop.yarn.server.resourcemanager.ahs.RMApplicationHistoryWriter; +import org.apache.hadoop.yarn.server.resourcemanager.metrics.SystemMetricsPublisher; +import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; +import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore; +import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystem; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AMLivelinessMonitor; +import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer; +import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; +import org.apache.hadoop.yarn.server.resourcemanager.security.AMRMTokenSecretManager; +import org.apache.hadoop.yarn.server.resourcemanager.security.ClientToAMTokenSecretManagerInRM; +import org.apache.hadoop.yarn.server.resourcemanager.security.DelegationTokenRenewer; +import org.apache.hadoop.yarn.server.resourcemanager.security.NMTokenSecretManagerInRM; +import org.apache.hadoop.yarn.server.resourcemanager.security.RMContainerTokenSecretManager; +import org.apache.hadoop.yarn.server.resourcemanager.security.RMDelegationTokenSecretManager; + +/** + * Mock implementation of RMContext for the purposes of JUnit tests + */ +public class MockRMContext implements RMContext { + Dispatcher dispatcher; + boolean haEnabled = false; + RMStateStore stateStore; + AMLivelinessMonitor amLivelinessMonitor; + AMLivelinessMonitor amFinishingMonitor; + RMActiveServiceContext activeServiceContext; + HAServiceState haServiceState = HAServiceProtocol.HAServiceState.INITIALIZING; + Configuration yarnConfiguration; + RMNodeLabelsManager mgr; + ResourceScheduler resourceScheduler; + boolean workPreservingRecoveryEnabled; + NMTokenSecretManagerInRM nmTokenSecretManager; + RMApplicationHistoryWriter rmApplicationHistoryWriter = new RMApplicationHistoryWriter(); + RMDelegationTokenSecretManager delegationTokenSecretManager; + RMContainerTokenSecretManager containerTokenSecretManager; + NodesListManager nodesListManager; + ContainerAllocationExpirer containerAllocationExpirer; + AMRMTokenSecretManager tokenSecretManager; + DelegationTokenRenewer delegationTokenRenewer; + ClientRMService clientRMService; + ApplicationMasterService applicationMasterService; + ResourceTrackerService resourceTrackerService; + SystemMetricsPublisher systemMetricsPublisher; + ConfigurationProvider configurationProvider; + AdminService adminService; + + public void setApplicationMasterService(ApplicationMasterService applicationMasterService) { + this.applicationMasterService = applicationMasterService; + } + + public RMActiveServiceContext getActiveServiceContext() { + return activeServiceContext; + } + + public void setActiveServiceContext(RMActiveServiceContext activeServiceContext) { + this.activeServiceContext = activeServiceContext; + } + + public void setResourceTrackerService(ResourceTrackerService resourceTrackerService) { + this.resourceTrackerService = resourceTrackerService; + } + + public void setContainerTokenSecretManager(RMContainerTokenSecretManager containerTokenSecretManager) { + this.containerTokenSecretManager = containerTokenSecretManager; + } + + public void setDelegationTokenRenewer(DelegationTokenRenewer delegationTokenRenewer) { + this.delegationTokenRenewer = delegationTokenRenewer; + } + + public void setAdminService(AdminService adminService) { + this.adminService = adminService; + } + + public void setConfigurationProvider(ConfigurationProvider configurationProvider) { + this.configurationProvider = configurationProvider; + } + + public void setDelegationTokenSecretManager(RMDelegationTokenSecretManager delegationTokenSecretManager) { + this.delegationTokenSecretManager = delegationTokenSecretManager; + } + + public void setTokenSecretManager(AMRMTokenSecretManager tokenSecretManager) { + this.tokenSecretManager = tokenSecretManager; + } + + public void setContainerAllocationExpirer(ContainerAllocationExpirer containerAllocationExpirer) { + this.containerAllocationExpirer = containerAllocationExpirer; + } + + public void setNodesListManager(NodesListManager nodesListManager) { + this.nodesListManager = nodesListManager; + } + + public void setNmTokenSecretManager(NMTokenSecretManagerInRM nmTokenSecretManager) { + this.nmTokenSecretManager = nmTokenSecretManager; + } + + public void setWorkPreservingRecoveryEnabled(boolean workPreservingRecoveryEnabled) { + this.workPreservingRecoveryEnabled = workPreservingRecoveryEnabled; + } + + public void setResourceScheduler(ResourceScheduler resourceScheduler) { + this.resourceScheduler = resourceScheduler; + } + + public void setMgr(RMNodeLabelsManager mgr) { + this.mgr = mgr; + } + + public void setYarnConfiguration(Configuration yarnConfiguration) { + this.yarnConfiguration = yarnConfiguration; + } + + public void setHaEnabled(boolean haEnabled) { + this.haEnabled = haEnabled; + } + + public void setAmLivelinessMonitor(AMLivelinessMonitor amLivelinessMonitor) { + this.amLivelinessMonitor = amLivelinessMonitor; + } + + public void setAmFinishingMonitor(AMLivelinessMonitor amFinishingMonitor) { + this.amFinishingMonitor = amFinishingMonitor; + } + + public void setDispatcher(Dispatcher dispatcher) { + this.dispatcher = dispatcher; + } + + public void setStateStore(RMStateStore stateStore) { + this.stateStore = stateStore; + } + + @Override + public Dispatcher getDispatcher() { + return dispatcher; + } + + @Override + public boolean isHAEnabled() { + return haEnabled; + } + + @Override + public HAServiceState getHAServiceState() { + return haServiceState; + } + + @Override + public RMStateStore getStateStore() { + return stateStore; + } + + @Override + public ConcurrentMap<ApplicationId, RMApp> getRMApps() { + return null; + } + + @Override + public ConcurrentMap<ApplicationId, ByteBuffer> getSystemCredentialsForApps() { + return null; + } + + @Override + public ConcurrentMap<String, RMNode> getInactiveRMNodes() { + return null; + } + + @Override + public ConcurrentMap<NodeId, RMNode> getRMNodes() { + return null; + } + + @Override + public AMLivelinessMonitor getAMLivelinessMonitor() { + return amLivelinessMonitor; + } + + @Override + public AMLivelinessMonitor getAMFinishingMonitor() { + return amFinishingMonitor; + } + + @Override + public ContainerAllocationExpirer getContainerAllocationExpirer() { + return containerAllocationExpirer; + } + + @Override + public DelegationTokenRenewer getDelegationTokenRenewer() { + return delegationTokenRenewer; + } + + @Override + public AMRMTokenSecretManager getAMRMTokenSecretManager() { + return tokenSecretManager; + } + + @Override + public RMContainerTokenSecretManager getContainerTokenSecretManager() { + return containerTokenSecretManager; + } + + @Override + public NMTokenSecretManagerInRM getNMTokenSecretManager() { + return nmTokenSecretManager; + } + + @Override + public ResourceScheduler getScheduler() { + return resourceScheduler; + } + + @Override + public NodesListManager getNodesListManager() { + return nodesListManager; + } + + @Override + public ClientToAMTokenSecretManagerInRM getClientToAMTokenSecretManager() { + return null; + } + + @Override + public AdminService getRMAdminService() { + return adminService; + } + + @Override + public ClientRMService getClientRMService() { + return clientRMService; + } + + @Override + public ApplicationMasterService getApplicationMasterService() { + return applicationMasterService; + } + + @Override + public ResourceTrackerService getResourceTrackerService() { + return resourceTrackerService; + } + + @Override + public void setClientRMService(ClientRMService clientRMService) { + this.clientRMService = clientRMService; + } + + @Override + public RMDelegationTokenSecretManager getRMDelegationTokenSecretManager() { + return delegationTokenSecretManager; + } + + @Override + public void setRMDelegationTokenSecretManager(RMDelegationTokenSecretManager delegationTokenSecretManager) { + this.delegationTokenSecretManager = delegationTokenSecretManager; + } + + @Override + public RMApplicationHistoryWriter getRMApplicationHistoryWriter() { + return rmApplicationHistoryWriter; + } + + @Override + public void setRMApplicationHistoryWriter(RMApplicationHistoryWriter rmApplicationHistoryWriter) { + this.rmApplicationHistoryWriter = rmApplicationHistoryWriter; + } + + @Override + public void setSystemMetricsPublisher(SystemMetricsPublisher systemMetricsPublisher) { + this.systemMetricsPublisher = systemMetricsPublisher; + } + + @Override + public SystemMetricsPublisher getSystemMetricsPublisher() { + return systemMetricsPublisher; + } + + @Override + public ConfigurationProvider getConfigurationProvider() { + return configurationProvider; + } + + @Override + public boolean isWorkPreservingRecoveryEnabled() { + return workPreservingRecoveryEnabled; + } + + @Override + public RMNodeLabelsManager getNodeLabelManager() { + return mgr; + } + + @Override + public void setNodeLabelManager(RMNodeLabelsManager mgr) { + this.mgr = mgr; + } + + @Override + public long getEpoch() { + return 0; + } + + @Override + public ReservationSystem getReservationSystem() { + return null; + } + + @Override + public boolean isSchedulerReadyForAllocatingContainers() { + return false; + } + + @Override + public Configuration getYarnConfiguration() { + return this.yarnConfiguration; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockState.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockState.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockState.java new file mode 100644 index 0000000..ba29ff8 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockState.java @@ -0,0 +1,45 @@ +package org.apache.myriad.state; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.Future; + +import org.apache.mesos.state.State; +import org.apache.mesos.state.Variable; + +/** + * Stubbed-out implementation for unit tests + */ +public class MockState implements State { + private Map<String, Future<Variable>> values = new HashMap<String, Future<Variable>>(); + + @Override + public Future<Variable> fetch(String name) { + return values.get(name); + } + + @Override + public Future<Variable> store(Variable variable) { + MockFuture future = new MockFuture(variable); + + if (!(variable instanceof MockVariable)) { + throw new IllegalArgumentException("The Variable must be a MockVariable"); + } + + MockVariable mVar = (MockVariable) variable; + values.put(mVar.name(), future); + + return future; + } + + @Override + public Future<Boolean> expunge(Variable variable) { + return null; + } + + @Override + public Future<Iterator<String>> names() { + return null; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MockVariable.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MockVariable.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockVariable.java new file mode 100644 index 0000000..06655e3 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MockVariable.java @@ -0,0 +1,35 @@ +package org.apache.myriad.state; + +import org.apache.mesos.state.Variable; + +/** + * Simplified implementation for unit tests + */ +public class MockVariable extends Variable { + private byte[] value; + private String name; + public MockVariable(){} + + public MockVariable setValue(byte[] value) { + this.value = value.clone(); + return this; + } + + public MockVariable setName(String name) { + this.name = name; + return this; + } + + @Override + public byte[] value() { + return this.value.clone(); + } + + public String name() { + return this.name; + } + @Override + public Variable mutate(byte[] value) { + return new MockVariable(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/MyriadStateTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/MyriadStateTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/MyriadStateTest.java new file mode 100644 index 0000000..e5a378f --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/MyriadStateTest.java @@ -0,0 +1,21 @@ +package org.apache.myriad.state; + +import org.apache.mesos.Protos.FrameworkID; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +/** + * Unit test for MyriadState + */ +public class MyriadStateTest { + @Test + public void testSetAndGetFrameworkITask() throws Exception { + MockState mState = new MockState(); + mState.store(new MockVariable().setName("frameworkId").setValue(FrameworkID.newBuilder().setValue("mock-framework").build().toByteArray())); + + MyriadState state = new MyriadState(mState); + state.setFrameworkId(FrameworkID.newBuilder().setValue("mock-framework").build()); + + assertEquals("mock-framework", state.getFrameworkID().getValue()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/NodeTaskTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/NodeTaskTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/NodeTaskTest.java new file mode 100644 index 0000000..d3cf2fe --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/NodeTaskTest.java @@ -0,0 +1,40 @@ +package org.apache.myriad.state; + +import org.apache.myriad.scheduler.ServiceResourceProfile; +import org.apache.myriad.scheduler.constraints.LikeConstraint; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test cases for NodeTask + */ +public class NodeTaskTest { + NodeTask task; + + @Before + public void setUp() throws Exception { + task = new NodeTask(new ServiceResourceProfile("profile", 0.1, 1024.0), new LikeConstraint("hostname", "host-[0-9]*.example.com")); + + task.setHostname("localhost"); + task.setTaskPrefix("prefix"); + task.setProfile(new ServiceResourceProfile("ServiceResourceProfile", 0.1, 1024.0, 0.1, 512.0)); + } + + @Test + public void testCoreState() throws Exception { + Assert.assertEquals("prefix", task.getTaskPrefix()); + Assert.assertEquals("localhost", task.getHostname()); + } + + @Test + public void testConstraintState() throws Exception { + Assert.assertEquals("LIKE", task.getConstraint().getType().toString()); + } + + @Test + public void testServiceResourceProfileState() throws Exception { + Assert.assertEquals(new Double(1024.0), task.getProfile().getMemory()); + Assert.assertEquals(new Double(0.1), task.getProfile().getCpus()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/SchedulerStateTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/SchedulerStateTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/SchedulerStateTest.java new file mode 100644 index 0000000..a3cdf4f --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/SchedulerStateTest.java @@ -0,0 +1,65 @@ +package org.apache.myriad.state; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.Set; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.yarn.server.resourcemanager.recovery.MyriadFileSystemRMStateStore; +import org.apache.mesos.Protos.FrameworkID; +import org.apache.mesos.Protos.TaskID; +import org.apache.myriad.TestObjectFactory; +import org.apache.myriad.scheduler.ServiceResourceProfile; +import org.apache.myriad.scheduler.constraints.LikeConstraint; +import org.junit.Before; +import org.junit.Test; + +import com.google.common.collect.Sets; + +/** + * Unit tests for SchedulerState + */ +public class SchedulerStateTest { + SchedulerState state; + + @Before + public void setUp() throws Exception { + MyriadFileSystemRMStateStore store = TestObjectFactory.getStateStore(getConfiguration()); + state = new SchedulerState(store); + } + + @Test + public void testSetFrameworkID() throws Exception { + state.setFrameworkId(FrameworkID.newBuilder().setValue("mock-framework").build()); + assertEquals("mock-framework", state.getFrameworkID().get().getValue()); + } + + @Test + public void testAddAndRemoveTask() throws Exception { + NodeTask task1 = new NodeTask(new ServiceResourceProfile("profile1", 0.1, 1024.0), new LikeConstraint("hostname", "host-[0-9]*.example.com")); + NodeTask task2 = new NodeTask(new ServiceResourceProfile("profile2", 0.1, 1024.0), new LikeConstraint("hostname", "host-[0-9]*.example.com")); + TaskID id1 = TaskID.newBuilder().setValue("mock-task-1").build(); + TaskID id2 = TaskID.newBuilder().setValue("mock-task-2").build(); + + Set<TaskID> taskIds = Sets.newHashSet(id1, id2); + state.addTask(id1, task1); + assertNotNull(state.getTask(id1)); + state.addTask(id2, task2); + assertNotNull(state.getTask(id2)); + assertEquals(2, state.getTasks(taskIds).size()); + state.removeTask(id1); + assertEquals(1, state.getTasks(taskIds).size()); + assertNull(state.getTask(id1)); + state.removeTask(id2); + assertEquals(0, state.getTasks(taskIds).size()); + assertNull(state.getTask(id2)); + } + + private Configuration getConfiguration() { + Configuration conf = new Configuration(); + conf.set("yarn.resourcemanager.fs.state-store.uri", "file:///tmp/"); + return conf; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/state/utils/ByteBufferSupportTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/state/utils/ByteBufferSupportTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/state/utils/ByteBufferSupportTest.java new file mode 100644 index 0000000..6794ec2 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/state/utils/ByteBufferSupportTest.java @@ -0,0 +1,184 @@ +package org.apache.myriad.state.utils; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.util.List; + +import org.apache.commons.lang3.ArrayUtils; +import org.apache.mesos.Protos; +import org.apache.mesos.Protos.CommandInfo; +import org.apache.mesos.Protos.ExecutorID; +import org.apache.mesos.Protos.ExecutorInfo; +import org.apache.mesos.Protos.FrameworkID; +import org.apache.myriad.scheduler.ServiceResourceProfile; +import org.apache.myriad.scheduler.constraints.LikeConstraint; +import org.apache.myriad.state.NodeTask; +import org.junit.Before; +import org.junit.Test; + +import com.google.common.collect.Lists; + +/** + * Unit tests for ByteBufferSupport class + * + */ +public class ByteBufferSupportTest { + + private static final byte[] BYTE_ARRAY = getByteArray("e04fd020ea3a6910a2d808002b30309d"); + + private NodeTask task; + + @Before + public void setUp() throws Exception { + task = new NodeTask(new ServiceResourceProfile("profile", 0.1, 1024.0), new LikeConstraint("hostname", "host-[0-9]*.example.com")); + task.setHostname("localhost"); + task.setTaskPrefix("prefix"); + task.setExecutorInfo(getExecutorInfo()); + } + + private ExecutorInfo getExecutorInfo() { + FrameworkID id = Protos.FrameworkID.newBuilder().setValue("framework1").build(); + ExecutorID eid = Protos.ExecutorID.newBuilder().setValue("executor1").build(); + CommandInfo cm = Protos.CommandInfo.newBuilder().setValue("command").build(); + return ExecutorInfo.newBuilder().setFrameworkId(id).setExecutorId(eid).setCommand(cm).build(); + } + + private ByteBuffer getByteBuffer(byte[] bytes) { + ByteBuffer bb = ByteBuffer.allocate(bytes.length); + bb.put(bytes); + bb.rewind(); + return bb; + } + + private static byte[] getByteArray(String s) { + int len = s.length(); + byte[] data = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + + Character.digit(s.charAt(i + 1), 16)); + } + return data; + } + + @Test + public void testGetBytes() throws Exception { + ByteBuffer bb = getByteBuffer(BYTE_ARRAY); + + byte[] bytes = ByteBufferSupport.getBytes(bb, bb.capacity()); + + assertEquals(BYTE_ARRAY.length, bytes.length); + + for (int i = 0, j = bytes.length; i < j; i++) { + assertEquals(bytes[i], BYTE_ARRAY[i]); + } + } + + @Test + public void testFillBuffer() throws Exception { + ByteBuffer bb = ByteBufferSupport.fillBuffer(BYTE_ARRAY); + ByteBuffer bbCompare = getByteBuffer(BYTE_ARRAY); + + assertEquals(bb, bbCompare); + } + + @Test + public void testNonEmptyAddByteBuffer() throws Exception { + ByteBuffer bb = getByteBuffer(BYTE_ARRAY); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + ByteBufferSupport.addByteBuffer(bb, stream); + assertEquals(20, stream.size()); + ByteBufferSupport.addByteBuffer(bb, stream); + assertEquals(40, stream.size()); + } + + @Test + public void testEmptyAddByteBuffer() throws Exception { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ByteBuffer bb = getByteBuffer(ArrayUtils.EMPTY_BYTE_ARRAY); + ByteBufferSupport.addByteBuffer(bb, stream); + assertEquals(0, stream.size()); + } + + @Test + public void testNullAddByteBuffer() throws Exception { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + ByteBufferSupport.addByteBuffer(null, stream); + assertEquals(0, stream.size()); + } + + @Test + public void testNonEmptyAddByteBufferList() throws Exception { + ByteBuffer bb = getByteBuffer(BYTE_ARRAY); + ByteBuffer bbTwo = getByteBuffer(BYTE_ARRAY); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + List<ByteBuffer> bList = Lists.newArrayList(bb, bbTwo); + + ByteBufferSupport.addByteBuffers(bList, stream); + assertEquals(44, stream.size()); + } + + @Test + public void testToIntBuffer() throws Exception { + byte[] bytes = ByteBufferSupport.toIntBytes(10); + assertEquals(4, bytes.length); + assertEquals(10, bytes[0]); + assertEquals(0, bytes[1]); + assertEquals(0, bytes[2]); + assertEquals(0, bytes[3]); + } + + @Test + public void testNodeTaskToFromByteBuffer() throws Exception { + ByteBuffer bb = ByteBufferSupport.toByteBuffer(task); + NodeTask sTask = ByteBufferSupport.toNodeTask(bb); + + assertEquals(task.getClass().getName(), sTask.getClass().getName()); + assertEquals(task.getHostname(), sTask.getHostname()); + assertEquals(task.getSlaveId(), sTask.getSlaveId()); + assertEquals(task.getTaskPrefix(), sTask.getTaskPrefix()); + assertEquals(task.getProfile(), sTask.getProfile()); + assertEquals(task.getSlaveAttributes(), sTask.getSlaveAttributes()); + assertEquals(task.getConstraint(), sTask.getConstraint()); + assertEquals(task.getExecutorInfo(), sTask.getExecutorInfo()); + } + + @Test + public void testFrameworkIDToFromByteBuffer() throws Exception { + ByteBuffer bb = ByteBufferSupport.toByteBuffer(getExecutorInfo().getFrameworkId()); + FrameworkID id = ByteBufferSupport.toFrameworkID(bb); + + assertEquals(getExecutorInfo().getFrameworkId(), id); + } + + @Test + public void testToString() throws Exception { + String output = ByteBufferSupport.toString(ByteBufferSupport.toByteBuffer(task)); + + assertTrue(output.contains("\"name\":\"profile\"")); + assertTrue(output.contains("\"cpus\":0.1")); + assertTrue(output.contains("\"memory\":1024.0")); + assertTrue(output.contains("\"executorCpu\":0.0")); + assertTrue(output.contains("\"executorMemory\":0.0")); + assertTrue(output.contains("\"className\":\"org.apache.myriad.scheduler.ServiceResourceProfile\"")); + } + + public void testExecutorInfoToFromByteBuffer() throws Exception { + ExecutorInfo info = getExecutorInfo(); + ByteBuffer bb = ByteBufferSupport.toByteBuffer(task); + ExecutorInfo bInfo = ByteBufferSupport.toExecutorInfo(bb); + + assertEquals(info.getClass().getName(), bInfo.getClass().getName()); + } + + public void testGetConstraint() throws Exception { + ByteBuffer bb = ByteBufferSupport.toByteBuffer(task); + + assertEquals(task.getConstraint(), ByteBufferSupport.getConstraint(bb)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/webapp/HttpConnectorProviderTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/webapp/HttpConnectorProviderTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/webapp/HttpConnectorProviderTest.java new file mode 100644 index 0000000..5c4dd7d --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/webapp/HttpConnectorProviderTest.java @@ -0,0 +1,22 @@ +package org.apache.myriad.webapp; + +import static org.junit.Assert.assertEquals; + +import org.apache.myriad.BaseConfigurableTest; +import org.junit.Test; +import org.mortbay.jetty.Connector; + +/** + * Unit tests for HttpConnectionProvider + */ +public class HttpConnectorProviderTest extends BaseConfigurableTest { + + @Test + public void testConnector() throws Exception { + HttpConnectorProvider provider = new HttpConnectorProvider(cfg); + Connector connector = provider.get(); + assertEquals(8192, connector.getPort()); + assertEquals("0.0.0.0", connector.getHost()); + assertEquals("Myriad", connector.getName()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/java/org/apache/myriad/webapp/MyriadWebServerTest.java ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/java/org/apache/myriad/webapp/MyriadWebServerTest.java b/myriad-scheduler/src/test/java/org/apache/myriad/webapp/MyriadWebServerTest.java new file mode 100644 index 0000000..31c7119 --- /dev/null +++ b/myriad-scheduler/src/test/java/org/apache/myriad/webapp/MyriadWebServerTest.java @@ -0,0 +1,29 @@ +package org.apache.myriad.webapp; + +import static org.junit.Assert.assertEquals; + +import org.apache.myriad.BaseConfigurableTest; +import org.apache.myriad.TestObjectFactory; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test cases for MyriadWebServer class + */ +public class MyriadWebServerTest extends BaseConfigurableTest { + MyriadWebServer webServer; + + @Before + public void setUp() throws Exception { + super.setUp(); + webServer = TestObjectFactory.getMyriadWebServer(cfg); + } + + @Test + public void testStartStopMyriadWebServer() throws Exception { + webServer.start(); + assertEquals(MyriadWebServer.Status.STARTED, webServer.getStatus()); + webServer.stop(); + assertEquals(MyriadWebServer.Status.STOPPED, webServer.getStatus()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/4a6e50c4/myriad-scheduler/src/test/resources/myriad-config-test-default.yml ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/test/resources/myriad-config-test-default.yml b/myriad-scheduler/src/test/resources/myriad-config-test-default.yml index 2945bcd..f6f6b58 100644 --- a/myriad-scheduler/src/test/resources/myriad-config-test-default.yml +++ b/myriad-scheduler/src/test/resources/myriad-config-test-default.yml @@ -15,8 +15,10 @@ # specific language governing permissions and limitations # under the License. +servedConfigPath: /tmp/myriadEtc +servedBinaryPath: /tmp/myriadBinary mesosMaster: 10.0.2.15:5050 -haEnabled: true +haEnabled: false checkpoint: false frameworkFailoverTimeout: 44200000 frameworkName: MyriadTest @@ -58,7 +60,8 @@ yarnEnvironment: mesosAuthenticationPrincipal: mesosAuthenticationSecretFilename: services: - jobhistory: + jobhistory: + maxInstances: 1 jvmMaxMemoryMB: 1024 cpus: 1 ports: