package edu.brown.workload.filters; import java.util.Iterator; import org.junit.Test; import org.voltdb.catalog.CatalogType; import edu.brown.utils.PartitionSet; import edu.brown.workload.AbstractTraceElement; import edu.brown.workload.TransactionTrace; /** * @author pavlo */ public class TestMultiPartitionTxnFilter extends AbstractTestFilter { private final PartitionSet partitions = new PartitionSet(); /** * testSinglePartition */ @Test public void testSinglePartition() throws Exception { MultiPartitionTxnFilter filter = new MultiPartitionTxnFilter(p_estimator, true); Iterator<TransactionTrace> it = workload.iterator(filter); assertNotNull(it); int count = 0; while (it.hasNext()) { AbstractTraceElement<? extends CatalogType> element = it.next(); if (element instanceof TransactionTrace) { // Make sure that this txn's base partition is what we expect it to be TransactionTrace txn = (TransactionTrace)element; partitions.clear(); p_estimator.getAllPartitions(partitions, txn); assertNotNull(partitions); assertEquals(1, partitions.size()); count++; } } // WHILE assert(count > 0); } /** * testMultiPartition */ @Test public void testMultiPartition() throws Exception { MultiPartitionTxnFilter filter = new MultiPartitionTxnFilter(p_estimator, false); Iterator<TransactionTrace> it = workload.iterator(filter); assertNotNull(it); int count = 0; while (it.hasNext()) { AbstractTraceElement<? extends CatalogType> element = it.next(); if (element instanceof TransactionTrace) { // Make sure that this txn's base partition is what we expect it to be TransactionTrace txn = (TransactionTrace)element; partitions.clear(); p_estimator.getAllPartitions(partitions, txn); assertNotNull(partitions); assertNotSame(1, partitions.size()); count++; } } // WHILE assert(count > 0); } }