// Path: src/main/java/io/rainfall/Configuration.java
// public abstract class Configuration {
// 
//   public abstract List<String> getDescription();
// 
// }
// 
// Path: src/main/java/io/rainfall/Execution.java
// public abstract class Execution {
// 
//   public enum ExecutionState {
//     UNKNOWN,
//     BEGINNING,
//     ENDING
//   }
// 
//   /**
//    * Provide an easy way to mark all operations as underway.
//    *
//    * @param scenario the test scenario
//    * @param state    phase of execution of the scenario
//    */
//   public void markExecutionState(Scenario scenario, ExecutionState state) {
//     final Map<String, RangeMap<WeightedOperation>> scenarioOperations = scenario.getOperations();
//     for (RangeMap<WeightedOperation> operationRangeMap : scenarioOperations.values()) {
//       for (WeightedOperation op : operationRangeMap.getAll()) {
//         op.markExecutionState(state);
//       }
//     }
//   }
// 
//   protected ConcurrentPseudoRandom weightRnd = new ConcurrentPseudoRandom();
// 
//   public abstract <E extends Enum<E>> void execute(final StatisticsHolder<E> statisticsHolder, final Scenario scenario,
//                                                    final Map<Class<? extends Configuration>, Configuration> configurations,
//                                                    final List<AssertionEvaluator> assertions) throws TestException;
// 
//   public abstract String toString();
// 
// }
// 
// Path: src/main/java/io/rainfall/statistics/StatisticsHolder.java
// public abstract class StatisticsHolder<E extends Enum<E>> {
// 
//   public abstract Enum<E>[] getResultsReported();
// 
//   public abstract Set<String> getStatisticsKeys();
// 
//   public abstract Statistics<E> getStatistics(String name);
// 
//   public abstract Set<StatisticsCollector> getStatisticsCollectors();
// 
//   public abstract Histogram fetchHistogram(final Enum<E> result);
// 
//   public abstract void reset();
// 
//   public abstract long getCurrentTps(Enum result);
// 
//   public abstract void record(String name, long responseTimeInNs, Enum result);
// 
//   public abstract void increaseAssertionsErrorsCount(String name);
// 
//   public abstract void pause();
// 
//   public abstract void resume();
// 
//   public long getTimeInNs() {
//     return System.nanoTime();
//   }
// 
//   public abstract long getStartTime();
// }


import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import io.rainfall.AssertionEvaluator;
import io.rainfall.Configuration;
import io.rainfall.Execution;
import io.rainfall.Scenario;
import io.rainfall.TestException;
import io.rainfall.statistics.StatisticsHolder;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.mockito.Mockito.mock;
/*
 * Copyright (c) 2014-2022 Aurélien Broszniowski
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.rainfall.execution;




/**
 * @author Aurelien Broszniowski
 */

public class RepeatTest {

  @Test
  public void testRepeat() throws TestException {
// Path: src/main/java/io/rainfall/Configuration.java
// public abstract class Configuration {
// 
//   public abstract List<String> getDescription();
// 
// }
// 
// Path: src/main/java/io/rainfall/Execution.java
// public abstract class Execution {
// 
//   public enum ExecutionState {
//     UNKNOWN,
//     BEGINNING,
//     ENDING
//   }
// 
//   /**
//    * Provide an easy way to mark all operations as underway.
//    *
//    * @param scenario the test scenario
//    * @param state    phase of execution of the scenario
//    */
//   public void markExecutionState(Scenario scenario, ExecutionState state) {
//     final Map<String, RangeMap<WeightedOperation>> scenarioOperations = scenario.getOperations();
//     for (RangeMap<WeightedOperation> operationRangeMap : scenarioOperations.values()) {
//       for (WeightedOperation op : operationRangeMap.getAll()) {
//         op.markExecutionState(state);
//       }
//     }
//   }
// 
//   protected ConcurrentPseudoRandom weightRnd = new ConcurrentPseudoRandom();
// 
//   public abstract <E extends Enum<E>> void execute(final StatisticsHolder<E> statisticsHolder, final Scenario scenario,
//                                                    final Map<Class<? extends Configuration>, Configuration> configurations,
//                                                    final List<AssertionEvaluator> assertions) throws TestException;
// 
//   public abstract String toString();
// 
// }
// 
// Path: src/main/java/io/rainfall/statistics/StatisticsHolder.java
// public abstract class StatisticsHolder<E extends Enum<E>> {
// 
//   public abstract Enum<E>[] getResultsReported();
// 
//   public abstract Set<String> getStatisticsKeys();
// 
//   public abstract Statistics<E> getStatistics(String name);
// 
//   public abstract Set<StatisticsCollector> getStatisticsCollectors();
// 
//   public abstract Histogram fetchHistogram(final Enum<E> result);
// 
//   public abstract void reset();
// 
//   public abstract long getCurrentTps(Enum result);
// 
//   public abstract void record(String name, long responseTimeInNs, Enum result);
// 
//   public abstract void increaseAssertionsErrorsCount(String name);
// 
//   public abstract void pause();
// 
//   public abstract void resume();
// 
//   public long getTimeInNs() {
//     return System.nanoTime();
//   }
// 
//   public abstract long getStartTime();
// }


// Path: src/test/java/io/rainfall/execution/RepeatTest.java
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import io.rainfall.AssertionEvaluator;
import io.rainfall.Configuration;
import io.rainfall.Execution;
import io.rainfall.Scenario;
import io.rainfall.TestException;
import io.rainfall.statistics.StatisticsHolder;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.mockito.Mockito.mock;

/*
 * Copyright (c) 2014-2022 Aurélien Broszniowski
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.rainfall.execution;




/**
 * @author Aurelien Broszniowski
 */

public class RepeatTest {

  @Test
  public void testRepeat() throws TestException {
    StatisticsHolder statisticsHolder = mock(StatisticsHolder.class);