Return-Path: X-Original-To: apmail-incubator-ambari-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-ambari-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0EDF4DC63 for ; Sun, 23 Sep 2012 18:02:59 +0000 (UTC) Received: (qmail 40680 invoked by uid 500); 23 Sep 2012 18:02:59 -0000 Delivered-To: apmail-incubator-ambari-commits-archive@incubator.apache.org Received: (qmail 40646 invoked by uid 500); 23 Sep 2012 18:02:58 -0000 Mailing-List: contact ambari-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@incubator.apache.org Delivered-To: mailing list ambari-commits@incubator.apache.org Received: (qmail 40638 invoked by uid 99); 23 Sep 2012 18:02:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 18:02:58 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 18:02:45 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B91382388AA9; Sun, 23 Sep 2012 18:01:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/... Date: Sun, 23 Sep 2012 18:01:54 -0000 To: ambari-commits@incubator.apache.org From: mahadev@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120923180159.B91382388AA9@eris.apache.org> 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 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 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 listResources = new ArrayList(); + listResources.add(componentResource); + + Map mapResourceIds = new HashMap(); + mapResourceIds.put(Resource.Type.Cluster, "clusterName"); + mapResourceIds.put(Resource.Type.Service, "serviceName"); + mapResourceIds.put(Resource.Type.Component, "componentName"); + + Set setChildren = new HashSet(); + Set setForeign = new HashSet(); + setForeign.add(hostComponentResourceDef); + + Map> mapHostComponentResources = new HashMap>(); + 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 listResources = new ArrayList(); + listResources.add(componentResource1); + listResources.add(componentResource2); + + Map mapResourceIds = new HashMap(); + 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 listResources = new ArrayList(); + listResources.add(clusterResource); + + Map mapResourceIds = new HashMap(); + mapResourceIds.put(Resource.Type.Cluster, "clusterName"); + + Set setChildren = new HashSet(); + setChildren.add(serviceResourceDef); + setChildren.add(hostResourceDef); + Set setForeign = new HashSet(); + + Map> mapServiceResources = new HashMap>(); + List listServiceResources = new ArrayList(); + listServiceResources.add(serviceResource); + listServiceResources.add(serviceResource2); + mapServiceResources.put("/", listServiceResources); + + Map> mapHostResources = new HashMap>(); + 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; + } + } +} + +