You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by je...@apache.org on 2018/10/25 20:43:09 UTC
[pulsar] branch master updated: Set function resources properly
(#2841)
This is an automated email from the ASF dual-hosted git repository.
jerrypeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new a9a7f30 Set function resources properly (#2841)
a9a7f30 is described below
commit a9a7f30f0e8887a43b283b4aa22670b8f61ee00a
Author: Sanjeev Kulkarni <sa...@gmail.com>
AuthorDate: Thu Oct 25 13:43:04 2018 -0700
Set function resources properly (#2841)
* Set function resources properly
* Added unittests
---
.../apache/pulsar/admin/cli/CmdFunctionsTest.java | 187 +++++++++++++++++++++
.../org/apache/pulsar/admin/cli/CmdFunctions.java | 17 +-
2 files changed, 203 insertions(+), 1 deletion(-)
diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java
index 4f30bf1..7cd870f 100644
--- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java
+++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java
@@ -812,6 +812,193 @@ public class CmdFunctionsTest {
}
@Test
+ public void testCreateFunctionWithCpu() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "create",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--cpu", "5.0"
+ });
+
+ CreateFunction creater = cmd.getCreater();
+
+ assertEquals(fnName, creater.getFunctionName());
+ assertEquals(inputTopicName, creater.getInputs());
+ assertEquals(outputTopicName, creater.getOutput());
+ assertEquals(creater.getFunctionConfig().getResources().getCpu(), 5.0);
+ // Disk/Ram should be default
+ assertEquals(creater.getFunctionConfig().getResources().getRam(), new Long(1073741824l));
+ assertEquals(creater.getFunctionConfig().getResources().getDisk(), new Long(10737418240l));
+ verify(functions, times(1)).createFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+ @Test
+ public void testCreateFunctionWithRam() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "create",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--ram", "5656565656"
+ });
+
+ CreateFunction creater = cmd.getCreater();
+
+ assertEquals(fnName, creater.getFunctionName());
+ assertEquals(inputTopicName, creater.getInputs());
+ assertEquals(outputTopicName, creater.getOutput());
+ assertEquals(creater.getFunctionConfig().getResources().getRam(), new Long(5656565656l));
+ // cpu/disk should be default
+ assertEquals(creater.getFunctionConfig().getResources().getCpu(), 1.0);
+ assertEquals(creater.getFunctionConfig().getResources().getDisk(), new Long(10737418240l));
+ verify(functions, times(1)).createFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+ @Test
+ public void testCreateFunctionWithDisk() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "create",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--disk", "8080808080808080"
+ });
+
+ CreateFunction creater = cmd.getCreater();
+
+ assertEquals(fnName, creater.getFunctionName());
+ assertEquals(inputTopicName, creater.getInputs());
+ assertEquals(outputTopicName, creater.getOutput());
+ assertEquals(creater.getFunctionConfig().getResources().getDisk(), new Long(8080808080808080l));
+ // cpu/Ram should be default
+ assertEquals(creater.getFunctionConfig().getResources().getRam(), new Long(1073741824l));
+ assertEquals(creater.getFunctionConfig().getResources().getCpu(), 1.0);
+ verify(functions, times(1)).createFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+
+ @Test
+ public void testUpdateFunctionWithCpu() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "update",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--cpu", "5.0"
+ });
+
+ UpdateFunction updater = cmd.getUpdater();
+
+ assertEquals(fnName, updater.getFunctionName());
+ assertEquals(inputTopicName, updater.getInputs());
+ assertEquals(outputTopicName, updater.getOutput());
+ assertEquals(updater.getFunctionConfig().getResources().getCpu(), 5.0);
+ // Disk/Ram should be default
+ assertEquals(updater.getFunctionConfig().getResources().getRam(), new Long(1073741824l));
+ assertEquals(updater.getFunctionConfig().getResources().getDisk(), new Long(10737418240l));
+ verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+ @Test
+ public void testUpdateFunctionWithRam() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "update",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--ram", "5656565656"
+ });
+
+ UpdateFunction updater = cmd.getUpdater();
+
+ assertEquals(fnName, updater.getFunctionName());
+ assertEquals(inputTopicName, updater.getInputs());
+ assertEquals(outputTopicName, updater.getOutput());
+ assertEquals(updater.getFunctionConfig().getResources().getRam(), new Long(5656565656l));
+ // cpu/disk should be default
+ assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0);
+ assertEquals(updater.getFunctionConfig().getResources().getDisk(), new Long(10737418240l));
+ verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+ @Test
+ public void testUpdateFunctionWithDisk() throws Exception {
+ String fnName = TEST_NAME + "-function";
+ String inputTopicName = TEST_NAME + "-input-topic";
+ String outputTopicName = TEST_NAME + "-output-topic";
+
+ final String url = "file:" + JAR_NAME;
+ cmd.run(new String[] {
+ "update",
+ "--name", fnName,
+ "--inputs", inputTopicName,
+ "--output", outputTopicName,
+ "--jar", url,
+ "--tenant", "sample",
+ "--namespace", "ns1",
+ "--className", DummyFunction.class.getName(),
+ "--disk", "8080808080808080"
+ });
+
+ UpdateFunction updater = cmd.getUpdater();
+
+ assertEquals(fnName, updater.getFunctionName());
+ assertEquals(inputTopicName, updater.getInputs());
+ assertEquals(outputTopicName, updater.getOutput());
+ assertEquals(updater.getFunctionConfig().getResources().getDisk(), new Long(8080808080808080l));
+ // cpu/Ram should be default
+ assertEquals(updater.getFunctionConfig().getResources().getRam(), new Long(1073741824l));
+ assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0);
+ verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString());
+ }
+
+ @Test
public void TestCreateSameInOutTopic() throws Exception {
String[] correctArgs = new String[]{
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
index 7564d32..a75092c 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
@@ -414,7 +414,22 @@ public class CmdFunctions extends CmdBase {
functionConfig.setParallelism(parallelism);
}
- functionConfig.setResources(new Resources(cpu, ram, disk));
+ Resources resources = functionConfig.getResources();
+ if (resources == null) {
+ resources = new Resources();
+ }
+ if (cpu != null) {
+ resources.setCpu(cpu);
+ }
+
+ if (ram != null) {
+ resources.setRam(ram);
+ }
+
+ if (disk != null) {
+ resources.setDisk(disk);
+ }
+ functionConfig.setResources(resources);
if (timeoutMs != null) {
functionConfig.setTimeoutMs(timeoutMs);