You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ma...@apache.org on 2012/10/10 08:34:23 UTC

svn commit: r1396481 - in /incubator/ambari/branches/AMBARI-666: ./ ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/ ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ ambari-server/src/main/java/org/apach...

Author: mahadev
Date: Wed Oct 10 06:34:22 2012
New Revision: 1396481

URL: http://svn.apache.org/viewvc?rev=1396481&view=rev
Log:
AMBARI-844. Mock JMX provider for manual tests. (Tom Beerbower via mahadev)

Added:
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TestProviderModule.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCPropertyProviderTest.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/TestJDBCResourceProvider.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestHostMappingProvider.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/resources/data.db   (with props)
Removed:
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXHelper.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCManagementControllerTest.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXHelperTest.java
Modified:
    incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jdbc/JDBCProviderModule.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
    incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java

Modified: incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt (original)
+++ incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt Wed Oct 10 06:34:22 2012
@@ -12,6 +12,8 @@ AMBARI-666 branch (unreleased changes)
 
   NEW FEATURES
 
+  AMBARI-844. Mock JMX provider for manual tests. (Tom Beerbower via mahadev)
+
   AMBARI-841. Fix comparison predicates in case where resource does not have
   property value. (Tom Beerbower via mahadev)
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java Wed Oct 10 06:34:22 2012
@@ -25,6 +25,7 @@ import org.apache.ambari.server.controll
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.utilities.PredicateHelper;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
 
 import java.util.HashMap;
 import java.util.HashSet;
@@ -119,7 +120,7 @@ public class GangliaPropertyProvider imp
     String component = resource.getPropertyValue(new PropertyIdImpl("component_name", "HostRoles", false));
 
     // ---- TODO : HACK to fix host name that's been made all lower case... Ganglia doesn't like!!
-    host = hackHostName(host);
+    host = PropertyHelper.fixHostName(host);
     // -----
 
     String cluster = COMPONENT_MAP.get(component);
@@ -160,17 +161,5 @@ public class GangliaPropertyProvider imp
     stringBuilder.append("]");
     return stringBuilder.toString();
   }
-
-  private String hackHostName(String host) {
-    int first_dash = host.indexOf('-');
-    int first_dot = host.indexOf('.');
-    String segment1 = host.substring(0, first_dash);
-    if (segment1.equals("domu")) {
-      segment1 = "domU";
-    }
-    String segment2 = host.substring(first_dash, first_dot).toUpperCase();
-    host = segment1 + segment2 + host.substring(first_dot);
-    return host;
-  }
 }
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java Wed Oct 10 06:34:22 2012
@@ -18,6 +18,7 @@
 
 package org.apache.ambari.server.controller.internal;
 
+import org.apache.ambari.server.controller.spi.PropertyId;
 import org.apache.ambari.server.controller.spi.ProviderModule;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.controller.spi.ClusterController;
@@ -27,9 +28,11 @@ import org.apache.ambari.server.controll
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
 import org.apache.ambari.server.controller.spi.Schema;
+import org.apache.ambari.server.controller.utilities.PredicateHelper;
 
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
@@ -115,12 +118,34 @@ public class ClusterControllerImpl imple
     Set<Resource> keepers = resources;
 
     for (PropertyProvider propertyProvider : resourceProviders.get(type).getPropertyProviders()) {
-      //TODO : only call the provider if it provides properties that we need ...
-      keepers = propertyProvider.populateResources(keepers, request, predicate);
+      if (providesRequestProperties(propertyProvider, request, predicate)) {
+        keepers = propertyProvider.populateResources(keepers, request, predicate);
+      }
     }
     return keepers;
   }
 
+  /**
+   * Indicates whether or not the given property provider can service the given request.
+   *
+   * @param provider   the property provider
+   * @param request    the request
+   * @param predicate  the predicate
+   *
+   * @return true if the given provider can service the request
+   */
+  private boolean providesRequestProperties(PropertyProvider provider, Request request, Predicate predicate) {
+    Set<PropertyId> requestPropertyIds = new HashSet<PropertyId>(request.getPropertyIds());
+
+    if (requestPropertyIds.size() == 0) {
+      return true;
+    }
+    requestPropertyIds.addAll(PredicateHelper.getPropertyIds(predicate));
+    requestPropertyIds.retainAll(provider.getPropertyIds());
+
+    return !requestPropertyIds.isEmpty();
+  }
+
   private Map<Resource.Type, ResourceProvider> getResourceSchemas() {
     Map<Resource.Type, ResourceProvider> resourceProviders = new HashMap<Resource.Type, ResourceProvider>();
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jdbc/JDBCProviderModule.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jdbc/JDBCProviderModule.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jdbc/JDBCProviderModule.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jdbc/JDBCProviderModule.java Wed Oct 10 06:34:22 2012
@@ -29,7 +29,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- *
+ * Module to plug in the JDBC resource provider.
  */
 public class JDBCProviderModule implements ProviderModule {
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java Wed Oct 10 06:34:22 2012
@@ -126,11 +126,11 @@ public class JMXPropertyProvider impleme
       return true;
     }
 
-    Set<PropertyId> ids = PropertyHelper.getRequestPropertyIds(this, request, predicate);
+    Set<PropertyId> ids = PropertyHelper.getRequestPropertyIds(getPropertyIds(), request, predicate);
 
     Map<String, String> hosts = mappingProvider.getHostMap();
 
-    String hostName = hosts.get(resource.getPropertyValue(HOST_COMPONENT_HOST_NAME_PROPERTY_ID));
+    String hostName = hosts.get(PropertyHelper.fixHostName(resource.getPropertyValue(HOST_COMPONENT_HOST_NAME_PROPERTY_ID)));
     String port = JMX_PORTS.get(resource.getPropertyValue(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID));
 
     if (hostName == null || port == null) {

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java Wed Oct 10 06:34:22 2012
@@ -33,7 +33,7 @@ public class GreaterEqualsPredicate exte
   @Override
   public boolean evaluate(Resource resource) {
     String propertyValue = resource.getPropertyValue(getPropertyId());
-    return propertyValue == null ? false : getValue().compareTo(resource.getPropertyValue(getPropertyId())) <= 0;
+    return propertyValue == null ? false : getValue().compareTo(propertyValue) <= 0;
   }
 
   @Override

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java Wed Oct 10 06:34:22 2012
@@ -32,7 +32,7 @@ public class GreaterPredicate extends Co
   @Override
   public boolean evaluate(Resource resource) {
     String propertyValue = resource.getPropertyValue(getPropertyId());
-    return propertyValue == null ? false : getValue().compareTo(resource.getPropertyValue(getPropertyId())) < 0;
+    return propertyValue == null ? false : getValue().compareTo(propertyValue) < 0;
   }
 
   @Override

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java Wed Oct 10 06:34:22 2012
@@ -33,7 +33,7 @@ public class LessEqualsPredicate extends
   @Override
   public boolean evaluate(Resource resource) {
     String propertyValue = resource.getPropertyValue(getPropertyId());
-    return propertyValue == null ? false : getValue().compareTo(resource.getPropertyValue(getPropertyId())) >= 0;
+    return propertyValue == null ? false : getValue().compareTo(propertyValue) >= 0;
   }
 
   @Override

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java Wed Oct 10 06:34:22 2012
@@ -32,7 +32,7 @@ public class LessPredicate extends Compa
   @Override
   public boolean evaluate(Resource resource) {
     String propertyValue = resource.getPropertyValue(getPropertyId());
-    return propertyValue == null ? false : getValue().compareTo(resource.getPropertyValue(getPropertyId())) > 0;
+    return propertyValue == null ? false : getValue().compareTo(propertyValue) > 0;
   }
 
   @Override

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java Wed Oct 10 06:34:22 2012
@@ -24,6 +24,7 @@ import org.apache.ambari.server.controll
 import org.apache.ambari.server.controller.spi.PropertyProvider;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.ResourceProvider;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.type.TypeReference;
 
@@ -81,20 +82,20 @@ public class PropertyHelper {
   }
 
   /**
-   * Get the set of property id required to satisfy the given request for the given property
-   * provider and predicate.
+   * Get the set of property ids required to satisfy the given request.
    *
-   * @param provider   the property provider
-   * @param request    the request
-   * @param predicate  the predicate
+   * @param providerPropertyIds  the provider property ids
+   * @param request              the request
+   * @param predicate            the predicate
    *
    * @return the set of property ids needed to satisfy the request
    */
-  public static Set<PropertyId> getRequestPropertyIds(PropertyProvider provider,
+  public static Set<PropertyId> getRequestPropertyIds(Set<PropertyId> providerPropertyIds,
                                                       Request request,
                                                       Predicate predicate) {
     Set<PropertyId> requestPropertyIds  = new HashSet<PropertyId>(request.getPropertyIds());
-    Set<PropertyId> providerPropertyIds = new HashSet<PropertyId>(provider.getPropertyIds());
+
+    providerPropertyIds = new HashSet<PropertyId>(providerPropertyIds);
 
     if (requestPropertyIds == null || requestPropertyIds.isEmpty()) {
       return providerPropertyIds;
@@ -108,6 +109,26 @@ public class PropertyHelper {
   }
 
   /**
+   * For some reason the host names are stored all lower case.  Attempt to undo that with
+   * this hack.
+   *
+   * @param host  the host name to be fixed
+   *
+   * @return the fixed host name
+   */
+  public static String fixHostName(String host) {
+    int first_dash = host.indexOf('-');
+    int first_dot = host.indexOf('.');
+    String segment1 = host.substring(0, first_dash);
+    if (segment1.equals("domu")) {
+      segment1 = "domU";
+    }
+    String segment2 = host.substring(first_dash, first_dot).toUpperCase();
+    host = segment1 + segment2 + host.substring(first_dot);
+    return host;
+  }
+
+  /**
    * Factory method to create a create request from the given set of property maps.
    * Each map contains the properties to be used to create a resource.  Multiple maps in the
    * set should result in multiple creates.

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TestProviderModule.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TestProviderModule.java?rev=1396481&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TestProviderModule.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TestProviderModule.java Wed Oct 10 06:34:22 2012
@@ -0,0 +1,72 @@
+/**
+ * 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.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.jdbc.TestJDBCResourceProvider;
+import org.apache.ambari.server.controller.jmx.JMXPropertyProvider;
+import org.apache.ambari.server.controller.jmx.TestHostMappingProvider;
+import org.apache.ambari.server.controller.jmx.TestStreamProvider;
+import org.apache.ambari.server.controller.spi.PropertyId;
+import org.apache.ambari.server.controller.spi.PropertyProvider;
+import org.apache.ambari.server.controller.spi.ProviderModule;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.controller.utilities.DBHelper;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Module to plug in the JDBC resource provider.
+ */
+public class TestProviderModule implements ProviderModule {
+
+  private static final Map<Resource.Type, List<PropertyProvider>> propertyProviders = new HashMap<Resource.Type, List<PropertyProvider>>();
+
+  static {
+
+    Set< PropertyId > propertyIds           = PropertyHelper.getPropertyIds(Resource.Type.HostComponent, "JMX");
+    TestStreamProvider streamProvider       = new TestStreamProvider();
+    TestHostMappingProvider mappingProvider = new TestHostMappingProvider();
+
+    PropertyProvider propertyProvider = new JMXPropertyProvider(propertyIds,
+        streamProvider,
+        mappingProvider);
+
+    propertyProviders.put(Resource.Type.HostComponent, Collections.singletonList(propertyProvider));
+  }
+
+  @Override
+  public ResourceProvider getResourceProvider(Resource.Type type) {
+
+    List<PropertyProvider> providers = propertyProviders.get(type);
+
+
+    return new TestJDBCResourceProvider(
+        DBHelper.CONNECTION_FACTORY,
+        type,
+        providers == null ? Collections.<PropertyProvider>emptyList() : providers,
+        PropertyHelper.getPropertyIds(type, "DB"),
+        PropertyHelper.getKeyPropertyIds(type));
+  }
+}

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCPropertyProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCPropertyProviderTest.java?rev=1396481&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCPropertyProviderTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/JDBCPropertyProviderTest.java Wed Oct 10 06:34:22 2012
@@ -0,0 +1,841 @@
+/**
+ * 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.apache.ambari.server.controller.jdbc;
+
+import static org.easymock.EasyMock.createNiceMock;
+
+/**
+*
+*/
+public class JDBCPropertyProviderTest {
+
+//  @Test
+//  public void testCreateClusters() throws Exception {
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into Clusters (cluster_name, version, state) values ('MyCluster', '1.0', 'initial')")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cluster_name", "Clusters");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("version", "Clusters");
+//    properties.put(id, "1.0");
+//
+//    id = PropertyHelper.getPropertyId("state", "Clusters");
+//    properties.put(id, "initial");
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.createClusters(request);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testCreateServices() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into ServiceInfo (cluster_name, service_name, state) values ('MyCluster', 'MyService', 'initial')")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cluster_name", "ServiceInfo");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("service_name", "ServiceInfo");
+//    properties.put(id, "MyService");
+//
+//    id = PropertyHelper.getPropertyId("state", "ServiceInfo");
+//    properties.put(id, "initial");
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.createServices(request);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testCreateHosts() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into Hosts (cluster_name, host_name, ip) values ('MyCluster', 'MyHost1', '10.68.18.171')")).andReturn(true).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into Hosts (cluster_name, host_name, ip) values ('MyCluster', 'MyHost2', '10.111.35.113')")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//
+//    // first host
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cluster_name", "Hosts");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("host_name", "Hosts");
+//    properties.put(id, "MyHost1");
+//
+//    id = PropertyHelper.getPropertyId("ip", "Hosts");
+//    properties.put(id, "10.68.18.171");
+//
+//    propertySet.add(properties);
+//
+//    // second host
+//    properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    id = PropertyHelper.getPropertyId("cluster_name", "Hosts");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("host_name", "Hosts");
+//    properties.put(id, "MyHost2");
+//
+//    id = PropertyHelper.getPropertyId("ip", "Hosts");
+//    properties.put(id, "10.111.35.113");
+//
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.createHosts(request);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testCreateComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into ServiceComponentInfo (cluster_name, service_name, component_name, description) values ('MyCluster', 'MyService', 'MyComponent', 'This is my component')")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cluster_name", "ServiceComponentInfo");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("service_name", "ServiceComponentInfo");
+//    properties.put(id, "MyService");
+//
+//    id = PropertyHelper.getPropertyId("component_name", "ServiceComponentInfo");
+//    properties.put(id, "MyComponent");
+//
+//    id = PropertyHelper.getPropertyId("description", "ServiceComponentInfo");
+//    properties.put(id, "This is my component");
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.createComponents(request);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testCreateHostComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("insert into HostRoles (cluster_name, host_name, component_name, role_id) values ('MyCluster', 'MyHost', 'MyComponent', 1)")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cluster_name", "HostRoles");
+//    properties.put(id, "MyCluster");
+//
+//    id = PropertyHelper.getPropertyId("host_name", "HostRoles");
+//    properties.put(id, "MyHost");
+//
+//    id = PropertyHelper.getPropertyId("component_name", "HostRoles");
+//    properties.put(id, "MyComponent");
+//
+//    id = PropertyHelper.getPropertyId("role_id", "HostRoles");
+//    properties.put(id, 1);
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.createHostComponents(request);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testDeleteClusters() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("delete from Clusters where Clusters.cluster_name = \"MyCluster\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("cluster_name", "Clusters").equals("MyCluster").toPredicate();
+//
+//    controller.deleteClusters(predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testDeleteServices() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).atLeastOnce();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("PKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("PKTABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.getString("FKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("FKTABLE_NAME")).andReturn("Services").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(databaseMetaData.getPrimaryKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("COLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("TABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("COLUMN_NAME")).andReturn("cluster_name").once();
+//    expect(metaDataResultSet.getString("TABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(connection.createStatement()).andReturn(statement).atLeastOnce();
+//    expect(statement.executeQuery("select ServiceInfo.service_name, ServiceInfo.cluster_name from Services, ServiceInfo where Services.display_name = \"my service\" AND ServiceInfo.service_name = Services.service_name")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("service_name").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("ServiceInfo").once();
+//    expect(resultSet.getString(1)).andReturn("MyService").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("cluster_name").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("ServiceInfo").once();
+//    expect(resultSet.getString(2)).andReturn("MyCluster").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//    expect(statement.execute("delete from ServiceInfo where (ServiceInfo.cluster_name = \"MyCluster\" AND ServiceInfo.service_name = \"MyService\")")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("display_name", "Services").equals("my service").toPredicate();
+//
+//    controller.deleteServices(predicate);
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testDeleteHosts() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("delete from Hosts where (Hosts.host_name = \"MyHost1\" OR Hosts.host_name = \"MyHost2\")")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("host_name", "Hosts").equals("MyHost1").or().
+//                                                 property("host_name", "Hosts").equals("MyHost2").toPredicate();
+//
+//    controller.deleteHosts(predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testDeleteComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("delete from ServiceComponentInfo where ServiceComponentInfo.service_name = \"MyService\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("service_name", "ServiceComponentInfo").equals("MyService").toPredicate();
+//
+//    controller.deleteComponents(predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testDeleteHostComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("delete from HostRoles where HostRoles.component_name = \"MyComponent\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("component_name", "HostRoles").equals("MyComponent").toPredicate();
+//
+//    controller.deleteHostComponents(predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testUpdateClusters() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("update Clusters set state = 'running' where Clusters.cluster_name = \"MyCluster\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("state", "Clusters");
+//    properties.put(id, "running");
+//
+//    Predicate predicate = new PredicateBuilder().property("cluster_name", "Clusters").equals("MyCluster").toPredicate();
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.updateClusters(request, predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testUpdateServices() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).atLeastOnce();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("PKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("PKTABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.getString("FKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("FKTABLE_NAME")).andReturn("Services").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(databaseMetaData.getPrimaryKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("COLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("TABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("COLUMN_NAME")).andReturn("cluster_name").once();
+//    expect(metaDataResultSet.getString("TABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(connection.createStatement()).andReturn(statement).atLeastOnce();
+//    expect(statement.executeQuery("select ServiceInfo.service_name, ServiceInfo.cluster_name from Services, ServiceInfo where (ServiceInfo.service_name = \"MyService\" AND Services.display_name = \"my service\") AND ServiceInfo.service_name = Services.service_name")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("service_name").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("ServiceInfo").once();
+//    expect(resultSet.getString(1)).andReturn("MyService").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("cluster_name").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("ServiceInfo").once();
+//    expect(resultSet.getString(2)).andReturn("MyCluster").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//    expect(statement.execute("update ServiceInfo set state = 'running' where (ServiceInfo.cluster_name = \"MyCluster\" AND ServiceInfo.service_name = \"MyService\")")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("state", "ServiceInfo");
+//    properties.put(id, "running");
+//
+//    Predicate predicate = new PredicateBuilder().property("service_name", "ServiceInfo").equals("MyService").and().
+//                                                 property("display_name", "Services").equals("my service").toPredicate();
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.updateServices(request, predicate);
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testUpdateHosts() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("update Hosts set cpu_count = 4 where (Hosts.host_name = \"MyHost1\" OR Hosts.host_name = \"MyHost2\")")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("cpu_count", "Hosts");
+//    properties.put(id, 4);
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Predicate predicate = new PredicateBuilder().property("host_name", "Hosts").equals("MyHost1").or().
+//                                                 property("host_name", "Hosts").equals("MyHost2").toPredicate();
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.updateHosts(request, predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testUpdateComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("update ServiceComponentInfo set description = 'new description' where ServiceComponentInfo.service_name = \"MyService\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("description", "ServiceComponentInfo");
+//    properties.put(id, "new description");
+//
+//    Predicate predicate = new PredicateBuilder().property("service_name", "ServiceComponentInfo").equals("MyService").toPredicate();
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.updateComponents(request, predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testUpdateHostComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    Statement statement = createNiceMock(Statement.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.execute("update HostRoles set state = 'running' where HostRoles.component_name = \"MyComponent\"")).andReturn(true).once();
+//
+//    replay(connectionFactory, connection, statement);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Map<PropertyId, Object> properties = new LinkedHashMap<PropertyId, Object>();
+//
+//    PropertyId id = PropertyHelper.getPropertyId("state", "HostRoles");
+//    properties.put(id, "running");
+//
+//    Predicate predicate = new PredicateBuilder().property("component_name", "HostRoles").equals("MyComponent").toPredicate();
+//
+//    Set<Map<PropertyId, Object>> propertySet = new LinkedHashSet<Map<PropertyId, Object>>();
+//    propertySet.add(properties);
+//
+//    Request request = new RequestImpl(null, propertySet);
+//
+//    controller.updateHostComponents(request, predicate);
+//
+//    verify(connectionFactory, connection, statement);
+//  }
+//
+//  @Test
+//  public void testGetClusters() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).once();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(false).atLeastOnce();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.executeQuery("select Clusters.state, Clusters.cluster_name from Clusters where Clusters.cluster_name = \"MyCluster\"")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("state").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("Clusters").once();
+//    expect(resultSet.getString(1)).andReturn("running").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("cluster_name").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("Clusters").once();
+//    expect(resultSet.getString(2)).andReturn("MyCluster").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("cluster_name", "Clusters").equals("MyCluster").toPredicate();
+//
+//    Set<PropertyId> propertyIds = new LinkedHashSet<PropertyId>();
+//    propertyIds.add(PropertyHelper.getPropertyId("state", "Clusters"));
+//
+//    Request request = new RequestImpl(propertyIds, null);
+//
+//    Set<Resource> resources = controller.getClusters(request, predicate);
+//
+//    Assert.assertEquals(1, resources.size());
+//
+//    Resource resource = resources.iterator().next();
+//
+//    Assert.assertEquals(Resource.Type.Cluster, resource.getType());
+//
+//    Assert.assertEquals("running", resource.getPropertyValue(PropertyHelper.getPropertyId("state", "Clusters")));
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testGetServices() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).atLeastOnce();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("PKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("PKTABLE_NAME")).andReturn("ServiceInfo").once();
+//    expect(metaDataResultSet.getString("FKCOLUMN_NAME")).andReturn("service_name").once();
+//    expect(metaDataResultSet.getString("FKTABLE_NAME")).andReturn("Services").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.executeQuery("select ServiceInfo.service_name, Services.description from Services, ServiceInfo where ServiceInfo.service_name = \"MyService\" AND ServiceInfo.service_name = Services.service_name")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("service_name").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("ServiceInfo").once();
+//    expect(resultSet.getString(1)).andReturn("MyService").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("description").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("Services").once();
+//    expect(resultSet.getString(2)).andReturn("some description").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("service_name", "ServiceInfo").equals("MyService").toPredicate();
+//
+//    Set<PropertyId> propertyIds = new LinkedHashSet<PropertyId>();
+//    propertyIds.add(PropertyHelper.getPropertyId("service_name", "ServiceInfo"));
+//    propertyIds.add(PropertyHelper.getPropertyId("description", "Services"));
+//
+//    Request request = new RequestImpl(propertyIds, null);
+//
+//    Set<Resource> resources = controller.getServices(request, predicate);
+//
+//    Assert.assertEquals(1, resources.size());
+//
+//    Resource resource = resources.iterator().next();
+//
+//    Assert.assertEquals(Resource.Type.Service, resource.getType());
+//
+//    Assert.assertEquals("MyService", resource.getPropertyValue(PropertyHelper.getPropertyId("service_name", "ServiceInfo")));
+//    Assert.assertEquals("some description", resource.getPropertyValue(PropertyHelper.getPropertyId("description", "Services")));
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testGetComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).atLeastOnce();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(true).once();
+//    expect(metaDataResultSet.getString("PKCOLUMN_NAME")).andReturn("component_name").once();
+//    expect(metaDataResultSet.getString("PKTABLE_NAME")).andReturn("ServiceComponentInfo").once();
+//    expect(metaDataResultSet.getString("FKCOLUMN_NAME")).andReturn("component_name").once();
+//    expect(metaDataResultSet.getString("FKTABLE_NAME")).andReturn("ServiceComponents").once();
+//    expect(metaDataResultSet.next()).andReturn(false).once();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.executeQuery("select ServiceComponentInfo.component_name, ServiceComponents.description from ServiceComponentInfo, ServiceComponents where ServiceComponentInfo.component_name = \"MyService\" AND ServiceComponentInfo.component_name = ServiceComponents.component_name")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("component_name").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("ServiceComponentInfo").once();
+//    expect(resultSet.getString(1)).andReturn("MyService").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("description").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("ServiceComponents").once();
+//    expect(resultSet.getString(2)).andReturn("some description").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("component_name", "ServiceComponentInfo").equals("MyService").toPredicate();
+//
+//    Set<PropertyId> propertyIds = new LinkedHashSet<PropertyId>();
+//    propertyIds.add(PropertyHelper.getPropertyId("component_name", "ServiceComponentInfo"));
+//    propertyIds.add(PropertyHelper.getPropertyId("description", "ServiceComponents"));
+//
+//    Request request = new RequestImpl(propertyIds, null);
+//
+//    Set<Resource> resources = controller.getComponents(request, predicate);
+//
+//    Assert.assertEquals(1, resources.size());
+//
+//    Resource resource = resources.iterator().next();
+//
+//    Assert.assertEquals(Resource.Type.Component, resource.getType());
+//
+//    Assert.assertEquals("MyService", resource.getPropertyValue(PropertyHelper.getPropertyId("component_name", "ServiceComponentInfo")));
+//    Assert.assertEquals("some description", resource.getPropertyValue(PropertyHelper.getPropertyId("description", "ServiceComponents")));
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testGetHosts() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).once();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(false).atLeastOnce();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.executeQuery("select Hosts.cpu_count, Hosts.host_name from Hosts where Hosts.host_name = \"MyHost\"")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("cpu_count").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("Hosts").once();
+//    expect(resultSet.getString(1)).andReturn("4").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("host_name").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("Hosts").once();
+//    expect(resultSet.getString(2)).andReturn("MyHost").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("host_name", "Hosts").equals("MyHost").toPredicate();
+//
+//    Set<PropertyId> propertyIds = new LinkedHashSet<PropertyId>();
+//    propertyIds.add(PropertyHelper.getPropertyId("cpu_count", "Hosts"));
+//
+//    Request request = new RequestImpl(propertyIds, null);
+//
+//    Set<Resource> resources = controller.getHosts(request, predicate);
+//
+//    Assert.assertEquals(1, resources.size());
+//
+//    Resource resource = resources.iterator().next();
+//
+//    Assert.assertEquals(Resource.Type.Host, resource.getType());
+//
+//    Assert.assertEquals("4", resource.getPropertyValue(PropertyHelper.getPropertyId("cpu_count", "Hosts")));
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+//
+//  @Test
+//  public void testGetHostComponents() throws Exception{
+//
+//    ConnectionFactory connectionFactory = createNiceMock(ConnectionFactory.class);
+//    Connection connection = createNiceMock(Connection.class);
+//    DatabaseMetaData databaseMetaData = createNiceMock(DatabaseMetaData.class);
+//    ResultSet metaDataResultSet = createNiceMock(ResultSet.class);
+//    Statement statement = createNiceMock(Statement.class);
+//    ResultSet resultSet = createNiceMock(ResultSet.class);
+//    ResultSetMetaData resultSetMetaData = createNiceMock(ResultSetMetaData.class);
+//
+//    expect(connectionFactory.getConnection()).andReturn(connection).once();
+//    expect(connection.getMetaData()).andReturn(databaseMetaData).once();
+//    expect(databaseMetaData.getImportedKeys((String) EasyMock.anyObject(), (String) EasyMock.anyObject(), (String) EasyMock.anyObject())).andReturn(metaDataResultSet).atLeastOnce();
+//    expect(metaDataResultSet.next()).andReturn(false).atLeastOnce();
+//    expect(connection.createStatement()).andReturn(statement).once();
+//    expect(statement.executeQuery("select HostRoles.host_name, HostRoles.state from HostRoles where HostRoles.host_name = \"MyHost\"")).andReturn(resultSet).once();
+//    expect(resultSet.getMetaData()).andReturn(resultSetMetaData).once();
+//    expect(resultSetMetaData.getColumnCount()).andReturn(2).once();
+//    expect(resultSet.next()).andReturn(true).once();
+//    expect(resultSetMetaData.getColumnName(1)).andReturn("state").once();
+//    expect(resultSetMetaData.getTableName(1)).andReturn("HostRoles").once();
+//    expect(resultSet.getString(1)).andReturn("running").once();
+//    expect(resultSetMetaData.getColumnName(2)).andReturn("host_name").once();
+//    expect(resultSetMetaData.getTableName(2)).andReturn("HostRoles").once();
+//    expect(resultSet.getString(2)).andReturn("MyHost").once();
+//    expect(resultSet.next()).andReturn(false).once();
+//
+//    replay(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//
+//    JDBCManagementController controller =  new JDBCManagementController(connectionFactory, ClusterControllerHelper.RESOURCE_TABLES);
+//
+//    Predicate predicate = new PredicateBuilder().property("host_name", "HostRoles").equals("MyHost").toPredicate();
+//
+//    Set<PropertyId> propertyIds = new LinkedHashSet<PropertyId>();
+//    propertyIds.add(PropertyHelper.getPropertyId("state", "HostRoles"));
+//
+//    Request request = new RequestImpl(propertyIds, null);
+//
+//    Set<Resource> resources = controller.getHostComponents(request, predicate);
+//
+//    Assert.assertEquals(1, resources.size());
+//
+//    Resource resource = resources.iterator().next();
+//
+//    Assert.assertEquals(Resource.Type.HostComponent, resource.getType());
+//
+//    Assert.assertEquals("running", resource.getPropertyValue(PropertyHelper.getPropertyId("state", "HostRoles")));
+//
+//    verify(connectionFactory, connection, databaseMetaData, metaDataResultSet, statement, resultSet, resultSetMetaData);
+//  }
+}
+

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/TestJDBCResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/TestJDBCResourceProvider.java?rev=1396481&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/TestJDBCResourceProvider.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jdbc/TestJDBCResourceProvider.java Wed Oct 10 06:34:22 2012
@@ -0,0 +1,41 @@
+/**
+ * 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.apache.ambari.server.controller.jdbc;
+
+import org.apache.ambari.server.controller.spi.PropertyId;
+import org.apache.ambari.server.controller.spi.PropertyProvider;
+import org.apache.ambari.server.controller.spi.Resource;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ */
+public class TestJDBCResourceProvider extends JDBCResourceProvider{
+  public TestJDBCResourceProvider(ConnectionFactory connectionFactory, Resource.Type type, List<PropertyProvider> propertyProviders, Set<PropertyId> propertyIds, Map<Resource.Type, PropertyId> keyPropertyIds) {
+    super(connectionFactory, type, propertyProviders, propertyIds, keyPropertyIds);
+  }
+
+  @Override
+  public List<PropertyProvider> getPropertyProviders() {
+    return super.getPropertyProviders();
+  }
+}

Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java?rev=1396481&r1=1396480&r2=1396481&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java Wed Oct 10 06:34:22 2012
@@ -24,15 +24,10 @@ import org.apache.ambari.server.controll
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.apache.ambari.server.controller.utilities.StreamProvider;
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 
 /**
@@ -40,24 +35,7 @@ import java.util.Set;
  */
 public class JMXPropertyProviderTest {
 
-  private static Map<String, String> HOST_MAPPING = new HashMap<String, String>();
-
-  static {
-    HOST_MAPPING.put("domU-12-31-39-0E-34-E1.compute-1.internal", "ec2-50-17-129-192.compute-1.amazonaws.com");
-    HOST_MAPPING.put("ip-10-190-186-15.ec2.internal",             "ec2-23-21-8-226.compute-1.amazonaws.com");
-    HOST_MAPPING.put("domU-12-31-39-14-EE-B3.compute-1.internal", "ec2-23-23-71-42.compute-1.amazonaws.com");
-    HOST_MAPPING.put("ip-10-110-157-51.ec2.internal",             "ec2-107-22-121-67.compute-1.amazonaws.com");
-  }
-
-  private static Map<String, String> FILE_MAPPING = new HashMap<String, String>();
-
-  static {
-    FILE_MAPPING.put("http://ec2-23-21-8-226.compute-1.amazonaws.com:50070/jmx?qry=Hadoop:*", "hdfs_namenode_jmx.json");
-    FILE_MAPPING.put("http://ec2-23-23-71-42.compute-1.amazonaws.com:50075/jmx?qry=Hadoop:*", "hdfs_datanode_jmx.json");
-    FILE_MAPPING.put("http://ec2-23-23-71-42.compute-1.amazonaws.com:50030/jmx?qry=Hadoop:*", "mapreduce_jobtracker_jmx.json");
-  }
-
-  @Test
+    @Test
   public void testGetResources() throws Exception {
 
     Set< PropertyId >       propertyIds     = PropertyHelper.getPropertyIds(Resource.Type.HostComponent, "JMX");
@@ -71,7 +49,7 @@ public class JMXPropertyProviderTest {
     // namenode
     Resource resource = new ResourceImpl(Resource.Type.HostComponent);
 
-    resource.setProperty(JMXPropertyProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "ip-10-190-186-15.ec2.internal");
+    resource.setProperty(JMXPropertyProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal");
     resource.setProperty(JMXPropertyProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "NAMENODE");
 
     // request with an empty set should get all supported properties
@@ -79,7 +57,7 @@ public class JMXPropertyProviderTest {
 
     Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
 
-    Assert.assertEquals(JMXPropertyProvider.getSpec("ec2-23-21-8-226.compute-1.amazonaws.com:50070"), streamProvider.getLastSpec());
+    Assert.assertEquals(JMXPropertyProvider.getSpec("ec2-50-17-129-192.compute-1.amazonaws.com:50070"), streamProvider.getLastSpec());
 
     // see test/resources/hdfs_namenode_jmx.json for values
     Assert.assertEquals("1084287",  resource.getPropertyValue(PropertyHelper.getPropertyId("ReceivedBytes", "rpc")));
@@ -124,31 +102,4 @@ public class JMXPropertyProviderTest {
     Assert.assertEquals("59", resource.getPropertyValue(PropertyHelper.getPropertyId("threadsWaiting", "jvm")));
     Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("gcCount", "jvm")));
   }
-
-
-  public static class TestStreamProvider implements StreamProvider {
-    private String lastSpec;
-
-    @Override
-    public InputStream readFrom(String spec) throws IOException {
-      lastSpec = spec;
-      String filename = FILE_MAPPING.get(spec);
-      if (filename == null) {
-        throw new IOException("Can't find JMX source for " + spec);
-      }
-      InputStream resourceAsStream = ClassLoader.getSystemResourceAsStream(filename);
-      return resourceAsStream;
-    }
-
-    public String getLastSpec() {
-      return lastSpec;
-    }
-  }
-
-  public static class TestHostMappingProvider implements HostMappingProvider {
-    @Override
-    public Map<String, String> getHostMap() {
-      return HOST_MAPPING;
-    }
-  }
 }

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestHostMappingProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestHostMappingProvider.java?rev=1396481&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestHostMappingProvider.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestHostMappingProvider.java Wed Oct 10 06:34:22 2012
@@ -0,0 +1,42 @@
+/**
+ * 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.apache.ambari.server.controller.jmx;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class TestHostMappingProvider implements HostMappingProvider {
+
+  private static Map<String, String> HOST_MAPPING = new HashMap<String, String>();
+
+  static {
+    HOST_MAPPING.put("domU-12-31-39-0E-34-E1.compute-1.internal", "ec2-50-17-129-192.compute-1.amazonaws.com");
+    HOST_MAPPING.put("ip-10-190-186-15.ec2.internal",             "ec2-23-21-8-226.compute-1.amazonaws.com");
+    HOST_MAPPING.put("domU-12-31-39-14-EE-B3.compute-1.internal", "ec2-23-23-71-42.compute-1.amazonaws.com");
+    HOST_MAPPING.put("ip-10-110-157-51.ec2.internal",             "ec2-107-22-121-67.compute-1.amazonaws.com");
+  }
+
+  @Override
+  public Map<String, String> getHostMap() {
+    return HOST_MAPPING;
+  }
+}
\ No newline at end of file

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java?rev=1396481&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java Wed Oct 10 06:34:22 2012
@@ -0,0 +1,61 @@
+/**
+ * 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.apache.ambari.server.controller.jmx;
+
+import org.apache.ambari.server.controller.utilities.StreamProvider;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestStreamProvider implements StreamProvider {
+
+  protected static Map<String, String> FILE_MAPPING = new HashMap<String, String>();
+
+  static {
+    FILE_MAPPING.put("50070", "hdfs_namenode_jmx.json");
+    FILE_MAPPING.put("50075", "hdfs_datanode_jmx.json");
+    FILE_MAPPING.put("50030", "mapreduce_jobtracker_jmx.json");
+    FILE_MAPPING.put("50060", "mapreduce_tasktracker_jmx.json");
+  }
+
+  private String lastSpec;
+
+  @Override
+  public InputStream readFrom(String spec) throws IOException {
+    lastSpec = spec;
+    String filename = FILE_MAPPING.get(getPort(spec));
+    if (filename == null) {
+      throw new IOException("Can't find JMX source for " + spec);
+    }
+    return ClassLoader.getSystemResourceAsStream(filename);
+  }
+
+  public String getLastSpec() {
+    return lastSpec;
+  }
+
+  private String getPort(String spec) {
+    int n = spec.indexOf(":", 5);
+    return spec.substring(n + 1, n + 6);
+  }
+
+
+}

Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/resources/data.db
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/test/resources/data.db?rev=1396481&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/test/resources/data.db
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream