package integration_tests; import com.loadimpact.exception.ApiException; import com.loadimpact.resource.UserScenario; import com.loadimpact.resource.UserScenarioValidation; import com.loadimpact.util.StringUtils; import org.junit.Before; import org.junit.Test; import java.util.List; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; /** * Verifies that it can create/fetch/delete a scenario. * * @user jens * @date 2015-05-15 */ public class UsingScenarios extends AbstractIntegrationTestBase { public static final String SCENARIO_RESOURCE = "scenario.txt"; @Test public void create_get_delete_of_scenario_should_pass() throws Exception { // Prepare final String scenarioScript = StringUtils.toString(getClass().getResourceAsStream(SCENARIO_RESOURCE)); // Populate final String scenarioName = "integration_test_" + System.nanoTime(); UserScenario scenarioToBeCreated = new UserScenario(); scenarioToBeCreated.name = scenarioName; scenarioToBeCreated.loadScript = scenarioScript; // Upload/create UserScenario scenario = client.createUserScenario(scenarioToBeCreated); assertThat(scenario, notNullValue()); assertThat(scenario.name, is(scenarioName)); assertThat(scenario.id, greaterThan(0)); // Fetch it final int scenarioId = scenario.id; UserScenario scenarioFetched = client.getUserScenario(scenarioId); assertThat(scenarioFetched, notNullValue()); assertThat(scenarioFetched.name, is(scenarioName)); // Fetch all List<UserScenario> scenarios = client.getUserScenarios(); assertThat(scenarios, notNullValue()); assertThat(scenarios.size(), greaterThanOrEqualTo(1)); // Delete it client.deleteUserScenario(scenarioId); try { client.getDataStore(scenarioId); fail("Expected exception: NotFound"); } catch (ApiException ignore) { } } @Test public void validating_a_newly_created_scenario_should_work() throws Exception { // Prepare final String scenarioScript = StringUtils.toString(getClass().getResourceAsStream(SCENARIO_RESOURCE)); // Populate final String scenarioName = "integration_test_" + System.nanoTime(); UserScenario scenarioToBeCreated = new UserScenario(); scenarioToBeCreated.name = scenarioName; scenarioToBeCreated.loadScript = scenarioScript; // Upload/create UserScenario scenario = client.createUserScenario(scenarioToBeCreated); assertThat(scenario, notNullValue()); assertThat(scenario.name, is(scenarioName)); assertThat(scenario.id, greaterThan(0)); final int scenarioId = scenario.id; // Start validate final UserScenarioValidation validation = client.createUserScenarioValidation(scenarioId); assertThat(validation, notNullValue()); assertThat(validation.scenarioId, is(scenarioId)); waitFor("scenario-validation is ready", new WaitForClosure() { @Override public boolean isDone() { UserScenarioValidation v = client.getUserScenarioValidation(validation.id); return v.status == UserScenarioValidation.Status.FINISHED; } }); UserScenarioValidation readyValidation = client.getUserScenarioValidation(validation.id); assertThat(readyValidation.status, is(UserScenarioValidation.Status.FINISHED)); assertThat(readyValidation.ended, notNullValue()); UserScenarioValidation results = client.getUserScenarioValidationResults(readyValidation); assertThat(results, notNullValue()); assertThat(results.results.size(), greaterThanOrEqualTo(1)); assertThat(results.results.get(0).timestamp, notNullValue()); assertThat(results.results.get(0).message, containsString("finished")); // Delete it client.deleteUserScenario(scenarioId); try { client.getUserScenario(scenarioId); fail("Expected exception: NotFound"); } catch (ApiException ignore) { } } }