package edu.brown.workload.filters; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.junit.Test; import org.voltdb.benchmark.tpcc.procedures.delivery; import org.voltdb.benchmark.tpcc.procedures.neworder; import org.voltdb.benchmark.tpcc.procedures.slev; import org.voltdb.catalog.CatalogType; import edu.brown.workload.AbstractTraceElement; import edu.brown.workload.TransactionTrace; /** * @author pavlo */ public class TestProcedureNameFilter extends AbstractTestFilter { /** * testExclude */ @Test public void testExclude() throws Exception { String exclude = neworder.class.getSimpleName(); ProcedureNameFilter filter = new ProcedureNameFilter(false).exclude(exclude); Iterator<TransactionTrace> it = workload.iterator(filter); assertNotNull(it); int count = 0; while (it.hasNext()) { AbstractTraceElement<? extends CatalogType> element = it.next(); if (element instanceof TransactionTrace) { assertNotSame(exclude, element.getCatalogItemName()); count++; } } // WHILE assert(count > 0); } /** * testInclude */ @Test public void testInclude() throws Exception { String include = slev.class.getSimpleName(); ProcedureNameFilter filter = new ProcedureNameFilter(false).include(include); Iterator<TransactionTrace> it = workload.iterator(filter); assertNotNull(it); int count = 0; while (it.hasNext()) { AbstractTraceElement<? extends CatalogType> element = it.next(); if (element instanceof TransactionTrace) { assertEquals(include, element.getCatalogItemName()); count++; } } // WHILE assert(count > 0); } /** * testMultiInclude */ @Test public void testMultiInclude() throws Exception { Map<String, Integer> expected = new HashMap<String, Integer>(); expected.put(slev.class.getSimpleName(), 10); expected.put(delivery.class.getSimpleName(), 15); expected.put(neworder.class.getSimpleName(), 20); ProcedureNameFilter filter = new ProcedureNameFilter(false); Map<String, Integer> results = new HashMap<String, Integer>(); for (Entry<String, Integer> e : expected.entrySet()) { filter.include(e.getKey(), e.getValue()); results.put(e.getKey(), 0); } // FOR Iterator<TransactionTrace> it = workload.iterator(filter); assertNotNull(it); int count = 0; while (it.hasNext()) { TransactionTrace element = it.next(); String name = element.getCatalogItemName(); assert(results.containsKey(name)) : "Unexpected " + name; results.put(name, results.get(name) + 1); count++; } // WHILE assert(count > 0); // Now check that we got the proper counts for all of our procedures for (Entry<String, Integer> e : expected.entrySet()) { Integer cnt = results.get(e.getKey()); // System.err.println(e.getKey() + " => " + cnt); assertEquals(e.getKey(), e.getValue(), cnt); } // FOR } }