blob: 7af1167a222e52c8bb8294b7b67cdfe16ef2e1e9 [file] [log] [blame]
/*
* 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.component.aws.sdb.integration;
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.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.builder.RouteBuilder;
import org.apache.camel.component.aws.sdb.SdbConstants;
import org.apache.camel.component.aws.sdb.SdbOperations;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Ignore;
import org.junit.Test;
@Ignore("Must be manually tested. Provide your own accessKey and secretKey!")
public class SdbComponentIntegrationTest extends CamelTestSupport {
@Test
public void batchDeleteAttributes() {
final List<DeletableItem> deletableItems = Arrays.asList(new DeletableItem[] {
new DeletableItem("ITEM1", null),
new DeletableItem("ITEM2", null)});
template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.BatchDeleteAttributes);
exchange.getIn().setHeader(SdbConstants.DELETABLE_ITEMS, deletableItems);
}
});
}
@Test
public void batchPutAttributes() {
final List<ReplaceableItem> replaceableItems = Arrays.asList(new ReplaceableItem[] {
new ReplaceableItem("ITEM1")});
template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.BatchPutAttributes);
exchange.getIn().setHeader(SdbConstants.REPLACEABLE_ITEMS, replaceableItems);
}
});
}
@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", 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);
}
});
}
@Test
public void deleteDomain() {
template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DeleteDomain);
}
});
}
@Test
public void domainMetadata() {
Exchange exchange = template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(SdbConstants.OPERATION, SdbOperations.DomainMetadata);
}
});
assertNotNull(exchange.getIn().getHeader(SdbConstants.TIMESTAMP));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ITEM_COUNT));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_NAME_COUNT));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_VALUE_COUNT));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_NAME_SIZE));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ATTRIBUTE_VALUE_SIZE));
assertNotNull(exchange.getIn().getHeader(SdbConstants.ITEM_NAME_SIZE));
}
@Test
public void getAttributes() {
final List<String> attributeNames = Arrays.asList(new String[] {"ATTRIBUTE1"});
Exchange exchange = template.send("direct:start", 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);
}
});
assertNotNull(exchange.getIn().getHeader(SdbConstants.ATTRIBUTES, List.class));
}
@Test
public void listDomains() {
Exchange exchange = template.send("direct:start", 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");
}
});
assertNotNull(exchange.getIn().getHeader(SdbConstants.DOMAIN_NAMES, List.class));
}
@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", 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);
}
});
}
@Test
public void select() {
Exchange exchange = template.send("direct:start", 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'");
}
});
assertNotNull(exchange.getIn().getHeader(SdbConstants.ITEMS, List.class));
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start")
.to("aws-sdb://TestDomain?accessKey=xxx&secretKey=yyy&operation=GetAttributes");
}
};
}
}