From db8f93f7f700b4e52076365cb2ac360b7ee502cf Mon Sep 17 00:00:00 2001 From: littlezhou Date: Mon, 5 Mar 2018 17:04:30 +0800 Subject: [PATCH] Fix #1615, Fix bug in RPC API getActionInfo --- .../protobuffer/ProtoBufferHelper.java | 1 + .../server/engine/cmdlet/TestActionRpc.java | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 smart-server/src/test/java/org/smartdata/server/engine/cmdlet/TestActionRpc.java diff --git a/smart-common/src/main/java/org/smartdata/protocol/protobuffer/ProtoBufferHelper.java b/smart-common/src/main/java/org/smartdata/protocol/protobuffer/ProtoBufferHelper.java index 661a9085b6c..f84ea0c1b8f 100644 --- a/smart-common/src/main/java/org/smartdata/protocol/protobuffer/ProtoBufferHelper.java +++ b/smart-common/src/main/java/org/smartdata/protocol/protobuffer/ProtoBufferHelper.java @@ -143,6 +143,7 @@ public static ActionInfo convert(ActionInfoProto infoProto) { .setCreateTime(infoProto.getCreateTime()) .setFinished(infoProto.getFinished()) .setFinishTime(infoProto.getFinishTime()) + .setProgress(infoProto.getProgress()) .setActionId(infoProto.getActionId()) .setCmdletId(infoProto.getCmdletId()); List list = infoProto.getArgsList(); diff --git a/smart-server/src/test/java/org/smartdata/server/engine/cmdlet/TestActionRpc.java b/smart-server/src/test/java/org/smartdata/server/engine/cmdlet/TestActionRpc.java new file mode 100644 index 00000000000..ef0572a1671 --- /dev/null +++ b/smart-server/src/test/java/org/smartdata/server/engine/cmdlet/TestActionRpc.java @@ -0,0 +1,54 @@ +/** + * 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.smartdata.server.engine.cmdlet; + +import org.junit.Assert; +import org.junit.Test; +import org.smartdata.admin.SmartAdmin; +import org.smartdata.model.ActionInfo; +import org.smartdata.model.CmdletInfo; +import org.smartdata.server.MiniSmartClusterHarness; + +public class TestActionRpc extends MiniSmartClusterHarness { + + @Test + public void testActionProgress() throws Exception { + waitTillSSMExitSafeMode(); + + SmartAdmin admin = new SmartAdmin(smartContext.getConf()); + long cmdId = admin.submitCmdlet("sleep -ms 6000"); + try { + CmdletInfo cinfo = admin.getCmdletInfo(cmdId); + long actId = cinfo.getAids().get(0); + + ActionInfo actionInfo; + while (true) { + actionInfo = admin.getActionInfo(actId); + if (actionInfo.isFinished()) { + Assert.fail("No intermediate progress observed."); + } + if (actionInfo.getProgress() > 0 && actionInfo.getProgress() < 1.0) { + return; + } + Thread.sleep(500); + } + } finally { + admin.close(); + } + } +}