예제 #1
0
  @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);
  }
예제 #2
0
  @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);
  }
예제 #3
0
  @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);
  }
예제 #4
0
  @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);
  }
예제 #5
0
  @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);
  }
예제 #6
0
 public Single_2Flows_2ACs(
     HashSet<ArrivalBoundMethods> arrival_boundings,
     boolean iterative_ab,
     boolean remove_duplicates) {
   config = FunctionalTests.printTestSettings(arrival_boundings, iterative_ab, remove_duplicates);
 }
예제 #7
0
 @Parameters
 public static Collection<Object[]> data() {
   return FunctionalTests.createParameters();
 }
예제 #8
0
 public Tandem_1SC_1Flow(
     HashSet<ArrivalBoundMethods> arrival_boundings,
     boolean iterative_ab,
     boolean remove_duplicates) {
   config = FunctionalTests.printTestSettings(arrival_boundings, iterative_ab, remove_duplicates);
 }