@Test public void f1_pmoo_arbMux() { config.setMultiplexingDiscipline(MuxDiscipline.SERVER_LOCAL); s0.setUseArbitraryMultiplexing(true); PmooAnalysisResults pmoo_results = Analysis.performPmooEnd2End(network, config, f1); if (pmoo_results.failure == true) { System.out.println("PMOO analysis failed"); System.out.println(); assertEquals("Unexpected exception occured", 0, 1); } if (FunctionalTests.fullConsoleOutput()) { System.out.println("Analysis:\t\tPay Multiplexing Only Once (PMOO)"); System.out.println("Multiplexing:\t\tArbitrary"); System.out.println("Flow of interest:\t" + f1.toString()); System.out.println(); System.out.println("--- Results: ---"); System.out.println("e2e PMOO SCs : " + pmoo_results.betas_e2e); System.out.println("xtx per server : " + pmoo_results.map__server__alphas.toString()); System.out.println("delay bound : " + pmoo_results.delay_bound); System.out.println("backlog bound : " + pmoo_results.backlog_bound); } assertEquals("PMOO ARB delay", new Num(22.5), pmoo_results.delay_bound); assertEquals("PMOO ARB backlog", new Num(350, 3), pmoo_results.backlog_bound); }
@Test public void f1_sfa_arbMux() { config.setMultiplexingDiscipline(MuxDiscipline.SERVER_LOCAL); s0.setUseArbitraryMultiplexing(true); SeparateFlowAnalysisResults sfa_results = Analysis.performSfaEnd2End(network, config, f1); if (sfa_results.failure == true) { System.out.println("SFA analysis failed"); System.out.println(); assertEquals("Unexpected exception occured", 0, 1); } if (FunctionalTests.fullConsoleOutput()) { System.out.println("Analysis:\t\tSeparate Flow Analysis (SFA)"); System.out.println("Multiplexing:\t\tArbitrary"); System.out.println("Flow of interest:\t" + f1.toString()); System.out.println(); System.out.println("--- Results: ---"); System.out.println("e2e SFA SCs : " + sfa_results.betas_e2e); System.out.println(" per server : " + sfa_results.map__server__betas_lo.toString()); System.out.println("xtx per server : " + sfa_results.map__server__alphas.toString()); System.out.println("delay bound : " + sfa_results.delay_bound); System.out.println("backlog bound : " + sfa_results.backlog_bound); } assertEquals("SFA ARB delay", new Num(22.5), sfa_results.delay_bound); assertEquals("SFA ARB backlog", new Num(350, 3), sfa_results.backlog_bound); }
@Test public void f1_tfa_arbMux() { config.setMultiplexingDiscipline(MuxDiscipline.SERVER_LOCAL); s0.setUseArbitraryMultiplexing( true); // s0.useArbitraryMultiplexing() != s0.useFifoMultiplexing() TotalFlowAnalysisResults tfa_results = Analysis.performTfaEnd2End(network, config, f1); if (tfa_results.failure == true) { System.out.println("TFA analysis failed"); System.out.println(); assertEquals("Unexpected exception occured", 0, 1); } if (FunctionalTests.fullConsoleOutput()) { System.out.println("Analysis:\t\tTotal Flow Analysis (TFA)"); System.out.println("Multiplexing:\t\tArbitrary"); System.out.println("Flow of interest:\t" + f1.toString()); System.out.println(); System.out.println("--- Results: ---"); System.out.println("delay bound : " + tfa_results.delay_bound); System.out.println(" per server : " + tfa_results.map__server__D_server.toString()); System.out.println("backlog bound : " + tfa_results.backlog_bound); System.out.println(" per server : " + tfa_results.map__server__B_server.toString()); System.out.println("alpha per server: " + tfa_results.map__server__alphas.toString()); } assertEquals("TFA ARB delay", new Num(135), tfa_results.delay_bound); assertEquals("TFA ARB backlog", new Num(125), tfa_results.backlog_bound); }
@Test public void f0_tfa_fifoMux() { config.setMultiplexingDiscipline(MuxDiscipline.SERVER_LOCAL); s0.setUseFifoMultiplexing(true); // default = false s1.setUseFifoMultiplexing(true); // default = false TotalFlowAnalysisResults tfa_results = Analysis.performTfaEnd2End(network, config, f0); if (tfa_results.failure == true) { System.out.println("TFA analysis failed"); System.out.println(); if (!config.arrivalBoundMethods().contains(ArrivalBoundMethods.PMOO)) { assertEquals("Unexpected exception occured", 0, 1); } return; } if (FunctionalTests.fullConsoleOutput()) { System.out.println("Analysis:\t\tTotal Flow Analysis (TFA)"); System.out.println("Multiplexing:\t\tFIFO"); System.out.println("Flow of interest:\t" + f0.toString()); System.out.println(); System.out.println("--- Results: ---"); System.out.println("delay bound : " + tfa_results.delay_bound); System.out.println(" per server : " + tfa_results.map__server__D_server.toString()); System.out.println("backlog bound : " + tfa_results.backlog_bound); System.out.println(" per server : " + tfa_results.map__server__B_server.toString()); System.out.println("alpha per server: " + tfa_results.map__server__alphas.toString()); } assertEquals("TFA FIFO delay", new Num(30), tfa_results.delay_bound); assertEquals("TFA FIFO backlog", new Num(125), tfa_results.backlog_bound); }
@Test public void f1_sfa_fifoMux() { config.setMultiplexingDiscipline(MuxDiscipline.SERVER_LOCAL); s0.setUseFifoMultiplexing(true); SeparateFlowAnalysisResults sfa_results = Analysis.performSfaEnd2End(network, config, f1); if (sfa_results.failure == true) { System.out.println("SFA analysis failed"); System.out.println(); if (!config.arrivalBoundMethods().contains(ArrivalBoundMethods.PMOO)) { assertEquals("Unexpected exception occured", 0, 1); } return; } if (FunctionalTests.fullConsoleOutput()) { System.out.println("Analysis:\t\tSeparate Flow Analysis (SFA)"); System.out.println("Multiplexing:\t\tFIFO"); System.out.println("Flow of interest:\t" + f1.toString()); System.out.println(); System.out.println("--- Results: ---"); System.out.println("e2e SFA SCs : " + sfa_results.betas_e2e); System.out.println(" per server : " + sfa_results.map__server__betas_lo.toString()); System.out.println("xtx per server : " + sfa_results.map__server__alphas.toString()); System.out.println("delay bound : " + sfa_results.delay_bound); System.out.println("backlog bound : " + sfa_results.backlog_bound); } assertEquals("SFA FIFO delay", new Num(91, 6), sfa_results.delay_bound); assertEquals("SFA FIFO backlog", new Num(80), sfa_results.backlog_bound); }
public Single_2Flows_2ACs( HashSet<ArrivalBoundMethods> arrival_boundings, boolean iterative_ab, boolean remove_duplicates) { config = FunctionalTests.printTestSettings(arrival_boundings, iterative_ab, remove_duplicates); }
@Parameters public static Collection<Object[]> data() { return FunctionalTests.createParameters(); }
public Tandem_1SC_1Flow( HashSet<ArrivalBoundMethods> arrival_boundings, boolean iterative_ab, boolean remove_duplicates) { config = FunctionalTests.printTestSettings(arrival_boundings, iterative_ab, remove_duplicates); }