From edbee9e609e7f31d188660717ff9d3fb9f606abb Mon Sep 17 00:00:00 2001 From: Naganarasimha Date: Thu, 10 Nov 2016 05:00:05 +0530 Subject: [PATCH] YARN-4498. Application level node labels stats to be available in REST (addendum patch). Contributed by Bibin A Chundatt. --- .../server/resourcemanager/webapp/dao/AppInfo.java | 4 ++-- .../webapp/TestRMWebServiceAppsNodelabel.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java index 3bd6cffa6dd..19cbe430ebe 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java @@ -111,7 +111,7 @@ public class AppInfo { protected String appNodeLabelExpression; protected String amNodeLabelExpression; - protected ResourcesInfo resourceInfo; + protected ResourcesInfo resourceInfo = null; public AppInfo() { } // JAXB needs this @@ -232,7 +232,7 @@ public AppInfo(ResourceManager rm, RMApp app, Boolean hasAccess, .getApplicationAttempt(attempt.getAppAttemptId()); resourceInfo = null != ficaAppAttempt ? new ResourcesInfo(ficaAppAttempt.getSchedulingResourceUsage()) - : new ResourcesInfo(); + : null; } } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServiceAppsNodelabel.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServiceAppsNodelabel.java index a931b0bea99..25a712cca4f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServiceAppsNodelabel.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServiceAppsNodelabel.java @@ -19,10 +19,11 @@ package org.apache.hadoop.yarn.server.resourcemanager.webapp; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.HashSet; -import java.util.Iterator; import java.util.Set; import javax.ws.rs.core.MediaType; @@ -153,10 +154,13 @@ public void testAppsFinished() throws JSONException, Exception { JSONObject json = response.getEntity(JSONObject.class); JSONObject apps = json.getJSONObject("apps"); assertEquals("incorrect number of elements", 1, apps.length()); - JSONObject jsonObject = - apps.getJSONArray("app").getJSONObject(0).getJSONObject("resourceInfo"); - Iterator keys = jsonObject.keys(); - assertEquals("For finshed app no values expected", false, keys.hasNext()); + try { + apps.getJSONArray("app").getJSONObject(0).getJSONObject("resourceInfo"); + fail("resourceInfo object shouldnt be available for finished apps"); + } catch (Exception e) { + assertTrue("resourceInfo shouldn't be available for finished apps", + true); + } rm.stop(); }