[
https://issues.apache.org/jira/browse/FLINK-2111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14713561#comment-14713561
]
ASF GitHub Bot commented on FLINK-2111:
---------------------------------------
Github user mjsax commented on a diff in the pull request:
https://github.com/apache/flink/pull/750#discussion_r37990248
--- Diff:
flink-clients/src/test/java/org/apache/flink/client/CliFrontendStopTest.java ---
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.client;
+
+import java.util.UUID;
+
+import akka.actor.*;
+import akka.testkit.JavaTestKit;
+
+import org.apache.flink.client.cli.CommandLineOptions;
+import org.apache.flink.api.common.JobID;
+import org.apache.flink.runtime.instance.ActorGateway;
+import org.apache.flink.runtime.instance.AkkaActorGateway;
+import org.apache.flink.runtime.messages.JobManagerMessages;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import scala.Option;
+import static
org.apache.flink.client.CliFrontendTestUtils.pipeSystemOutToNull;
+import static org.junit.Assert.*;
+
+public class CliFrontendStopTest {
+
+ private static ActorSystem actorSystem;
+
+ @BeforeClass
+ public static void setup() {
+ pipeSystemOutToNull();
+ actorSystem = ActorSystem.create("TestingActorSystem");
+ }
+
+ @AfterClass
+ public static void teardown() {
+ JavaTestKit.shutdownActorSystem(actorSystem);
+ actorSystem = null;
+ }
+
+ @BeforeClass
+ public static void init() {
+ CliFrontendTestUtils.pipeSystemOutToNull();
+ CliFrontendTestUtils.clearGlobalConfiguration();
+ }
+
+ @Test
+ public void testStop() {
+ try {
+ // test unrecognized option
+ {
+ String[] parameters = { "-v", "-l" };
+ CliFrontend testFrontend = new
CliFrontend(CliFrontendTestUtils.getConfigDir());
+ int retCode = testFrontend.stop(parameters);
+ assertTrue(retCode != 0);
+ }
+
+ // test missing job id
+ {
+ String[] parameters = {};
+ CliFrontend testFrontend = new
CliFrontend(CliFrontendTestUtils.getConfigDir());
+ int retCode = testFrontend.stop(parameters);
+ assertTrue(retCode != 0);
+ }
+
+ // test stop properly
+ {
+ JobID jid = new JobID();
+ String jidString = jid.toString();
+
+ final Option<UUID> leaderSessionID =
Option.<UUID>apply(UUID.randomUUID());
+ final ActorRef jm =
actorSystem.actorOf(Props.create(CliJobManager.class, jid));
+
+ final ActorGateway gateway = new
AkkaActorGateway(jm, leaderSessionID);
+
+ String[] parameters = { jidString };
+ StopTestCliFrontend testFrontend = new
StopTestCliFrontend(gateway);
+
+ int retCode = testFrontend.stop(parameters);
+ assertTrue(retCode == 0);
+ }
+
+ // test stop properly
+ {
+ JobID jid1 = new JobID();
+ JobID jid2 = new JobID();
+
+ final Option<UUID> leaderSessionID =
Option.<UUID>apply(UUID.randomUUID());
+ final ActorRef jm =
actorSystem.actorOf(Props.create(CliJobManager.class, jid1));
+
+ final ActorGateway gateway = new
AkkaActorGateway(jm, leaderSessionID);
+
+ String[] parameters = { jid2.toString() };
+ StopTestCliFrontend testFrontend = new
StopTestCliFrontend(gateway);
+
+ assertTrue(testFrontend.stop(parameters) != 0);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Program caused an exception: " + e.getMessage());
--- End diff --
Again, I adopted to other test that to the same thing:
`CliFrontendListCancelTest.java` and `CliFrontendRunTest.java`. If incorrect,
other tests need to get fixed, too.
> Add "stop" signal to cleanly shutdown streaming jobs
> ----------------------------------------------------
>
> Key: FLINK-2111
> URL: https://issues.apache.org/jira/browse/FLINK-2111
> Project: Flink
> Issue Type: Improvement
> Components: Distributed Runtime, JobManager, Local Runtime,
> Streaming, TaskManager, Webfrontend
> Reporter: Matthias J. Sax
> Assignee: Matthias J. Sax
> Priority: Minor
>
> Currently, streaming jobs can only be stopped using "cancel" command, what is
> a "hard" stop with no clean shutdown.
> The new introduced "stop" signal, will only affect streaming source tasks
> such that the sources can stop emitting data and shutdown cleanly, resulting
> in a clean shutdown of the whole streaming job.
> This feature is a pre-requirment for
> https://issues.apache.org/jira/browse/FLINK-1929
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)