package com.rubiconproject.oss.kv.distributed.test; import java.util.ArrayList; import java.util.List; import com.rubiconproject.oss.kv.distributed.Configuration; import com.rubiconproject.oss.kv.distributed.Context; import com.rubiconproject.oss.kv.distributed.ContextFilter; import com.rubiconproject.oss.kv.distributed.ContextFilterResult; import com.rubiconproject.oss.kv.distributed.Node; import com.rubiconproject.oss.kv.distributed.Operation; import com.rubiconproject.oss.kv.distributed.OperationStatus; import com.rubiconproject.oss.kv.distributed.impl.DefaultContext; import com.rubiconproject.oss.kv.distributed.impl.DefaultNodeImpl; import com.rubiconproject.oss.kv.distributed.impl.DefaultOperationResult; import com.rubiconproject.oss.kv.distributed.impl.NodeRankContextFilter; import junit.framework.TestCase; public class ContextFilterTestCase extends TestCase { public void testNodeRankContextFilter() throws Exception { ContextFilter<String> filter = new NodeRankContextFilter<String>(new Configuration()); List<Context<String>> contexts = new ArrayList<Context<String>>(3); for (int i = 2; i >= 0; --i) { Node n = new DefaultNodeImpl(i, i, "salt:" + i, "hash://localhost"); Context<String> ctx = (i != 0) ? new DefaultContext<String>(new DefaultOperationResult<String>(null, "hello world", OperationStatus.Success, 100l, null), n, i, 0, "test.key", "hello world") : new DefaultContext<String>( new DefaultOperationResult<String>(null, "hello world", OperationStatus.NullValue, 200l, null), n, i, 0, "test.key", null); contexts.add(ctx); } ContextFilterResult<String> result = filter.filter(contexts); assertNotNull(result); Context<String> value = result.getContext(); assertNotNull(value); assertNotNull(value.getValue()); assertEquals(value.getValue(), "hello world"); assertEquals(value.getNodeRank(), 1); List<Operation<String>> ops = result.getAdditionalOperations(); assertNotNull(ops); assertEquals(ops.size(), 1); assertEquals(ops.get(0).getNode().getId(), 0); } }