You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@twill.apache.org by ch...@apache.org on 2014/04/22 08:06:28 UTC
[31/50] [abbrv] git commit: made changes as per review #18209 for
#TWILL-40
made changes as per review #18209 for #TWILL-40
Signed-off-by: Terence Yim <te...@continuuity.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-twill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-twill/commit/e3ccab18
Tree: http://git-wip-us.apache.org/repos/asf/incubator-twill/tree/e3ccab18
Diff: http://git-wip-us.apache.org/repos/asf/incubator-twill/diff/e3ccab18
Branch: refs/heads/site
Commit: e3ccab184dcea843fa12b877b238a2ca0256f906
Parents: fd10dc9
Author: Fabian Murariu <mu...@gmail.com>
Authored: Wed Feb 19 17:03:49 2014 +0200
Committer: Terence Yim <te...@continuuity.com>
Committed: Fri Feb 21 12:33:26 2014 -0800
----------------------------------------------------------------------
.../apache/twill/api/ResourceSpecification.java | 71 +++++++++++++-------
.../internal/DefaultResourceSpecification.java | 20 +++---
.../json/ResourceSpecificationCodec.java | 7 +-
.../json/ResourceSpecificationCodecTest.java | 30 +++++++--
.../twill/internal/yarn/YarnAMClient.java | 10 +--
5 files changed, 90 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-twill/blob/e3ccab18/twill-api/src/main/java/org/apache/twill/api/ResourceSpecification.java
----------------------------------------------------------------------
diff --git a/twill-api/src/main/java/org/apache/twill/api/ResourceSpecification.java b/twill-api/src/main/java/org/apache/twill/api/ResourceSpecification.java
index 5416346..b37e491 100644
--- a/twill-api/src/main/java/org/apache/twill/api/ResourceSpecification.java
+++ b/twill-api/src/main/java/org/apache/twill/api/ResourceSpecification.java
@@ -19,6 +19,11 @@ package org.apache.twill.api;
import org.apache.twill.internal.DefaultResourceSpecification;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
/**
* This interface provides specifications for resource requirements including set and get methods
* for number of cores, amount of memory, and number of instances.
@@ -83,14 +88,14 @@ public interface ResourceSpecification {
* This is a suggestion for the scheduler depending on cluster load it may ignore it
* @return An array containing the hosts where the containers should run
*/
- String[] getHosts();
+ List<String> getHosts();
/**
* Returns the execution racks.
* This is a suggestion for the scheduler depending on cluster load it may ignore it
* @return An array containing the racks where the containers should run
*/
- String[] getRacks();
+ List<String> getRacks();
/**
* Builder for creating {@link ResourceSpecification}.
@@ -102,31 +107,13 @@ public interface ResourceSpecification {
private int uplink = -1;
private int downlink = -1;
private int instances = 1;
- private String[] hosts = new String[0];
- private String[] racks = new String[0];
+ private List<String> hosts = new LinkedList<String>();
+ private List<String> racks = new LinkedList<String>();
public static CoreSetter with() {
return new Builder().new CoreSetter();
}
- public final class HostsSetter extends Build {
- public RackSetter setHosts(String... hosts) {
- if (hosts != null) {
- Builder.this.hosts = hosts.clone();
- }
- return new RackSetter();
- }
- }
-
- public final class RackSetter extends Build {
- public AfterRacks setRacks(String... racks) {
- if (racks != null) {
- Builder.this.racks = racks.clone();
- }
- return new AfterRacks();
- }
- }
-
public final class CoreSetter {
@Deprecated
public MemorySetter setCores(int cores) {
@@ -148,13 +135,13 @@ public interface ResourceSpecification {
}
public final class AfterMemory extends Build {
- public HostsSetter setInstances(int instances) {
+ public AfterInstances setInstances(int instances) {
Builder.this.instances = instances;
- return new HostsSetter();
+ return new AfterInstances();
}
}
- public final class AfterRacks extends Build {
+ public final class AfterInstances extends Build {
public AfterUplink setUplink(int uplink, SizeUnit unit) {
Builder.this.uplink = uplink * unit.multiplier;
return new AfterUplink();
@@ -162,10 +149,42 @@ public interface ResourceSpecification {
}
public final class AfterUplink extends Build {
- public Done setDownlink(int downlink, SizeUnit unit) {
+ public AfterDownlink setDownlink(int downlink, SizeUnit unit) {
Builder.this.downlink = downlink * unit.multiplier;
+ return new AfterDownlink();
+ }
+ }
+
+ public final class AfterHosts extends Build {
+ public Done setRacks(String... racks) {
+ if (racks != null) {
+ Builder.this.racks = Arrays.asList(racks);
+ }
return new Done();
}
+
+ public Done setRacks(Collection<String> racks){
+ if (racks != null){
+ Builder.this.racks.addAll(racks);
+ }
+ return new Done();
+ }
+ }
+
+ public final class AfterDownlink extends Build {
+ public AfterHosts setHosts(String... hosts) {
+ if (hosts != null) {
+ Builder.this.hosts = Arrays.asList(hosts);
+ }
+ return new AfterHosts();
+ }
+
+ public AfterHosts setHosts(Collection<String> hosts){
+ if (hosts != null){
+ Builder.this.hosts.addAll(hosts);
+ }
+ return new AfterHosts();
+ }
}
public final class Done extends Build {
http://git-wip-us.apache.org/repos/asf/incubator-twill/blob/e3ccab18/twill-api/src/main/java/org/apache/twill/internal/DefaultResourceSpecification.java
----------------------------------------------------------------------
diff --git a/twill-api/src/main/java/org/apache/twill/internal/DefaultResourceSpecification.java b/twill-api/src/main/java/org/apache/twill/internal/DefaultResourceSpecification.java
index 7274b5c..3b1cc26 100644
--- a/twill-api/src/main/java/org/apache/twill/internal/DefaultResourceSpecification.java
+++ b/twill-api/src/main/java/org/apache/twill/internal/DefaultResourceSpecification.java
@@ -19,6 +19,9 @@ package org.apache.twill.internal;
import org.apache.twill.api.ResourceSpecification;
+import java.util.Collections;
+import java.util.List;
+
/**
* Straightforward implementation of {@link org.apache.twill.api.ResourceSpecification}.
*/
@@ -28,16 +31,17 @@ public final class DefaultResourceSpecification implements ResourceSpecification
private final int instances;
private final int uplink;
private final int downlink;
- private final String[] hosts;
- private final String[] racks;
+ private final List<String> hosts;
+ private final List<String> racks;
public DefaultResourceSpecification(int virtualCores, int memorySize, int instances, int uplink, int downlink) {
- this(virtualCores, memorySize, instances, uplink, downlink, new String[0], new String[0]);
+ this(virtualCores, memorySize, instances, uplink, downlink,
+ Collections.<String>emptyList(), Collections.<String>emptyList());
}
public DefaultResourceSpecification(int virtualCores, int memorySize, int instances,
int uplink, int downlink,
- String[] hosts, String[] racks) {
+ List<String> hosts, List<String> racks) {
this.virtualCores = virtualCores;
this.memorySize = memorySize;
this.instances = instances;
@@ -69,13 +73,13 @@ public final class DefaultResourceSpecification implements ResourceSpecification
}
@Override
- public String[] getHosts() {
- return hosts.clone();
+ public List<String> getHosts() {
+ return Collections.unmodifiableList(this.hosts);
}
@Override
- public String[] getRacks() {
- return racks.clone();
+ public List<String> getRacks() {
+ return Collections.unmodifiableList(this.racks);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-twill/blob/e3ccab18/twill-core/src/main/java/org/apache/twill/internal/json/ResourceSpecificationCodec.java
----------------------------------------------------------------------
diff --git a/twill-core/src/main/java/org/apache/twill/internal/json/ResourceSpecificationCodec.java b/twill-core/src/main/java/org/apache/twill/internal/json/ResourceSpecificationCodec.java
index 5233220..5f7d7ae 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/json/ResourceSpecificationCodec.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/json/ResourceSpecificationCodec.java
@@ -28,6 +28,7 @@ import org.apache.twill.api.ResourceSpecification;
import org.apache.twill.internal.DefaultResourceSpecification;
import java.lang.reflect.Type;
+import java.util.List;
/**
*
@@ -52,8 +53,8 @@ final class ResourceSpecificationCodec implements JsonSerializer<ResourceSpecifi
public ResourceSpecification deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObj = json.getAsJsonObject();
- final String[] hosts = context.deserialize(jsonObj.getAsJsonArray("hosts"), String[].class);
- final String[] racks = context.deserialize(jsonObj.getAsJsonArray("racks"), String[].class);
+ final List<String> hosts = context.deserialize(jsonObj.getAsJsonArray("hosts"), List.class);
+ final List<String> racks = context.deserialize(jsonObj.getAsJsonArray("racks"), List.class);
return new DefaultResourceSpecification(jsonObj.get("cores").getAsInt(),
jsonObj.get("memorySize").getAsInt(),
jsonObj.get("instances").getAsInt(),
@@ -61,8 +62,6 @@ final class ResourceSpecificationCodec implements JsonSerializer<ResourceSpecifi
jsonObj.get("downlink").getAsInt(),
hosts,
racks);
-
-
}
}
http://git-wip-us.apache.org/repos/asf/incubator-twill/blob/e3ccab18/twill-core/src/test/java/org/apache/twill/internal/json/ResourceSpecificationCodecTest.java
----------------------------------------------------------------------
diff --git a/twill-core/src/test/java/org/apache/twill/internal/json/ResourceSpecificationCodecTest.java b/twill-core/src/test/java/org/apache/twill/internal/json/ResourceSpecificationCodecTest.java
index b5ffec6..044a465 100644
--- a/twill-core/src/test/java/org/apache/twill/internal/json/ResourceSpecificationCodecTest.java
+++ b/twill-core/src/test/java/org/apache/twill/internal/json/ResourceSpecificationCodecTest.java
@@ -9,6 +9,8 @@ import org.junit.Assert;
import org.junit.Test;
import org.unitils.reflectionassert.ReflectionAssert;
+import java.util.Arrays;
+
/**
* Maybe this checkstyle rule needs to be removed
*/
@@ -32,7 +34,7 @@ public class ResourceSpecificationCodecTest {
"}";
final ResourceSpecification expected =
new DefaultResourceSpecification(2, 1024, 2, 100, 100,
- new String[]{"one1", "two2"}, new String[]{"three3"});
+ Arrays.asList("one1", "two2"), Arrays.asList("three3"));
final String actualString = gson.toJson(expected);
Assert.assertEquals(expectedString, actualString);
@@ -50,14 +52,32 @@ public class ResourceSpecificationCodecTest {
.setVirtualCores(5)
.setMemory(4, ResourceSpecification.SizeUnit.GIGA)
.setInstances(3)
+ .setUplink(10, ResourceSpecification.SizeUnit.GIGA)
+ .setDownlink(5, ResourceSpecification.SizeUnit.GIGA)
.setHosts("a1", "b2", "c3")
.setRacks("r2")
+ .build();
+ final DefaultResourceSpecification expected =
+ new DefaultResourceSpecification(5, 4096, 3, 10240, 5120,
+ Arrays.asList("a1", "b2", "c3"), Arrays.asList("r2"));
+ ReflectionAssert.assertLenientEquals(expected, actual);
+ }
+
+ @Test
+ public void testBuilderWithLists() throws Exception {
+ final ResourceSpecification actual = ResourceSpecification.Builder.with()
+ .setVirtualCores(5)
+ .setMemory(4, ResourceSpecification.SizeUnit.GIGA)
+ .setInstances(3)
.setUplink(10, ResourceSpecification.SizeUnit.GIGA)
- .setDownlink(5, ResourceSpecification.SizeUnit.GIGA).build();
- final DefaultResourceSpecification expectd =
+ .setDownlink(5, ResourceSpecification.SizeUnit.GIGA)
+ .setHosts(Arrays.asList("a1", "b2", "c3"))
+ .setRacks(Arrays.asList("r2"))
+ .build();
+ final DefaultResourceSpecification expected =
new DefaultResourceSpecification(5, 4096, 3, 10240, 5120,
- new String[]{"a1", "b2", "c3"}, new String[]{"r2"});
- ReflectionAssert.assertLenientEquals(expectd, actual);
+ Arrays.asList("a1", "b2", "c3"), Arrays.asList("r2"));
+ ReflectionAssert.assertLenientEquals(expected, actual);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-twill/blob/e3ccab18/twill-yarn/src/main/java/org/apache/twill/internal/yarn/YarnAMClient.java
----------------------------------------------------------------------
diff --git a/twill-yarn/src/main/java/org/apache/twill/internal/yarn/YarnAMClient.java b/twill-yarn/src/main/java/org/apache/twill/internal/yarn/YarnAMClient.java
index 9351201..370ca3c 100644
--- a/twill-yarn/src/main/java/org/apache/twill/internal/yarn/YarnAMClient.java
+++ b/twill-yarn/src/main/java/org/apache/twill/internal/yarn/YarnAMClient.java
@@ -55,11 +55,11 @@ public interface YarnAMClient extends Service {
this.count = count;
}
- public ContainerRequestBuilder addHosts(String...newHosts) {
+ public ContainerRequestBuilder addHosts(Collection<String> newHosts) {
return add(hosts, newHosts);
}
- public ContainerRequestBuilder addRacks(String...newRacks) {
+ public ContainerRequestBuilder addRacks(Collection<String> newRacks) {
return add(racks, newRacks);
}
@@ -73,9 +73,9 @@ public interface YarnAMClient extends Service {
*/
public abstract String apply();
- private <T> ContainerRequestBuilder add(Collection<T> collection, T... more) {
- if (!ArrayUtils.isEmpty(more)){
- Collections.addAll(collection, more);
+ private <T> ContainerRequestBuilder add(Collection<T> collection, Collection<T> more) {
+ if (more != null){
+ collection.addAll(more);
}
return this;
}