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/09/23 20:01:54 UTC
svn commit: r1389109 [5/6] - in /incubator/ambari/branches/AMBARI-666: ./
ambari-api/ ambari-api/src/ ambari-api/src/main/ ambari-api/src/main/java/
ambari-api/src/main/java/org/ ambari-api/src/main/java/org/apache/
ambari-api/src/main/java/org/apache/...
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PredicateBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PredicateBuilderTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PredicateBuilderTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PredicateBuilderTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,806 @@
+/**
+ * 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.api.controller.utilities;
+
+import junit.framework.Assert;
+import org.apache.ambari.api.controller.internal.PropertyIdImpl;
+import org.apache.ambari.api.controller.internal.ResourceImpl;
+import org.apache.ambari.api.controller.spi.Predicate;
+import org.apache.ambari.api.controller.spi.PropertyId;
+import org.apache.ambari.api.controller.spi.Resource;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PredicateBuilderTest {
+
+ @Test
+ public void testSimple() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("bar").toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testSimpleNot() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+
+ /* ! p1 == "foo" */
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.not().property(p1).equals("foo").toPredicate();
+
+ Assert.assertFalse(predicate1.evaluate(resource));
+
+ /* ! p1 == "bar" */
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.not().property(p1).equals("bar").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testDone() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate = pb.property(p1).equals("foo").toPredicate();
+
+ // can't reuse a builder after toPredicate is called.
+ try {
+ pb.property(p1).equals("foo").toPredicate();
+ Assert.fail("Expected IllegalStateException.");
+ } catch (IllegalStateException e) {
+ // expected
+ }
+
+ Assert.assertSame(predicate, pb.toPredicate());
+ }
+
+ @Test
+ public void testSimpleAnd() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").and().property(p2).equals("bar").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").and().property(p2).equals("car").toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testSimpleAndNot() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+
+ /* p1 == foo and !p2 == bar */
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").and().not().property(p2).equals("bar").toPredicate();
+
+ Assert.assertFalse(predicate1.evaluate(resource));
+
+ /* p1 == foo and !p2 == car */
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").and().not().property(p2).equals("car").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLongAnd() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+ PropertyId p4 = new PropertyIdImpl("prop4", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+ resource.setProperty(p4, "dog");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").and().property(p2).equals("bar").and().property(p3).equals("cat").and().property(p4).equals("dog").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").and().property(p2).equals("bar").and().property(p3).equals("cat").and().property(p4).equals("dot").toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testSimpleOr() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").or().property(p2).equals("bar").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").or().property(p2).equals("car").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+
+ PredicateBuilder pb3 = new PredicateBuilder();
+ Predicate predicate3 = pb3.property(p1).equals("fun").or().property(p2).equals("car").toPredicate();
+
+ Assert.assertFalse(predicate3.evaluate(resource));
+ }
+
+ @Test
+ public void testLongOr() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+ PropertyId p4 = new PropertyIdImpl("prop4", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+ resource.setProperty(p4, "dog");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").or().property(p2).equals("bar").or().property(p3).equals("cat").or().property(p4).equals("dog").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").or().property(p2).equals("car").or().property(p3).equals("cat").or().property(p4).equals("dog").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+
+ PredicateBuilder pb3 = new PredicateBuilder();
+ Predicate predicate3 = pb3.property(p1).equals("fun").or().property(p2).equals("car").or().property(p3).equals("bat").or().property(p4).equals("dot").toPredicate();
+
+ Assert.assertFalse(predicate3.evaluate(resource));
+ }
+
+ @Test
+ public void testAndOr() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+
+ PredicateBuilder pb1 = new PredicateBuilder();
+ Predicate predicate1 = pb1.property(p1).equals("foo").and().property(p2).equals("bar").or().property(p3).equals("cat").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("foo").and().property(p2).equals("car").or().property(p3).equals("cat").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+
+
+ PredicateBuilder pb3 = new PredicateBuilder();
+ Predicate predicate3 = pb3.property(p1).equals("foo").and().property(p2).equals("bar").or().property(p3).equals("can").toPredicate();
+
+ Assert.assertTrue(predicate3.evaluate(resource));
+
+
+ PredicateBuilder pb4 = new PredicateBuilder();
+ Predicate predicate4 = pb4.property(p1).equals("foo").and().property(p2).equals("bat").or().property(p3).equals("can").toPredicate();
+
+ Assert.assertFalse(predicate4.evaluate(resource));
+ }
+
+
+ @Test
+ public void testBlocks() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+
+
+ /* (p1==foo && p2==bar) || p3 == cat */
+ PredicateBuilder pb1 = new PredicateBuilder();
+ Predicate predicate1 = pb1.begin().property(p1).equals("foo").and().property(p2).equals("bar").end().or().property(p3).equals("cat").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ /* (p1==foo && p2==bat) || p3 == cat */
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.begin().property(p1).equals("foo").and().property(p2).equals("bat").end().or().property(p3).equals("cat").toPredicate();
+
+ Assert.assertTrue(predicate2.evaluate(resource));
+
+ /* (p1==foo && p2==bar) || p3 == can */
+ PredicateBuilder pb3 = new PredicateBuilder();
+ Predicate predicate3 = pb3.begin().property(p1).equals("foo").and().property(p2).equals("bar").end().or().property(p3).equals("can").toPredicate();
+
+ Assert.assertTrue(predicate3.evaluate(resource));
+
+ /* (p1==foo && p2==bat) || p3 == can */
+ PredicateBuilder pb4 = new PredicateBuilder();
+ Predicate predicate4 = pb4.begin().property(p1).equals("foo").and().property(p2).equals("bat").end().or().property(p3).equals("can").toPredicate();
+
+ Assert.assertFalse(predicate4.evaluate(resource));
+
+
+ /* p1==foo && (p2==bar || p3 == cat) */
+ PredicateBuilder pb5 = new PredicateBuilder();
+ Predicate predicate5 = pb5.property(p1).equals("foo").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
+
+ Assert.assertTrue(predicate5.evaluate(resource));
+
+ /* p1==foo && (p2==bat || p3 == cat) */
+ PredicateBuilder pb6 = new PredicateBuilder();
+ Predicate predicate6 = pb6.property(p1).equals("foo").and().begin().property(p2).equals("bat").or().property(p3).equals("cat").end().toPredicate();
+
+ Assert.assertTrue(predicate6.evaluate(resource));
+
+ /* p1==foo && (p2==bat || p3 == can) */
+ PredicateBuilder pb7 = new PredicateBuilder();
+ Predicate predicate7 = pb7.property(p1).equals("foo").and().begin().property(p2).equals("bat").or().property(p3).equals("can").end().toPredicate();
+
+ Assert.assertFalse(predicate7.evaluate(resource));
+
+ /* p1==fat && (p2==bar || p3 == cat) */
+ PredicateBuilder pb8 = new PredicateBuilder();
+ Predicate predicate8 = pb8.property(p1).equals("fat").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
+
+ Assert.assertFalse(predicate8.evaluate(resource));
+
+ /* p1==foo && !(p2==bar || p3 == cat) */
+ PredicateBuilder pb9 = new PredicateBuilder();
+ Predicate predicate9 = pb9.property(p1).equals("foo").and().not().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
+
+ Assert.assertFalse(predicate9.evaluate(resource));
+
+
+ /* p1==foo && !(p2==bat || p3 == car) */
+ PredicateBuilder pb10 = new PredicateBuilder();
+ Predicate predicate10 = pb10.property(p1).equals("foo").and().not().begin().property(p2).equals("bat").or().property(p3).equals("car").end().toPredicate();
+
+ Assert.assertTrue(predicate10.evaluate(resource));
+ }
+
+ @Test
+ public void testNestedBlocks() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+ PropertyId p4 = new PropertyIdImpl("prop4", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+ resource.setProperty(p4, "dog");
+
+ /* (p1==foo && (p2==bar || p3==cat)) || p4 == dog */
+ PredicateBuilder pb1 = new PredicateBuilder();
+ Predicate predicate1 = pb1.
+ begin().
+ property(p1).equals("foo").and().
+ begin().
+ property(p2).equals("bar").or().property(p3).equals("cat").
+ end().
+ end().
+ or().property(p4).equals("dog").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+
+ /* (p1==fat && (p2==bar || p3==cat)) || p4 == dot */
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.
+ begin().
+ property(p1).equals("fat").and().
+ begin().
+ property(p2).equals("bar").or().property(p3).equals("cat").
+ end().
+ end().
+ or().property(p4).equals("dot").toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+
+ @Test
+ public void testUnbalancedBlocks() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", "cat1", false);
+ PropertyId p4 = new PropertyIdImpl("prop4", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+ resource.setProperty(p4, "dog");
+
+ /* (p1==foo && (p2==bar || p3==cat) || p4 == dog */
+ PredicateBuilder pb1 = new PredicateBuilder();
+ try {
+ pb1.
+ begin().
+ property(p1).equals("foo").and().
+ begin().
+ property(p2).equals("bar").or().property(p3).equals("cat").
+ end().
+ or().property(p4).equals("dog").toPredicate();
+ Assert.fail("Expected IllegalStateException.");
+ } catch (IllegalStateException e) {
+ // expected
+ }
+
+ /* (p1==foo && p2==bar || p3==cat)) || p4 == dog */
+ PredicateBuilder pb2 = new PredicateBuilder();
+ try {
+ pb2.
+ begin().
+ property(p1).equals("foo").and().
+ property(p2).equals("bar").or().property(p3).equals("cat").
+ end().
+ end().
+ or().property(p4).equals("dog").toPredicate();
+ Assert.fail("Expected IllegalStateException.");
+ } catch (IllegalStateException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testAltProperty() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+ PropertyId p2 = new PropertyIdImpl("prop2", "cat1", false);
+ PropertyId p3 = new PropertyIdImpl("prop3", null, false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+ resource.setProperty(p2, "bar");
+ resource.setProperty(p3, "cat");
+
+
+ /* (p1==foo && p2==bar) || p3 == cat */
+ PredicateBuilder pb1 = new PredicateBuilder();
+ Predicate predicate1 = pb1.begin().property("prop1", "cat1", false).equals("foo").and().property("prop2", "cat1").equals("bar").end().or().property("prop3").equals("cat").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+ }
+
+
+ @Test
+ public void testEqualsString() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, "foo");
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals("foo").toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals("bar").toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testEqualsInteger() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 1);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals(1).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals(99).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testEqualsFloat() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, (float) 1);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals(Float.valueOf(1)).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals(Float.valueOf(99)).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testEqualsDouble() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 1.999);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals(Double.valueOf(1.999)).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals(Double.valueOf(99.998)).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testEqualsLong() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 1L);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).equals(1L).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).equals(99L).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterInteger() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThan(1).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThan(99).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterFloat() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, (float) 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThan((float) 1).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThan((float) 99).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterDouble() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2.999);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThan(1.999).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThan(99.998).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterLong() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2L);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThan(1L).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThan(99L).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterThanEqualToInteger() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThanEqualTo(1).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThanEqualTo(99).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterThanEqualToFloat() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, (float) 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThanEqualTo((float) 1).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThanEqualTo((float) 99).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterThanEqualToDouble() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2.999);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThanEqualTo(1.999).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThanEqualTo(99.998).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testGreaterThanEqualToLong() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2L);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).greaterThanEqualTo(1L).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).greaterThanEqualTo(99L).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessInteger() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThan(99).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThan(1).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessFloat() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, (float) 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThan((float) 99).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThan((float) 1).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessDouble() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2.999);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThan(99.999).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThan(1.998).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessLong() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2L);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThan(99L).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThan(1L).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessThanEqualToInteger() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThanEqualTo(99).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThanEqualTo(1).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessThanEqualToFloat() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, (float) 2);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThanEqualTo((float) 99).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThanEqualTo((float) 1).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessThanEqualToDouble() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2.999);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThanEqualTo(99.999).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThanEqualTo(1.998).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+
+ @Test
+ public void testLessThanEqualToLong() {
+ PropertyId p1 = new PropertyIdImpl("prop1", "cat1", false);
+
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+ resource.setProperty(p1, 2L);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate1 = pb.property(p1).lessThanEqualTo(99L).toPredicate();
+
+ Assert.assertTrue(predicate1.evaluate(resource));
+
+ PredicateBuilder pb2 = new PredicateBuilder();
+ Predicate predicate2 = pb2.property(p1).lessThanEqualTo(1L).toPredicate();
+
+ Assert.assertFalse(predicate2.evaluate(resource));
+ }
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PropertiesTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PropertiesTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PropertiesTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/controller/utilities/PropertiesTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,66 @@
+/**
+ * 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.api.controller.utilities;
+
+import org.apache.ambari.api.controller.spi.PropertyId;
+import org.apache.ambari.api.controller.spi.Resource;
+import org.junit.Test;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ */
+public class PropertiesTest {
+
+ @Test
+ public void testGetPropertyIds() throws Exception {
+
+
+ Set<PropertyId> propertyIds = Properties.getPropertyIds(Resource.Type.HostComponent, "DB");
+
+ for (PropertyId propertyId : propertyIds) {
+// System.out.println(propertyId);
+ }
+
+ propertyIds = Properties.getPropertyIds(Resource.Type.HostComponent, "JMX");
+
+ for (PropertyId propertyId : propertyIds) {
+// System.out.println(propertyId);
+ }
+
+ propertyIds = Properties.getPropertyIds(Resource.Type.HostComponent, "GANGLIA");
+
+ for (PropertyId propertyId : propertyIds) {
+// System.out.println(propertyId);
+ }
+ }
+
+
+ @Test
+ public void testGetKeyPropertyIds() throws Exception {
+
+ Map<String, PropertyId> keyProperties = Properties.getKeyPropertyIds(Resource.Type.Service);
+
+ System.out.println(keyProperties);
+ }
+
+
+}
+
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/DelegatingRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/DelegatingRequestHandlerTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/DelegatingRequestHandlerTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/DelegatingRequestHandlerTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,124 @@
+/**
+ * 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.api.handlers;
+
+import org.apache.ambari.api.services.Request;
+import org.apache.ambari.api.services.Result;
+import org.junit.Test;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertSame;
+
+/**
+ *
+ */
+public class DelegatingRequestHandlerTest {
+
+ @Test
+ public void testHandleRequest_GET() {
+ Request request = createStrictMock(Request.class);
+ RequestHandlerFactory factory = createStrictMock(RequestHandlerFactory.class);
+ RequestHandler readRequestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+
+ // expectations
+ expect(request.getRequestType()).andReturn(Request.RequestType.GET);
+ expect(factory.getRequestHandler(Request.RequestType.GET)).andReturn(readRequestHandler);
+ expect(readRequestHandler.handleRequest(request)).andReturn(result);
+
+ replay(request, factory, readRequestHandler, result);
+
+ RequestHandler delegatingRequestHandler = new TestDelegatingRequestHandler(factory);
+
+ assertSame(result, delegatingRequestHandler.handleRequest(request));
+ verify(request, factory, readRequestHandler, result);
+ }
+
+ @Test
+ public void testHandleRequest_PUT() {
+ Request request = createStrictMock(Request.class);
+ RequestHandlerFactory factory = createStrictMock(RequestHandlerFactory.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+
+ // expectations
+ expect(request.getRequestType()).andReturn(Request.RequestType.PUT);
+ expect(factory.getRequestHandler(Request.RequestType.PUT)).andReturn(requestHandler);
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+
+ replay(request, factory, requestHandler, result);
+
+ RequestHandler delegatingRequestHandler = new TestDelegatingRequestHandler(factory);
+
+ assertSame(result, delegatingRequestHandler.handleRequest(request));
+ verify(request, factory, requestHandler, result);
+ }
+
+ @Test
+ public void testHandleRequest_POST() {
+ Request request = createStrictMock(Request.class);
+ RequestHandlerFactory factory = createStrictMock(RequestHandlerFactory.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+
+ // expectations
+ expect(request.getRequestType()).andReturn(Request.RequestType.POST);
+ expect(factory.getRequestHandler(Request.RequestType.POST)).andReturn(requestHandler);
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+
+ replay(request, factory, requestHandler, result);
+
+ RequestHandler delegatingRequestHandler = new TestDelegatingRequestHandler(factory);
+
+ assertSame(result, delegatingRequestHandler.handleRequest(request));
+ verify(request, factory, requestHandler, result);
+ }
+
+ @Test
+ public void testHandleRequest_DELETE() {
+ Request request = createStrictMock(Request.class);
+ RequestHandlerFactory factory = createStrictMock(RequestHandlerFactory.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+
+ // expectations
+ expect(request.getRequestType()).andReturn(Request.RequestType.DELETE);
+ expect(factory.getRequestHandler(Request.RequestType.DELETE)).andReturn(requestHandler);
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+
+ replay(request, factory, requestHandler, result);
+
+ RequestHandler delegatingRequestHandler = new TestDelegatingRequestHandler(factory);
+
+ assertSame(result, delegatingRequestHandler.handleRequest(request));
+ verify(request, factory, requestHandler, result);
+ }
+
+ private class TestDelegatingRequestHandler extends DelegatingRequestHandler {
+ private RequestHandlerFactory m_factory;
+
+ private TestDelegatingRequestHandler(RequestHandlerFactory factory) {
+ m_factory = factory;
+ }
+
+ @Override
+ public RequestHandlerFactory getRequestHandlerFactory() {
+ return m_factory;
+ }
+ }
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/ReadRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/ReadRequestHandlerTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/ReadRequestHandlerTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/handlers/ReadRequestHandlerTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,56 @@
+/**
+ * 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.api.handlers;
+
+import org.apache.ambari.api.query.Query;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.Request;
+import org.apache.ambari.api.services.Result;
+import org.junit.Test;
+
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertSame;
+
+/**
+ *
+ */
+public class ReadRequestHandlerTest {
+
+ @Test
+ public void testHandlerRequest() {
+ Request request = createStrictMock(Request.class);
+ ResourceDefinition resourceDefinition = createStrictMock(ResourceDefinition.class);
+ Query query = createStrictMock(Query.class);
+ Result result = createStrictMock(Result.class);
+
+ //expectations
+ expect(request.getResource()).andReturn(resourceDefinition);
+ expect(resourceDefinition.getQuery()).andReturn(query);
+ expect(query.execute()).andReturn(result);
+
+ replay(request, resourceDefinition, query, result);
+
+ //test
+ ReadRequestHandler handler = new ReadRequestHandler();
+ assertSame(result, handler.handleRequest(request));
+
+ verify(request, resourceDefinition, query, result);
+
+ }
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/query/QueryImplTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/query/QueryImplTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/query/QueryImplTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/query/QueryImplTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,266 @@
+/**
+ * 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.api.query;
+
+import org.apache.ambari.api.controller.internal.PropertyIdImpl;
+import org.apache.ambari.api.controller.predicate.EqualsPredicate;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.Result;
+import org.apache.ambari.api.controller.spi.ClusterController;
+import org.apache.ambari.api.controller.spi.Predicate;
+import org.apache.ambari.api.controller.spi.Request;
+import org.apache.ambari.api.controller.spi.Resource;
+import org.apache.ambari.api.controller.spi.Schema;
+import org.apache.ambari.api.controller.utilities.PredicateBuilder;
+import org.junit.Test;
+
+import java.util.*;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+
+/**
+ *
+ */
+public class QueryImplTest {
+ @Test
+ public void testExecute__Component_Instance() {
+ ResourceDefinition componentResourceDef = createMock(ResourceDefinition.class);
+ ResourceDefinition hostComponentResourceDef = createStrictMock(ResourceDefinition.class);
+ Request request = createStrictMock(Request.class);
+ Result result = createStrictMock(Result.class);
+ ClusterController controller = createStrictMock(ClusterController.class);
+ Schema componentSchema = createMock(Schema.class);
+ Resource componentResource = createStrictMock(Resource.class);
+ Query hostComponentQuery = createStrictMock(Query.class);
+ Result hostComponentQueryResult = createStrictMock(Result.class);
+ Resource hostComponentResource = createStrictMock(Resource.class);
+
+ List<Resource> listResources = new ArrayList<Resource>();
+ listResources.add(componentResource);
+
+ Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
+ mapResourceIds.put(Resource.Type.Cluster, "clusterName");
+ mapResourceIds.put(Resource.Type.Service, "serviceName");
+ mapResourceIds.put(Resource.Type.Component, "componentName");
+
+ Set<ResourceDefinition> setChildren = new HashSet<ResourceDefinition>();
+ Set<ResourceDefinition> setForeign = new HashSet<ResourceDefinition>();
+ setForeign.add(hostComponentResourceDef);
+
+ Map<String, List<Resource>> mapHostComponentResources = new HashMap<String, List<Resource>>();
+ mapHostComponentResources.put("/", Collections.singletonList(hostComponentResource));
+
+ // expectations
+ expect(componentResourceDef.getType()).andReturn(Resource.Type.Component).atLeastOnce();
+ expect(componentResourceDef.getResourceIds()).andReturn(mapResourceIds);
+ expect(controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).atLeastOnce();
+ expect(componentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn(new PropertyIdImpl("clusterId", "", false));
+ expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(new PropertyIdImpl("serviceId", "", false));
+ expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(new PropertyIdImpl("componentId", "", false));
+
+ expect(componentResourceDef.getId()).andReturn("componentName").atLeastOnce();
+ expect(componentResourceDef.getChildren()).andReturn(setChildren);
+ expect(componentResourceDef.getRelations()).andReturn(setForeign);
+ expect(hostComponentResourceDef.getQuery()).andReturn(hostComponentQuery);
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate = pb.property("clusterId", "").equals("clusterName").and().
+ property("serviceId", "").equals("serviceName").and().
+ property("componentId", "").equals("componentName").toPredicate();
+
+ expect(controller.getResources(eq(Resource.Type.Component), eq(request), eq(predicate))).
+ andReturn(listResources);
+
+ result.addResources("/", listResources);
+
+ expect(hostComponentQuery.execute()).andReturn(hostComponentQueryResult);
+ expect(hostComponentQueryResult.getResources()).andReturn(mapHostComponentResources);
+ expect(hostComponentResourceDef.getId()).andReturn("hostComponentName");
+ expect(hostComponentResourceDef.getSingularName()).andReturn("host_component");
+ result.addResources("host_component", Collections.singletonList(hostComponentResource));
+
+ replay(componentResourceDef, request, result, controller, componentSchema, componentResource,
+ hostComponentResourceDef, hostComponentQuery, hostComponentQueryResult, hostComponentResource);
+
+ QueryImpl query = new TestQuery(componentResourceDef, result, request, controller);
+ Result testResult = query.execute();
+ // todo: assert return value. This is currently a mock.
+
+ verify(componentResourceDef, request, result, controller, componentSchema, componentResource,
+ hostComponentResourceDef, hostComponentQuery, hostComponentQueryResult, hostComponentResource);
+ }
+
+ @Test
+ public void testExecute__Component_Collection() {
+ ResourceDefinition componentResourceDef = createMock(ResourceDefinition.class);
+ Request request = createStrictMock(Request.class);
+ Result result = createStrictMock(Result.class);
+ ClusterController controller = createStrictMock(ClusterController.class);
+ Schema componentSchema = createMock(Schema.class);
+ Resource componentResource1 = createStrictMock(Resource.class);
+ Resource componentResource2 = createStrictMock(Resource.class);
+
+ List<Resource> listResources = new ArrayList<Resource>();
+ listResources.add(componentResource1);
+ listResources.add(componentResource2);
+
+ Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
+ mapResourceIds.put(Resource.Type.Cluster, "clusterName");
+ mapResourceIds.put(Resource.Type.Service, "serviceName");
+
+ // expectations
+ expect(componentResourceDef.getType()).andReturn(Resource.Type.Component).atLeastOnce();
+ expect(componentResourceDef.getResourceIds()).andReturn(mapResourceIds);
+ expect(controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).atLeastOnce();
+ expect(componentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn(new PropertyIdImpl("clusterId", "", false));
+ expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(new PropertyIdImpl("serviceId", "", false));
+
+ expect(componentResourceDef.getId()).andReturn(null).atLeastOnce();
+
+ PredicateBuilder pb = new PredicateBuilder();
+ Predicate predicate = pb.property("clusterId", "").equals("clusterName").and().
+ property("serviceId", "").equals("serviceName").toPredicate();
+
+ expect(controller.getResources(eq(Resource.Type.Component), eq(request), eq(predicate))).
+ andReturn(listResources);
+
+ result.addResources("/", listResources);
+
+ replay(componentResourceDef, request, result, controller, componentSchema, componentResource1, componentResource2);
+
+ QueryImpl query = new TestQuery(componentResourceDef, result, request, controller);
+ Result testResult = query.execute();
+ // todo: assert return value. This is currently a mock.
+
+ verify(componentResourceDef, request, result, controller, componentSchema, componentResource1, componentResource2);
+ }
+
+ @Test
+ public void testExecute__Cluster_Instance() {
+ ResourceDefinition clusterResourceDef = createMock(ResourceDefinition.class);
+ ResourceDefinition serviceResourceDef = createMock(ResourceDefinition.class);
+ ResourceDefinition hostResourceDef = createMock(ResourceDefinition.class);
+ Request request = createStrictMock(Request.class);
+ Result result = createMock(Result.class);
+ ClusterController controller = createStrictMock(ClusterController.class);
+ Schema clusterSchema = createMock(Schema.class);
+ Resource clusterResource = createStrictMock(Resource.class);
+ Query serviceQuery = createStrictMock(Query.class);
+ Result serviceQueryResult = createStrictMock(Result.class);
+ Resource serviceResource = createStrictMock(Resource.class);
+ Resource serviceResource2 = createStrictMock(Resource.class);
+ Query hostQuery = createStrictMock(Query.class);
+ Result hostQueryResult = createStrictMock(Result.class);
+ Resource hostResource = createStrictMock(Resource.class);
+
+ List<Resource> listResources = new ArrayList<Resource>();
+ listResources.add(clusterResource);
+
+ Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
+ mapResourceIds.put(Resource.Type.Cluster, "clusterName");
+
+ Set<ResourceDefinition> setChildren = new HashSet<ResourceDefinition>();
+ setChildren.add(serviceResourceDef);
+ setChildren.add(hostResourceDef);
+ Set<ResourceDefinition> setForeign = new HashSet<ResourceDefinition>();
+
+ Map<String, List<Resource>> mapServiceResources = new HashMap<String, List<Resource>>();
+ List<Resource> listServiceResources = new ArrayList<Resource>();
+ listServiceResources.add(serviceResource);
+ listServiceResources.add(serviceResource2);
+ mapServiceResources.put("/", listServiceResources);
+
+ Map<String, List<Resource>> mapHostResources = new HashMap<String, List<Resource>>();
+ mapHostResources.put("/", Collections.singletonList(hostResource));
+
+ // expectations
+ expect(clusterResourceDef.getType()).andReturn(Resource.Type.Cluster).atLeastOnce();
+ expect(clusterResourceDef.getResourceIds()).andReturn(mapResourceIds);
+ expect(controller.getSchema(Resource.Type.Cluster)).andReturn(clusterSchema).atLeastOnce();
+ expect(clusterSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn(new PropertyIdImpl("clusterId", "", false));
+ expect(clusterResourceDef.getId()).andReturn("clusterName").atLeastOnce();
+
+ expect(clusterResourceDef.getChildren()).andReturn(setChildren);
+ expect(serviceResourceDef.getQuery()).andReturn(serviceQuery);
+ expect(hostResourceDef.getQuery()).andReturn(hostQuery);
+ expect(clusterResourceDef.getRelations()).andReturn(setForeign);
+
+ Predicate clusterEqualsPredicate = new EqualsPredicate(new PropertyIdImpl("clusterId", "", false), "clusterName");
+
+ expect(controller.getResources(eq(Resource.Type.Cluster), eq(request), eq(clusterEqualsPredicate))).
+ andReturn(listResources);
+
+ result.addResources("/", listResources);
+
+ expect(serviceQuery.execute()).andReturn(serviceQueryResult);
+ expect(serviceQueryResult.getResources()).andReturn(mapServiceResources);
+ expect(serviceResourceDef.getId()).andReturn(null);
+ expect(serviceResourceDef.getPluralName()).andReturn("services");
+ result.addResources("services", listServiceResources);
+
+ expect(hostQuery.execute()).andReturn(hostQueryResult);
+ expect(hostQueryResult.getResources()).andReturn(mapHostResources);
+ expect(hostResourceDef.getId()).andReturn(null);
+ expect(hostResourceDef.getPluralName()).andReturn("hosts");
+ result.addResources("hosts", Collections.singletonList(hostResource));
+
+ replay(clusterResourceDef, request, result, controller, clusterSchema, clusterResource,
+ serviceResourceDef, serviceQuery, serviceQueryResult, serviceResource, serviceResource2,
+ hostResourceDef, hostQuery, hostQueryResult, hostResource);
+
+ QueryImpl query = new TestQuery(clusterResourceDef, result, request, controller);
+ Result testResult = query.execute();
+ // todo: assert return value. This is currently a mock.
+
+ verify(clusterResourceDef, request, result, controller, clusterSchema, clusterResource,
+ serviceResourceDef, serviceQuery, serviceQueryResult, serviceResource, serviceResource2,
+ hostResourceDef, hostQuery, hostQueryResult, hostResource);
+ }
+
+ private class TestQuery extends QueryImpl {
+
+ private Result m_result;
+ private Request m_request;
+ private ClusterController m_clusterController;
+
+ public TestQuery(ResourceDefinition resourceDefinition, Result result, Request request, ClusterController controller) {
+ super(resourceDefinition);
+ m_result = result;
+ m_request = request;
+ m_clusterController = controller;
+ }
+
+ @Override
+ Result createResult() {
+ return m_result;
+ }
+
+ @Override
+ Request createRequest() {
+ return m_request;
+ }
+
+ @Override
+ ClusterController getClusterController() {
+ return m_clusterController;
+ }
+ }
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ClusterServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ClusterServiceTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ClusterServiceTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ClusterServiceTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,160 @@
+/**
+ * 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.api.services;
+
+import org.apache.ambari.api.handlers.RequestHandler;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.formatters.ResultFormatter;
+import org.junit.Test;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+
+/**
+ *
+ */
+public class ClusterServiceTest {
+
+ @Test
+ public void testGetCluster() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ ClusterService clusterService = new TestClusterService(resourceDef, clusterName, requestFactory, responseFactory, requestHandler);
+ assertSame(response, clusterService.getCluster(httpHeaders, uriInfo, clusterName));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ @Test
+ public void testGetClusters() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ ClusterService clusterService = new TestClusterService(resourceDef, null, requestFactory, responseFactory, requestHandler);
+ assertSame(response, clusterService.getClusters(httpHeaders, uriInfo));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ private class TestClusterService extends ClusterService {
+ private RequestFactory m_requestFactory;
+ private ResponseFactory m_responseFactory;
+ private RequestHandler m_requestHandler;
+ private ResourceDefinition m_resourceDef;
+ private String m_clusterId;
+
+ private TestClusterService(ResourceDefinition resourceDef, String clusterId, RequestFactory requestFactory,
+ ResponseFactory responseFactory, RequestHandler handler) {
+ m_resourceDef = resourceDef;
+ m_requestFactory = requestFactory;
+ m_responseFactory = responseFactory;
+ m_requestHandler = handler;
+ m_clusterId = clusterId;
+ }
+
+ @Override
+ ResourceDefinition createResourceDefinition(String clusterName) {
+ assertEquals(m_clusterId, clusterName);
+ return m_resourceDef;
+ }
+
+ @Override
+ RequestFactory getRequestFactory() {
+ return m_requestFactory;
+ }
+
+ @Override
+ ResponseFactory getResponseFactory() {
+ return m_responseFactory;
+ }
+
+ @Override
+ RequestHandler getRequestHandler() {
+ return m_requestHandler;
+ }
+ }
+
+ //todo: test getHostHandler, getServiceHandler
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ComponentServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ComponentServiceTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ComponentServiceTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/ComponentServiceTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,170 @@
+/**
+ * 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.api.services;
+
+
+import org.apache.ambari.api.handlers.RequestHandler;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.formatters.ResultFormatter;
+import org.junit.Test;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.eq;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+/**
+ *
+ */
+public class ComponentServiceTest {
+
+ @Test
+ public void testGetComponent() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+ String serviceName = "serviceName";
+ String componentName = "componentName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ ComponentService componentService = new TestComponentService(resourceDef, clusterName, serviceName, componentName,
+ requestFactory, responseFactory, requestHandler);
+ assertSame(response, componentService.getComponent(httpHeaders, uriInfo, componentName));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ @Test
+ public void testGetComponents() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+ String serviceName = "serviceName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ ComponentService componentService = new TestComponentService(resourceDef, clusterName, serviceName, null, requestFactory, responseFactory, requestHandler);
+ assertSame(response, componentService.getComponents(httpHeaders, uriInfo));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ private class TestComponentService extends ComponentService {
+ private RequestFactory m_requestFactory;
+ private ResponseFactory m_responseFactory;
+ private RequestHandler m_requestHandler;
+ private ResourceDefinition m_resourceDef;
+ private String m_clusterId;
+ private String m_serviceId;
+ private String m_componentId;
+
+ private TestComponentService(ResourceDefinition resourceDef, String clusterId, String serviceId, String componentId, RequestFactory requestFactory, ResponseFactory responseFactory, RequestHandler handler) {
+ super(clusterId, serviceId);
+ m_requestFactory = requestFactory;
+ m_responseFactory = responseFactory;
+ m_requestHandler = handler;
+ m_resourceDef = resourceDef;
+ m_clusterId = clusterId;
+ m_serviceId = serviceId;
+ m_componentId = componentId;
+ }
+
+ @Override
+ ResourceDefinition createResourceDefinition(String componentName, String clusterName, String serviceName) {
+ assertEquals(m_clusterId, clusterName);
+ assertEquals(m_serviceId, serviceName);
+ assertEquals(m_componentId, componentName);
+ return m_resourceDef;
+ }
+
+ @Override
+ RequestFactory getRequestFactory() {
+ return m_requestFactory;
+ }
+
+ @Override
+ ResponseFactory getResponseFactory() {
+ return m_responseFactory;
+ }
+
+ @Override
+ RequestHandler getRequestHandler() {
+ return m_requestHandler;
+ }
+ }
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostComponentServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostComponentServiceTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostComponentServiceTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostComponentServiceTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,173 @@
+/**
+ * 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.api.services;
+
+import org.apache.ambari.api.handlers.RequestHandler;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.formatters.ResultFormatter;
+import org.junit.Test;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.eq;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+/**
+ *
+ */
+public class HostComponentServiceTest {
+ @Test
+ public void testGetHostComponent() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+ String hostName = "hostName";
+ String hostComponentName = "hostComponentName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ HostComponentService hostComponentService = new TestHostComponentService(resourceDef, clusterName, hostName, hostComponentName,
+ requestFactory, responseFactory, requestHandler);
+ assertSame(response, hostComponentService.getHostComponent(httpHeaders, uriInfo, hostComponentName));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ @Test
+ public void testGetHostComponents() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+ String hostName = "hostName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ HostComponentService componentService = new TestHostComponentService(resourceDef, clusterName, hostName, null, requestFactory,
+ responseFactory, requestHandler);
+ assertSame(response, componentService.getHostComponents(httpHeaders, uriInfo));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ private class TestHostComponentService extends HostComponentService {
+ private RequestFactory m_requestFactory;
+ private ResponseFactory m_responseFactory;
+ private RequestHandler m_requestHandler;
+ private ResourceDefinition m_resourceDef;
+ private String m_clusterId;
+ private String m_hostId;
+ private String m_hostComponentId;
+
+ private TestHostComponentService(ResourceDefinition resourceDef, String clusterId, String hostId, String hostComponentId,
+ RequestFactory requestFactory, ResponseFactory responseFactory, RequestHandler handler) {
+ super(clusterId, hostId);
+ m_resourceDef = resourceDef;
+ m_clusterId = clusterId;
+ m_hostId = hostId;
+ m_hostComponentId = hostComponentId;
+ m_requestFactory = requestFactory;
+ m_responseFactory = responseFactory;
+ m_requestHandler = handler;
+ }
+
+
+ @Override
+ ResourceDefinition createResourceDefinition(String hostComponentName, String clusterName, String hostName) {
+ assertEquals(m_clusterId, clusterName);
+ assertEquals(m_hostId, hostName);
+ assertEquals(m_hostComponentId, hostComponentName);
+ return m_resourceDef;
+ }
+
+ @Override
+ RequestFactory getRequestFactory() {
+ return m_requestFactory;
+ }
+
+ @Override
+ ResponseFactory getResponseFactory() {
+ return m_responseFactory;
+ }
+
+ @Override
+ RequestHandler getRequestHandler() {
+ return m_requestHandler;
+ }
+ }
+
+}
Added: incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostServiceTest.java?rev=1389109&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostServiceTest.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-api/src/test/java/org/apache/ambari/api/services/HostServiceTest.java Sun Sep 23 18:01:49 2012
@@ -0,0 +1,167 @@
+/**
+ * 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.api.services;
+
+
+import org.apache.ambari.api.handlers.RequestHandler;
+import org.apache.ambari.api.resource.ResourceDefinition;
+import org.apache.ambari.api.services.formatters.ResultFormatter;
+import org.junit.Test;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+/**
+ *
+ */
+public class HostServiceTest {
+
+ @Test
+ public void testGetHost() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+ String hostName = "hostName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ HostService hostService = new TestHostService(resourceDef, clusterName, hostName, requestFactory, responseFactory, requestHandler);
+ assertSame(response, hostService.getHost(httpHeaders, uriInfo, hostName));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ @Test
+ public void testGetHosts() {
+ ResourceDefinition resourceDef = createStrictMock(ResourceDefinition.class);
+ ResultFormatter resultFormatter = createStrictMock(ResultFormatter.class);
+ Object formattedResult = new Object();
+ Serializer serializer = createStrictMock(Serializer.class);
+ Object serializedResult = new Object();
+ RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ ResponseFactory responseFactory = createStrictMock(ResponseFactory.class);
+ Request request = createNiceMock(Request.class);
+ RequestHandler requestHandler = createStrictMock(RequestHandler.class);
+ Result result = createStrictMock(Result.class);
+ Response response = createStrictMock(Response.class);
+
+ HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ UriInfo uriInfo = createNiceMock(UriInfo.class);
+
+ String clusterName = "clusterName";
+
+ // expectations
+ expect(requestFactory.createRequest(eq(httpHeaders), eq(uriInfo), eq(Request.RequestType.GET),
+ eq(resourceDef))).andReturn(request);
+
+ expect(requestHandler.handleRequest(request)).andReturn(result);
+ expect(resourceDef.getResultFormatter()).andReturn(resultFormatter);
+ expect(resultFormatter.format(result, uriInfo)).andReturn(formattedResult);
+ expect(request.getSerializer()).andReturn(serializer);
+ expect(serializer.serialize(formattedResult)).andReturn(serializedResult);
+
+ expect(responseFactory.createResponse(serializedResult)).andReturn(response);
+
+ replay(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+
+ //test
+ HostService hostService = new TestHostService(resourceDef, clusterName, null, requestFactory, responseFactory, requestHandler);
+ assertSame(response, hostService.getHosts(httpHeaders, uriInfo));
+
+ verify(resourceDef, resultFormatter, serializer, requestFactory, responseFactory, request, requestHandler,
+ result, response, httpHeaders, uriInfo);
+ }
+
+ private class TestHostService extends HostService {
+ private RequestFactory m_requestFactory;
+ private ResponseFactory m_responseFactory;
+ private RequestHandler m_requestHandler;
+ private ResourceDefinition m_resourceDef;
+ private String m_clusterId;
+ private String m_hostId;
+
+ private TestHostService(ResourceDefinition resourceDef, String clusterId, String hostId, RequestFactory requestFactory,
+ ResponseFactory responseFactory, RequestHandler handler) {
+ super(clusterId);
+ m_resourceDef = resourceDef;
+ m_clusterId = clusterId;
+ m_hostId = hostId;
+ m_requestFactory = requestFactory;
+ m_responseFactory = responseFactory;
+ m_requestHandler = handler;
+ }
+
+ @Override
+ ResourceDefinition createResourceDefinition(String hostName, String clusterName) {
+ assertEquals(m_clusterId, clusterName);
+ assertEquals(m_hostId, hostName);
+ return m_resourceDef;
+ }
+
+ @Override
+ RequestFactory getRequestFactory() {
+ return m_requestFactory;
+ }
+
+ @Override
+ ResponseFactory getResponseFactory() {
+ return m_responseFactory;
+ }
+
+ @Override
+ RequestHandler getRequestHandler() {
+ return m_requestHandler;
+ }
+ }
+}
+
+