Search in sources :

Example 1 with SampleTaskSpec

use of org.apache.kafka.trogdor.task.SampleTaskSpec in project kafka by apache.

the class CoordinatorTest method testWorkersExitingAtDifferentTimes.

@Test
public void testWorkersExitingAtDifferentTimes() throws Exception {
    MockTime time = new MockTime(0, 0, 0);
    Scheduler scheduler = new MockScheduler(time);
    try (MiniTrogdorCluster cluster = new MiniTrogdorCluster.Builder().addCoordinator("node01").addAgent("node02").addAgent("node03").scheduler(scheduler).build()) {
        CoordinatorClient coordinatorClient = cluster.coordinatorClient();
        new ExpectedTasks().waitFor(coordinatorClient);
        HashMap<String, Long> nodeToExitMs = new HashMap<>();
        nodeToExitMs.put("node02", 10L);
        nodeToExitMs.put("node03", 20L);
        SampleTaskSpec fooSpec = new SampleTaskSpec(2, 100, nodeToExitMs, "");
        coordinatorClient.createTask(new CreateTaskRequest("foo", fooSpec));
        new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").taskState(new TaskPending(fooSpec)).build()).waitFor(coordinatorClient);
        time.sleep(2);
        ObjectNode status1 = new ObjectNode(JsonNodeFactory.instance);
        status1.set("node02", new TextNode("active"));
        status1.set("node03", new TextNode("active"));
        new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").taskState(new TaskRunning(fooSpec, 2, status1)).workerState(new WorkerRunning("foo", fooSpec, 2, new TextNode("active"))).build()).waitFor(coordinatorClient).waitFor(cluster.agentClient("node02")).waitFor(cluster.agentClient("node03"));
        time.sleep(10);
        ObjectNode status2 = new ObjectNode(JsonNodeFactory.instance);
        status2.set("node02", new TextNode("halted"));
        status2.set("node03", new TextNode("active"));
        new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").taskState(new TaskRunning(fooSpec, 2, status2)).workerState(new WorkerRunning("foo", fooSpec, 2, new TextNode("active"))).build()).waitFor(coordinatorClient).waitFor(cluster.agentClient("node03"));
        new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").taskState(new TaskRunning(fooSpec, 2, status2)).workerState(new WorkerDone("foo", fooSpec, 2, 12, new TextNode("halted"), "")).build()).waitFor(cluster.agentClient("node02"));
        time.sleep(10);
        ObjectNode status3 = new ObjectNode(JsonNodeFactory.instance);
        status3.set("node02", new TextNode("halted"));
        status3.set("node03", new TextNode("halted"));
        new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").taskState(new TaskDone(fooSpec, 2, 22, "", false, status3)).build()).waitFor(coordinatorClient);
    }
}
Also used : MockScheduler(org.apache.kafka.common.utils.MockScheduler) WorkerDone(org.apache.kafka.trogdor.rest.WorkerDone) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) WorkerRunning(org.apache.kafka.trogdor.rest.WorkerRunning) HashMap(java.util.HashMap) MockScheduler(org.apache.kafka.common.utils.MockScheduler) Scheduler(org.apache.kafka.common.utils.Scheduler) TaskDone(org.apache.kafka.trogdor.rest.TaskDone) SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) TextNode(com.fasterxml.jackson.databind.node.TextNode) ExpectedTaskBuilder(org.apache.kafka.trogdor.common.ExpectedTasks.ExpectedTaskBuilder) TaskPending(org.apache.kafka.trogdor.rest.TaskPending) ExpectedTasks(org.apache.kafka.trogdor.common.ExpectedTasks) CreateTaskRequest(org.apache.kafka.trogdor.rest.CreateTaskRequest) MiniTrogdorCluster(org.apache.kafka.trogdor.common.MiniTrogdorCluster) TaskRunning(org.apache.kafka.trogdor.rest.TaskRunning) MockTime(org.apache.kafka.common.utils.MockTime) Test(org.junit.jupiter.api.Test)

Example 2 with SampleTaskSpec

use of org.apache.kafka.trogdor.task.SampleTaskSpec in project apache-kafka-on-k8s by banzaicloud.

the class AgentTest method testWorkerCompletions.

@Test
public void testWorkerCompletions() throws Exception {
    MockTime time = new MockTime(0, 0, 0);
    MockScheduler scheduler = new MockScheduler(time);
    Agent agent = createAgent(scheduler);
    AgentClient client = new AgentClient.Builder().maxTries(10).target("localhost", agent.port()).build();
    new ExpectedTasks().waitFor(client);
    SampleTaskSpec fooSpec = new SampleTaskSpec(0, 900000, 1, "");
    client.createWorker(new CreateWorkerRequest("foo", fooSpec));
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerRunning(fooSpec, 0, "")).build()).waitFor(client);
    SampleTaskSpec barSpec = new SampleTaskSpec(0, 900000, 2, "baz");
    client.createWorker(new CreateWorkerRequest("bar", barSpec));
    time.sleep(1);
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerDone(fooSpec, 0, 1, "", "")).build()).addTask(new ExpectedTaskBuilder("bar").workerState(new WorkerRunning(barSpec, 0, "")).build()).waitFor(client);
    time.sleep(1);
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerDone(fooSpec, 0, 1, "", "")).build()).addTask(new ExpectedTaskBuilder("bar").workerState(new WorkerDone(barSpec, 0, 2, "", "baz")).build()).waitFor(client);
}
Also used : MockScheduler(org.apache.kafka.common.utils.MockScheduler) ExpectedTasks(org.apache.kafka.trogdor.common.ExpectedTasks) WorkerDone(org.apache.kafka.trogdor.rest.WorkerDone) WorkerRunning(org.apache.kafka.trogdor.rest.WorkerRunning) SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) CreateWorkerRequest(org.apache.kafka.trogdor.rest.CreateWorkerRequest) ExpectedTaskBuilder(org.apache.kafka.trogdor.common.ExpectedTasks.ExpectedTaskBuilder) MockTime(org.apache.kafka.common.utils.MockTime) Test(org.junit.Test)

Example 3 with SampleTaskSpec

use of org.apache.kafka.trogdor.task.SampleTaskSpec in project apache-kafka-on-k8s by banzaicloud.

the class JsonSerializationTest method testDeserializationDoesNotProduceNulls.

@Test
public void testDeserializationDoesNotProduceNulls() throws Exception {
    verify(new FilesUnreadableFaultSpec(0, 0, null, null, null, 0));
    verify(new Kibosh.KiboshControlFile(null));
    verify(new NetworkPartitionFaultSpec(0, 0, null));
    verify(new ProcessStopFaultSpec(0, 0, null, null));
    verify(new AgentStatusResponse(0, null));
    verify(new TasksResponse(null));
    verify(new WorkerDone(null, 0, 0, null, null));
    verify(new WorkerRunning(null, 0, null));
    verify(new WorkerStopping(null, 0, null));
    verify(new ProduceBenchSpec(0, 0, null, null, 0, 0, null, null, null, 0, 0, "test-topic", 1, (short) 3));
    verify(new RoundTripWorkloadSpec(0, 0, null, null, 0, null, null, 0));
    verify(new SampleTaskSpec(0, 0, 0, null));
}
Also used : WorkerDone(org.apache.kafka.trogdor.rest.WorkerDone) WorkerStopping(org.apache.kafka.trogdor.rest.WorkerStopping) TasksResponse(org.apache.kafka.trogdor.rest.TasksResponse) WorkerRunning(org.apache.kafka.trogdor.rest.WorkerRunning) NetworkPartitionFaultSpec(org.apache.kafka.trogdor.fault.NetworkPartitionFaultSpec) SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) RoundTripWorkloadSpec(org.apache.kafka.trogdor.workload.RoundTripWorkloadSpec) Kibosh(org.apache.kafka.trogdor.fault.Kibosh) AgentStatusResponse(org.apache.kafka.trogdor.rest.AgentStatusResponse) ProcessStopFaultSpec(org.apache.kafka.trogdor.fault.ProcessStopFaultSpec) ProduceBenchSpec(org.apache.kafka.trogdor.workload.ProduceBenchSpec) FilesUnreadableFaultSpec(org.apache.kafka.trogdor.fault.FilesUnreadableFaultSpec) Test(org.junit.Test)

Example 4 with SampleTaskSpec

use of org.apache.kafka.trogdor.task.SampleTaskSpec in project kafka by apache.

the class AgentTest method testWorkerCompletions.

@Test
public void testWorkerCompletions() throws Exception {
    MockTime time = new MockTime(0, 0, 0);
    MockScheduler scheduler = new MockScheduler(time);
    Agent agent = createAgent(scheduler);
    AgentClient client = new AgentClient.Builder().maxTries(10).target("localhost", agent.port()).build();
    new ExpectedTasks().waitFor(client);
    SampleTaskSpec fooSpec = new SampleTaskSpec(0, 900000, Collections.singletonMap("node01", 1L), "");
    client.createWorker(new CreateWorkerRequest(0, "foo", fooSpec));
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerRunning("foo", fooSpec, 0, new TextNode("active"))).build()).waitFor(client);
    SampleTaskSpec barSpec = new SampleTaskSpec(0, 900000, Collections.singletonMap("node01", 2L), "baz");
    client.createWorker(new CreateWorkerRequest(1, "bar", barSpec));
    time.sleep(1);
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerDone("foo", fooSpec, 0, 1, new TextNode("halted"), "")).build()).addTask(new ExpectedTaskBuilder("bar").workerState(new WorkerRunning("bar", barSpec, 0, new TextNode("active"))).build()).waitFor(client);
    time.sleep(1);
    new ExpectedTasks().addTask(new ExpectedTaskBuilder("foo").workerState(new WorkerDone("foo", fooSpec, 0, 1, new TextNode("halted"), "")).build()).addTask(new ExpectedTaskBuilder("bar").workerState(new WorkerDone("bar", barSpec, 0, 2, new TextNode("halted"), "baz")).build()).waitFor(client);
}
Also used : MockScheduler(org.apache.kafka.common.utils.MockScheduler) ExpectedTasks(org.apache.kafka.trogdor.common.ExpectedTasks) WorkerDone(org.apache.kafka.trogdor.rest.WorkerDone) WorkerRunning(org.apache.kafka.trogdor.rest.WorkerRunning) SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) TextNode(com.fasterxml.jackson.databind.node.TextNode) CreateWorkerRequest(org.apache.kafka.trogdor.rest.CreateWorkerRequest) ExpectedTaskBuilder(org.apache.kafka.trogdor.common.ExpectedTasks.ExpectedTaskBuilder) MockTime(org.apache.kafka.common.utils.MockTime) Test(org.junit.jupiter.api.Test)

Example 5 with SampleTaskSpec

use of org.apache.kafka.trogdor.task.SampleTaskSpec in project kafka by apache.

the class AgentTest method testAgentExecWithNormalExit.

@Test
public void testAgentExecWithNormalExit() throws Exception {
    Agent agent = createAgent(Scheduler.SYSTEM);
    SampleTaskSpec spec = new SampleTaskSpec(0, 120000, Collections.singletonMap("node01", 1L), "");
    TaskSpec rebasedSpec = agent.rebaseTaskSpecTime(spec);
    testExec(agent, String.format("Waiting for completion of task:%s%n", JsonUtil.toPrettyJsonString(rebasedSpec)) + String.format("Task succeeded with status \"halted\"%n"), true, rebasedSpec);
    agent.beginShutdown();
    agent.waitForShutdown();
}
Also used : SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) NoOpTaskSpec(org.apache.kafka.trogdor.task.NoOpTaskSpec) TaskSpec(org.apache.kafka.trogdor.task.TaskSpec) SampleTaskSpec(org.apache.kafka.trogdor.task.SampleTaskSpec) Test(org.junit.jupiter.api.Test)

Aggregations

SampleTaskSpec (org.apache.kafka.trogdor.task.SampleTaskSpec)5 WorkerDone (org.apache.kafka.trogdor.rest.WorkerDone)4 WorkerRunning (org.apache.kafka.trogdor.rest.WorkerRunning)4 MockScheduler (org.apache.kafka.common.utils.MockScheduler)3 MockTime (org.apache.kafka.common.utils.MockTime)3 ExpectedTasks (org.apache.kafka.trogdor.common.ExpectedTasks)3 ExpectedTaskBuilder (org.apache.kafka.trogdor.common.ExpectedTasks.ExpectedTaskBuilder)3 Test (org.junit.jupiter.api.Test)3 TextNode (com.fasterxml.jackson.databind.node.TextNode)2 CreateWorkerRequest (org.apache.kafka.trogdor.rest.CreateWorkerRequest)2 Test (org.junit.Test)2 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 HashMap (java.util.HashMap)1 Scheduler (org.apache.kafka.common.utils.Scheduler)1 MiniTrogdorCluster (org.apache.kafka.trogdor.common.MiniTrogdorCluster)1 FilesUnreadableFaultSpec (org.apache.kafka.trogdor.fault.FilesUnreadableFaultSpec)1 Kibosh (org.apache.kafka.trogdor.fault.Kibosh)1 NetworkPartitionFaultSpec (org.apache.kafka.trogdor.fault.NetworkPartitionFaultSpec)1 ProcessStopFaultSpec (org.apache.kafka.trogdor.fault.ProcessStopFaultSpec)1 AgentStatusResponse (org.apache.kafka.trogdor.rest.AgentStatusResponse)1