package org.handwerkszeug.riak.mapreduce.internal;
import static org.handwerkszeug.riak.mapreduce.MapReduceQuerySupport.between;
import static org.handwerkszeug.riak.mapreduce.MapReduceQuerySupport.stringToInt;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.handwerkszeug.riak._;
import org.handwerkszeug.riak.model.Erlang;
import org.handwerkszeug.riak.util.JsonUtil;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBufferInputStream;
import org.jboss.netty.buffer.ChannelBufferOutputStream;
import org.jboss.netty.buffer.ChannelBuffers;
import org.junit.Before;
import org.junit.Test;
public class MapReduceQueryContextTest {
MapReduceQueryContext<_> target;
@Before
public void setUp() throws Exception {
this.target = new MapReduceQueryContext<_>() {
@Override
public _ execute() {
return _._;
}
};
}
static JsonNode read(String name) {
return JsonUtil.read(MapReduceQueryContextTest.class, name);
}
protected void assertJson(String expectedJsonFile)
throws JsonProcessingException, IOException {
ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
this.target.prepare(new ChannelBufferOutputStream(cb));
ObjectMapper om = new ObjectMapper();
JsonNode act = om.readTree(new ChannelBufferInputStream(cb));
JsonNode exp = read(expectedJsonFile);
assertEquals(exp, act);
}
@Test
public void testPrepareBucket() throws Exception {
String bucket = "testPrepareBucket";
this.target.add(new BucketInput(bucket));
this.target.add(MapReducePhase.PhaseType.map, true,
Erlang.map_object_value);
assertJson(bucket);
}
@Test
public void testPrepareKeyFilter() throws Exception {
String bucket = "testPrepareKeyFilter";
this.target.add(new BucketInput(bucket));
this.target.add(stringToInt, between(10, 20));
this.target.add(MapReducePhase.PhaseType.map, false,
Erlang.map_object_value);
assertJson("testPrepareKeyFilter");
}
}