You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2011/12/19 15:20:08 UTC
svn commit: r1220761 [3/3] - in /camel/branches/camel-2.8.x:
components/camel-aws/src/main/java/org/apache/camel/component/aws/sdb/
components/camel-aws/src/test/java/org/apache/camel/component/aws/sdb/
components/camel-aws/src/test/java/org/apache/cam...
Added: camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/aws/AwsSdbTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/aws/AwsSdbTest.java?rev=1220761&view=auto
==============================================================================
--- camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/aws/AwsSdbTest.java (added)
+++ camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/aws/AwsSdbTest.java Mon Dec 19 14:20:07 2011
@@ -0,0 +1,297 @@
+/**
+ * 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.camel.itest.osgi.aws;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.amazonaws.services.simpledb.model.Attribute;
+import com.amazonaws.services.simpledb.model.DeletableItem;
+import com.amazonaws.services.simpledb.model.Item;
+import com.amazonaws.services.simpledb.model.ReplaceableAttribute;
+import com.amazonaws.services.simpledb.model.ReplaceableItem;
+import com.amazonaws.services.simpledb.model.UpdateCondition;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.component.aws.sdb.SdbConstants;
+import org.apache.camel.component.aws.sdb.SdbOperations;
+import org.apache.camel.impl.DefaultProducerTemplate;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext;
+
+@RunWith(JUnit4TestRunner.class)
+public class AwsSdbTest extends AwsTestSupport {
+
+ private AmazonSDBClientMock amazonSDBClient;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+
+ amazonSDBClient = context.getRegistry().lookup("amazonSDBClient", AmazonSDBClientMock.class);
+ }
+
+ @Override
+ protected OsgiBundleXmlApplicationContext createApplicationContext() {
+ return new OsgiBundleXmlApplicationContext(new String[]{"org/apache/camel/itest/osgi/aws/CamelContext.xml"});
+ }
+
+ @Test
+ public void doesntCreateDomainOnStartIfExists() throws Exception {
+ assertNull(amazonSDBClient.createDomainRequest);
+ }
+
+ @Test
+ public void createDomainOnStartIfNotExists() throws Exception {
+ DefaultProducerTemplate.newInstance(context, "aws-sdb://NonExistingDomain?amazonSDBClient=#amazonSDBClient&operation=GetAttributes");
+
+ assertEquals("NonExistingDomain", amazonSDBClient.createDomainRequest.getDomainName());
+ }
+
+ @Test
+ public void batchDeleteAttributes() {
+ final List<DeletableItem> deletableItems = Arrays.asList(new DeletableItem[] {
+ new DeletableItem("ITEM1", null),
+ new DeletableItem("ITEM2", null)});
+
+ template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.BatchDeleteAttributes);
+ exchange.getIn().setHeader(SdbConstants.DELETABLE_ITEMS, deletableItems);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.batchDeleteAttributesRequest.getDomainName());
+ assertEquals(deletableItems, amazonSDBClient.batchDeleteAttributesRequest.getItems());
+ }
+
+ @Test
+ public void batchPutAttributes() {
+ final List<ReplaceableItem> replaceableItems = Arrays.asList(new ReplaceableItem[] {
+ new ReplaceableItem("ITEM1")});
+
+ template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.BatchPutAttributes);
+ exchange.getIn().setHeader(SdbConstants.REPLACEABLE_ITEMS, replaceableItems);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.batchPutAttributesRequest.getDomainName());
+ assertEquals(replaceableItems, amazonSDBClient.batchPutAttributesRequest.getItems());
+ }
+
+ @Test
+ public void deleteAttributes() {
+ final List<Attribute> attributes = Arrays.asList(new Attribute[] {
+ new Attribute("NAME1", "VALUE1")});
+ final UpdateCondition condition = new UpdateCondition("Key1", "Value1", true);
+
+ template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DeleteAttributes);
+ exchange.getIn().setHeader(SdbConstants.ATTRIBUTES, attributes);
+ exchange.getIn().setHeader(SdbConstants.ITEM_NAME, "ITEM1");
+ exchange.getIn().setHeader(SdbConstants.UPDATE_CONDITION, condition);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.deleteAttributesRequest.getDomainName());
+ assertEquals("ITEM1", amazonSDBClient.deleteAttributesRequest.getItemName());
+ assertEquals(condition, amazonSDBClient.deleteAttributesRequest.getExpected());
+ assertEquals(attributes, amazonSDBClient.deleteAttributesRequest.getAttributes());
+ }
+
+ @Test
+ public void deleteAttributesItemNameIsRequired() {
+ final List<Attribute> attributes = Arrays.asList(new Attribute[] {
+ new Attribute("NAME1", "VALUE1")});
+ final UpdateCondition condition = new UpdateCondition("Key1", "Value1", true);
+
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DeleteAttributes);
+ exchange.getIn().setHeader(SdbConstants.ATTRIBUTES, attributes);
+ exchange.getIn().setHeader(SdbConstants.UPDATE_CONDITION, condition);
+ }
+ });
+
+ Exception exception = exchange.getException();
+ assertTrue(exception instanceof IllegalArgumentException);
+ }
+
+ @Test
+ public void deleteDomain() {
+ template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DeleteDomain);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.deleteDomainRequest.getDomainName());
+ }
+
+ @Test
+ public void domainMetadata() {
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DomainMetadata);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.domainMetadataRequest.getDomainName());
+
+ assertEquals(new Integer(10), exchange.getIn().getHeader(SdbConstants.TIMESTAMP));
+ assertEquals(new Integer(11), exchange.getIn().getHeader(SdbConstants.ITEM_COUNT));
+ assertEquals(new Integer(12), exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_NAME_COUNT));
+ assertEquals(new Integer(13), exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_VALUE_COUNT));
+ assertEquals(new Long(1000000), exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_NAME_SIZE));
+ assertEquals(new Long(2000000), exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_VALUE_SIZE));
+ assertEquals(new Long(3000000), exchange.getIn().getHeader(SdbConstants.ITEM_NAME_SIZE));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void getAttributes() {
+ final List<String> attributeNames = Arrays.asList(new String[] {"ATTRIBUTE1"});
+
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.GetAttributes);
+ exchange.getIn().setHeader(SdbConstants.ITEM_NAME, "ITEM1");
+ exchange.getIn().setHeader(SdbConstants.CONSISTENT_READ, Boolean.TRUE);
+ exchange.getIn().setHeader(SdbConstants.ATTRIBUTE_NAMES, attributeNames);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.getAttributesRequest.getDomainName());
+ assertEquals("ITEM1", amazonSDBClient.getAttributesRequest.getItemName());
+ assertEquals(Boolean.TRUE, amazonSDBClient.getAttributesRequest.getConsistentRead());
+ assertEquals(attributeNames, amazonSDBClient.getAttributesRequest.getAttributeNames());
+
+ List<Attribute> attributes = exchange.getIn().getHeader(SdbConstants.ATTRIBUTES, List.class);
+ assertEquals(2, attributes.size());
+ assertEquals("AttributeOne", attributes.get(0).getName());
+ assertEquals("Value One", attributes.get(0).getValue());
+ assertEquals("AttributeTwo", attributes.get(1).getName());
+ assertEquals("Value Two", attributes.get(1).getValue());
+ }
+
+ @Test
+ public void getAttributesItemNameIsRequired() {
+ final List<String> attributeNames = Arrays.asList(new String[] {"ATTRIBUTE1"});
+
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.GetAttributes);
+ exchange.getIn().setHeader(SdbConstants.CONSISTENT_READ, Boolean.TRUE);
+ exchange.getIn().setHeader(SdbConstants.ATTRIBUTE_NAMES, attributeNames);
+ }
+ });
+
+ Exception exception = exchange.getException();
+ assertTrue(exception instanceof IllegalArgumentException);
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Test
+ public void listDomains() {
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.ListDomains);
+ exchange.getIn().setHeader(SdbConstants.MAX_NUMBER_OF_DOMAINS, new Integer(5));
+ exchange.getIn().setHeader(SdbConstants.NEXT_TOKEN, "TOKEN1");
+ }
+ });
+
+ assertEquals(new Integer(5), amazonSDBClient.listDomainsRequest.getMaxNumberOfDomains());
+ assertEquals("TOKEN1", amazonSDBClient.listDomainsRequest.getNextToken());
+
+ List<String> domains = exchange.getIn().getHeader(SdbConstants.DOMAIN_NAMES, List.class);
+ assertEquals("TOKEN2", exchange.getIn().getHeader(SdbConstants.NEXT_TOKEN));
+ assertEquals(2, domains.size());
+ assertTrue(domains.contains("DOMAIN1"));
+ assertTrue(domains.contains("DOMAIN2"));
+ }
+
+ @Test
+ public void putAttributes() {
+ final List<ReplaceableAttribute> replaceableAttributes = Arrays.asList(new ReplaceableAttribute[] {
+ new ReplaceableAttribute("NAME1", "VALUE1", true)});
+ final UpdateCondition updateCondition = new UpdateCondition("NAME1", "VALUE1", true);
+
+ template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.PutAttributes);
+ exchange.getIn().setHeader(SdbConstants.ITEM_NAME, "ITEM1");
+ exchange.getIn().setHeader(SdbConstants.UPDATE_CONDITION, updateCondition);
+ exchange.getIn().setHeader(SdbConstants.REPLACEABLE_ATTRIBUTES, replaceableAttributes);
+ }
+ });
+
+ assertEquals("TestDomain", amazonSDBClient.putAttributesRequest.getDomainName());
+ assertEquals("ITEM1", amazonSDBClient.putAttributesRequest.getItemName());
+ assertEquals(updateCondition, amazonSDBClient.putAttributesRequest.getExpected());
+ assertEquals(replaceableAttributes, amazonSDBClient.putAttributesRequest.getAttributes());
+ }
+
+ @Test
+ public void putAttributesItemNameIsRequired() {
+ final List<ReplaceableAttribute> replaceableAttributes = Arrays.asList(new ReplaceableAttribute[] {
+ new ReplaceableAttribute("NAME1", "VALUE1", true)});
+ final UpdateCondition updateCondition = new UpdateCondition("NAME1", "VALUE1", true);
+
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.PutAttributes);
+ exchange.getIn().setHeader(SdbConstants.UPDATE_CONDITION, updateCondition);
+ exchange.getIn().setHeader(SdbConstants.REPLACEABLE_ATTRIBUTES, replaceableAttributes);
+ }
+ });
+
+ Exception exception = exchange.getException();
+ assertTrue(exception instanceof IllegalArgumentException);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void select() {
+ Exchange exchange = template.send("direct:start-sdb", new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.Select);
+ exchange.getIn().setHeader(SdbConstants.NEXT_TOKEN, "TOKEN1");
+ exchange.getIn().setHeader(SdbConstants.CONSISTENT_READ, Boolean.TRUE);
+ exchange.getIn().setHeader(SdbConstants.SELECT_EXPRESSION, "SELECT NAME1 FROM DOMAIN1 WHERE NAME1 LIKE 'VALUE1'");
+ }
+ });
+
+ assertEquals(Boolean.TRUE, amazonSDBClient.selectRequest.getConsistentRead());
+ assertEquals("TOKEN1", amazonSDBClient.selectRequest.getNextToken());
+ assertEquals("SELECT NAME1 FROM DOMAIN1 WHERE NAME1 LIKE 'VALUE1'", amazonSDBClient.selectRequest.getSelectExpression());
+
+ List<Item> items = exchange.getIn().getHeader(SdbConstants.ITEMS, List.class);
+ assertEquals("TOKEN2", exchange.getIn().getHeader(SdbConstants.NEXT_TOKEN));
+ assertEquals(2, items.size());
+ assertEquals("ITEM1", items.get(0).getName());
+ assertEquals("ITEM2", items.get(1).getName());
+ }
+}
\ No newline at end of file
Modified: camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelContext.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelContext.xml?rev=1220761&r1=1220760&r2=1220761&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelContext.xml (original)
+++ camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelContext.xml Mon Dec 19 14:20:07 2011
@@ -50,6 +50,11 @@
<from uri="direct:start-ses"/>
<to uri="aws-ses://from@example.com?amazonSESClient=#amazonSESClient"/>
</route>
+
+ <route>
+ <from uri="direct:start-sdb"/>
+ <to uri="aws-sdb://TestDomain?amazonSDBClient=#amazonSDBClient&operation=GetAttributes"/>
+ </route>
</camelContext>
<bean id="amazonSQSClient" class="org.apache.camel.itest.osgi.aws.AmazonSQSClientMock"/>
@@ -59,4 +64,6 @@
<bean id="amazonS3Client" class="org.apache.camel.itest.osgi.aws.AmazonS3ClientMock"/>
<bean id="amazonSESClient" class="org.apache.camel.itest.osgi.aws.AmazonSESClientMock"/>
+
+ <bean id="amazonSDBClient" class="org.apache.camel.itest.osgi.aws.AmazonSDBClientMock"/>
</beans>
\ No newline at end of file
Modified: camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelIntegrationContext.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelIntegrationContext.xml?rev=1220761&r1=1220760&r2=1220761&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelIntegrationContext.xml (original)
+++ camel/branches/camel-2.8.x/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/aws/CamelIntegrationContext.xml Mon Dec 19 14:20:07 2011
@@ -50,5 +50,10 @@
<from uri="direct:start-ses"/>
<to uri="aws-ses://from@example.com?accessKey=xxx&secretKey=yyy"/>
</route>
+
+ <route>
+ <from uri="direct:start-sdb"/>
+ <to uri="aws-sdb://TestDomain?amazonSDBClient=#amazonSDBClient&operation=GetAttributes"/>
+ </route>
</camelContext>
</beans>
\ No newline at end of file