package edu.brown.markov; import java.io.File; import org.voltdb.VoltProcedure; import org.voltdb.benchmark.tpcc.procedures.neworder; import org.voltdb.catalog.Procedure; import edu.brown.BaseTestCase; import edu.brown.catalog.CatalogUtil; import edu.brown.markov.containers.MarkovGraphsContainer; import edu.brown.utils.FileUtil; import edu.brown.utils.ProjectType; public class TestMarkovGraphsContainer extends BaseTestCase { final Class<? extends VoltProcedure> TARGET_PROCEDURE = neworder.class; Procedure catalog_proc; File tempFile = null; public void setUp() throws Exception { super.setUp(ProjectType.TPCC); this.addPartitions(10); catalog_proc = this.getProcedure(TARGET_PROCEDURE); } @Override protected void tearDown() throws Exception { super.tearDown(); if (tempFile != null && tempFile.exists()) { tempFile.delete(); } } public void testSerialization() throws Exception { MarkovGraphsContainer markovs = new MarkovGraphsContainer(); for (Integer p : CatalogUtil.getAllPartitionIds(catalog_db)) { markovs.getOrCreate(p, catalog_proc, true); } // FOR // Serialize them out to a file. This will also make a nice little index in the file tempFile = FileUtil.getTempFile("markovs", false); assertNotNull(tempFile); markovs.save(tempFile); System.err.println("MARKOV FILE: " + tempFile); // Now read it back in make sure everything is there MarkovGraphsContainer clone = new MarkovGraphsContainer(); clone.load(tempFile, catalog_db); assertNotNull(clone); assertEquals(markovs.size(), clone.size()); assert(markovs.keySet().containsAll(clone.keySet())); for (Integer id : markovs.keySet()) { MarkovGraph clone_m = clone.get(id, catalog_proc); assertNotNull(clone_m); } // FOR } }