ソースを参照

AMBARI-10543. String matches does not work on metrics property of Widget response.

Siddharth Wagle 10 年 前
コミット
5bb1faefb1

+ 3 - 3
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetResourceProvider.java

@@ -230,14 +230,14 @@ public class WidgetResourceProvider extends AbstractControllerResourceProvider {
       resource.setProperty(WIDGET_ID_PROPERTY_ID, entity.getId());
       resource.setProperty(WIDGET_WIDGET_NAME_PROPERTY_ID, entity.getWidgetName());
       resource.setProperty(WIDGET_WIDGET_TYPE_PROPERTY_ID, entity.getWidgetType());
-      setResourceProperty(resource, WIDGET_METRICS_PROPERTY_ID, gson.fromJson(entity.getMetrics(), ArrayList.class), requestedIds);
+      setResourceProperty(resource, WIDGET_METRICS_PROPERTY_ID, entity.getMetrics(), requestedIds);
       setResourceProperty(resource, WIDGET_TIME_CREATED_PROPERTY_ID, entity.getTimeCreated(), requestedIds);
       resource.setProperty(WIDGET_AUTHOR_PROPERTY_ID, entity.getAuthor());
       setResourceProperty(resource, WIDGET_DESCRIPTION_PROPERTY_ID, entity.getDescription(), requestedIds);
       resource.setProperty(WIDGET_DISPLAY_NAME_PROPERTY_ID, entity.getDisplayName());
       resource.setProperty(WIDGET_SCOPE_PROPERTY_ID, entity.getScope());
-      setResourceProperty(resource, WIDGET_VALUES_PROPERTY_ID, gson.fromJson(entity.getWidgetValues(), ArrayList.class), requestedIds);
-      setResourceProperty(resource, WIDGET_PROPERTIES_PROPERTY_ID, gson.fromJson(entity.getProperties(), Map.class), requestedIds);
+      setResourceProperty(resource, WIDGET_VALUES_PROPERTY_ID, entity.getWidgetValues(), requestedIds);
+      setResourceProperty(resource, WIDGET_PROPERTIES_PROPERTY_ID, entity.getProperties(), requestedIds);
 
       String clusterName = null;
       try {

+ 21 - 11
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetResourceProviderTest.java

@@ -145,11 +145,20 @@ public class WidgetResourceProviderTest {
     Assert.assertEquals("displ_name", r.getPropertyValue(WidgetResourceProvider.WIDGET_DISPLAY_NAME_PROPERTY_ID));
     Assert.assertEquals("widget name", r.getPropertyValue(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID));
     Object metrics = r.getPropertyValue(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID);
-    Assert.assertTrue(metrics instanceof List);
-    Assert.assertEquals(2, ((List) metrics).size());
-    Object values = r.getPropertyValue(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID);
-    Assert.assertTrue(values instanceof List);
-    Assert.assertEquals(1, ((List) values).size());
+    Assert.assertEquals("[{\"widget_id\":\"metrics/jvm/HeapMemoryUsed\"," +
+            "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\"," +
+            "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\"," +
+            "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[used]\",\"category\":\"\"}," +
+            "{\"widget_id\":\"metrics/jvm/HeapMemoryMax\"," +
+            "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\"," +
+            "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\"," +
+            "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[max]\"," +
+            "\"category\":\"\"}]", r.getPropertyValue(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID));
+    Assert.assertEquals("[{\"name\":\"NameNode Heap\"," +
+            "\"value\":\"${java.lang:type\\u003dMemory.HeapMemoryUsage[used] / " +
+            "java.lang:type\\u003dMemory.HeapMemoryUsage[max]}\"}]",
+            r.getPropertyValue(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID));
+    Assert.assertEquals("{\"name\":\"value\"}", r.getPropertyValue(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID));
   }
 
 
@@ -433,12 +442,13 @@ public class WidgetResourceProviderTest {
     widgetEntity.setDescription("Description");
     widgetEntity.setMetrics("[{\"widget_id\":\"metrics/jvm/HeapMemoryUsed\"," +
             "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\"," +
-            "\"service_name\":\"HDFS\",\"component_na\n" +
-            "me\":\"NAMENODE\",\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[used]\",\"category\":\"\"}," +
-            "{\"widget_id\":\"metrics/jvm/HeapMemoryMax\",\"host_component_criteria\":\"host_compone\n" +
-            "nts/metrics/dfs/FSNamesystem/HAState\\u003dactive\",\"service_name\":\"HDFS\"," +
-            "\"component_name\":\"NAMENODE\",\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[max]\"," +
-            "\"category\":\n\"\"}]");
+            "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\"," +
+            "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[used]\",\"category\":\"\"}," +
+            "{\"widget_id\":\"metrics/jvm/HeapMemoryMax\"," +
+            "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\"," +
+            "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\"," +
+            "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[max]\"," +
+            "\"category\":\"\"}]");
     widgetEntity.setWidgetValues("[{\"name\":\"NameNode Heap\"," +
             "\"value\":\"${java.lang:type\\u003dMemory.HeapMemoryUsage[used] / " +
             "java.lang:type\\u003dMemory.HeapMemoryUsage[max]}\"}]");