package esl.cuenet.generative; import esl.cuenet.generative.structs.ContextNetwork; import esl.cuenet.generative.structs.NetworkBuildingHelper; import esl.system.SysLoggerUtils; import org.apache.log4j.Logger; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.util.List; public class MultiLocationMergeTest { static { SysLoggerUtils.initLogger(); } Logger logger = Logger.getLogger(MultiLocationMergeTest.class); public ContextNetwork testMultiNetwork(ContextNetwork network1, int sampleCount, double samplePercentage) throws Exception { assert sampleCount > 1; assert samplePercentage > 0; assert samplePercentage <= 1; NetworkBuildingHelper.createTimeIntervals(network1); ContextNetwork merge = NetworkBuildingHelper.prepareRootsForSampling(network1); logger.info(merge.nodeCount()); int i=0; long s, e; double total = 0; List<ContextNetwork> samples = null; for (int t = 0; t < sampleCount; t+=10) { samples = NetworkBuildingHelper.sample(network1, 10, samplePercentage); for (ContextNetwork sample : samples) { i++; s = System.currentTimeMillis(); merge.merge(sample); e = System.currentTimeMillis(); total += (e-s); if (i%20 == 0) logger.info("Post merge node count #" + i + " ; Avg. Time = " + (total/i)); } } logger.info("Average Merge Time = " + (total/sampleCount)); return merge; } public void instanceMergeTest(ContextNetwork network1) { ContextNetwork merge = NetworkBuildingHelper.prepareRootsForSampling(network1); logger.info("Nodes in merge CN = " + merge.nodeCount()); long s = System.currentTimeMillis(); NetworkBuildingHelper.mergeEachInstance(merge, network1); logger.info("Instance Nets Merge Time = " + (System.currentTimeMillis() - s)); logger.info(merge.nodeCount() + " " + network1.nodeCount()); Assert.assertEquals(network1.compareNetwork(merge), true); } public void testMultiFile(String filename, int sampleCount, double samplePercentage) throws Exception { assert sampleCount > 1; assert samplePercentage > 0; assert samplePercentage <= 1; DataReader dReader = new DataReader(); logger.info("----------------------------------------------------------------------------"); logger.info("L O A D I N G " + filename); logger.info("----------------------------------------------------------------------------"); ContextNetwork network1 = dReader.readInstanceGraphs(filename); testMultiNetwork(network1, sampleCount, samplePercentage); } @Test public void testSmallDataset() throws Exception { testMultiFile("/data/osm/multi/instance.sim.1", 10, 0.33); } @Test public void testDataset() throws Exception { testMultiFile("/home/arjun/data/increasing_locations/instance.sim.7", 500, 0.33); } @Test public void instanceMergeTest() throws Exception { String filename = "/data/osm/increasing_locations/instance.sim.7"; DataReader dReader = new DataReader(); logger.info("Loading ---- " + filename); ContextNetwork network1 = dReader.readInstanceGraphs(filename); instanceMergeTest(network1); } @Test public void multiSampleTest() throws Exception { String filename = "/data/osm/multi/instance.sim.5"; DataReader dReader = new DataReader(); ContextNetwork network1 = dReader.readInstanceGraphs(filename); ContextNetwork finalMerge = null; for (int i=0; i<10; i++) { logger.info("Starting iteration ... " + (i+1)); ContextNetwork merge = testMultiNetwork(network1, 5*(i+1), 0.1); if (finalMerge == null) finalMerge = merge; else finalMerge.merge(merge); } NetworkBuildingHelper.mergeEachInstance(finalMerge, network1); Assert.assertEquals(network1.compareNetwork(finalMerge), true); } @Test public void increasingSampleTest() throws Exception { String filename = "/data/osm/multi/instance.sim.5"; DataReader dReader = new DataReader(); logger.info("Loading ---- " + filename); ContextNetwork network1 = dReader.readInstanceGraphs(filename); for (double i=0.1; i<0.99; i+=0.1) { logger.info("Starting iteration ... " + (i+1)); testMultiNetwork(network1, 10, i); } } @Test public void increasingLocations() throws Exception { String file = "/home/arjun/data/increasing_locations/instance.sim."; for (int i=1; i<15; i++) { testMultiFile(file + i, 10, 0.33); } } @Test public void runDatasetFromCommandLine() throws Exception { int samplecount = 10; double samplepercentage = 0.33; String temp = System.getProperties().getProperty("samplecount"); if (temp != null) samplecount = Integer.parseInt(temp); temp = System.getProperties().getProperty("samplepercentage"); if (temp != null) samplepercentage = Double.parseDouble(temp); String simfile = (String) System.getProperties().get("simfile"); if (simfile != null) { logger.info(simfile + " " + samplecount + " " + samplepercentage); testMultiFile(simfile, samplecount, samplepercentage); } else logger.info("No property found. returning"); } }