You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/11/23 19:29:40 UTC
[11/20] incubator-brooklyn git commit: Simplify integration test,
avoid TestHttpServer and just have one test file.
Simplify integration test, avoid TestHttpServer and just have one test file.
https://github.com/apache/incubator-brooklyn/pull/1030#discussion_r44860563
https://github.com/apache/incubator-brooklyn/pull/1030#discussion_r44860570
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f3a6395e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f3a6395e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f3a6395e
Branch: refs/heads/master
Commit: f3a6395e0028d26af473428f9d248a7d917ee7d1
Parents: 4467878
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Tue Nov 17 13:19:43 2015 +0000
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Tue Nov 17 14:10:59 2015 +0000
----------------------------------------------------------------------
.../SimpleCommandImplIntegrationTest.java | 112 -------------
.../framework/SimpleCommandIntegrationTest.java | 166 +++++++++++++++++++
.../SimpleCommandScriptIntegrationTest.java | 165 ------------------
3 files changed, 166 insertions(+), 277 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f3a6395e/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandImplIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandImplIntegrationTest.java b/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandImplIntegrationTest.java
deleted file mode 100644
index dea50e9..0000000
--- a/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandImplIntegrationTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.brooklyn.test.framework;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
-import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.util.UUID;
-
-import static org.apache.brooklyn.test.framework.BaseTest.TARGET_ENTITY;
-import static org.apache.brooklyn.test.framework.SimpleCommand.COMMAND;
-import static org.apache.brooklyn.test.framework.SimpleCommandTest.*;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class SimpleCommandImplIntegrationTest {
- private static final Logger LOG = LoggerFactory.getLogger(SimpleCommandImplIntegrationTest.class);
-
- private static final String UP = "up";
- private TestApplication app;
- private ManagementContext managementContext;
- private LocalhostMachineProvisioningLocation localhost;
- private String testId;
-
-
- @BeforeMethod
- public void setUp() {
-
- testId = UUID.randomUUID().toString();
-
- app = TestApplication.Factory.newManagedInstanceForTests();
- managementContext = app.getManagementContext();
-
- localhost = managementContext.getLocationManager()
- .createLocation(LocationSpec.create(LocalhostMachineProvisioningLocation.class)
- .configure("name", testId));
- }
-
- @AfterMethod(alwaysRun = true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- }
-
- @Test(groups = "Integration")
- public void shouldInvokeCommand() {
- TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
- .configure(TARGET_ENTITY, testEntity)
- .configure(COMMAND, "uptime")
- .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
- .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, UP)));
-
- app.start(ImmutableList.of(localhost));
-
- assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
- .withFailMessage("Service should be up");
- assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
- .withFailMessage("Service should be marked running");
-
- }
-
- @Test(groups = "Integration")
- public void shouldNotBeUpIfAssertionFails() {
- TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
- .configure(TARGET_ENTITY, testEntity)
- .configure(COMMAND, "uptime")
- .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 1)));
-
- try {
- app.start(ImmutableList.of(localhost));
- } catch (Exception e) {
- assertThat(e.getCause().getMessage().contains("exit code equals 1"));
- }
-
- assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.ON_FIRE)
- .withFailMessage("Service should be marked on fire");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f3a6395e/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandIntegrationTest.java b/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandIntegrationTest.java
new file mode 100644
index 0000000..0b7b121
--- /dev/null
+++ b/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandIntegrationTest.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.brooklyn.test.framework;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.LocationSpec;
+import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
+import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
+import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Random;
+import java.util.UUID;
+
+import static org.apache.brooklyn.test.framework.BaseTest.TARGET_ENTITY;
+import static org.apache.brooklyn.test.framework.SimpleCommand.COMMAND;
+import static org.apache.brooklyn.test.framework.SimpleCommandTest.*;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SimpleCommandIntegrationTest extends BrooklynAppUnitTestSupport {
+ private static final Logger LOG = LoggerFactory.getLogger(SimpleCommandIntegrationTest.class);
+
+ private static final String UP = "up";
+ private LocalhostMachineProvisioningLocation localhost;
+ private String testId;
+
+
+ protected void setUpApp() {
+ super.setUpApp();
+ testId = UUID.randomUUID().toString();
+
+ localhost = app.getManagementContext().getLocationManager()
+ .createLocation(LocationSpec.create(LocalhostMachineProvisioningLocation.class)
+ .configure("name", testId));
+ }
+
+ @Test(groups = "Integration")
+ public void shouldInvokeCommand() {
+ TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
+
+ SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
+ .configure(TARGET_ENTITY, testEntity)
+ .configure(COMMAND, "uptime")
+ .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
+ .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, UP)));
+
+ app.start(ImmutableList.of(localhost));
+
+ assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
+ .withFailMessage("Service should be up");
+ assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
+ .withFailMessage("Service should be marked running");
+
+ }
+
+ @Test(groups = "Integration")
+ public void shouldNotBeUpIfAssertionFails() {
+ TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
+
+ SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
+ .configure(TARGET_ENTITY, testEntity)
+ .configure(COMMAND, "uptime")
+ .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 1)));
+
+ try {
+ app.start(ImmutableList.of(localhost));
+ } catch (Exception e) {
+ assertThat(e.getCause().getMessage().contains("exit code equals 1"));
+ }
+
+ assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.ON_FIRE)
+ .withFailMessage("Service should be marked on fire");
+
+ }
+
+ @Test(groups = "Integration")
+ public void shouldInvokeScript() {
+ TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
+
+ String text = "hello world";
+ String testUrl = createTempScript("script.sh", "echo " + text);
+
+ SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
+ .configure(TARGET_ENTITY, testEntity)
+ .configure(DOWNLOAD_URL, testUrl)
+ .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
+ .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, text)));
+
+ app.start(ImmutableList.of(localhost));
+
+ assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
+ .withFailMessage("Service should be up");
+ assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
+ .withFailMessage("Service should be marked running");
+ }
+
+ @Test
+ public void shouldExecuteInTheRightPlace() throws Exception {
+ TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
+
+ String remoteTmp = randomName();
+ SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
+ .configure(TARGET_ENTITY, testEntity)
+ .configure(COMMAND, "mkdir " + remoteTmp)
+ .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0)));
+
+ String pwdUrl = createTempScript("pwd.sh", "pwd");
+
+ SimpleCommandTest pwd = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
+ .configure(TARGET_ENTITY, testEntity)
+ .configure(DOWNLOAD_URL, pwdUrl)
+ .configure(RUN_DIR, remoteTmp)
+ .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
+ .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, remoteTmp)));
+
+ app.start(ImmutableList.of(localhost));
+
+ assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
+ .withFailMessage("Service should be up");
+ assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
+ .withFailMessage("Service should be marked running");
+ }
+
+ private String createTempScript(String filename, String contents) {
+ try {
+ Path tempDirectory = Files.createTempDirectory(randomName());
+ tempDirectory.toFile().deleteOnExit();
+ Path tempFile = Files.createFile(tempDirectory.resolve(filename));
+ Files.write(tempFile, contents.getBytes());
+ return "file:" + tempFile.toString();
+ } catch (IOException e) {
+ throw Exceptions.propagate(e);
+ }
+ }
+
+ private String randomName() {
+ return Integer.valueOf(new Random(System.currentTimeMillis()).nextInt(100000)).toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f3a6395e/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandScriptIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandScriptIntegrationTest.java b/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandScriptIntegrationTest.java
deleted file mode 100644
index 3b6b875..0000000
--- a/usage/test-framework/src/test/java/org/apache/brooklyn/test/framework/SimpleCommandScriptIntegrationTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.brooklyn.test.framework;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
-import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
-import org.apache.brooklyn.test.http.TestHttpRequestHandler;
-import org.apache.brooklyn.test.http.TestHttpServer;
-import org.apache.brooklyn.util.http.HttpAsserts;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.*;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Random;
-import java.util.UUID;
-
-import static org.apache.brooklyn.test.framework.BaseTest.TARGET_ENTITY;
-import static org.apache.brooklyn.test.framework.SimpleCommand.COMMAND;
-import static org.apache.brooklyn.test.framework.SimpleCommandTest.*;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class SimpleCommandScriptIntegrationTest {
- private static final Logger LOG = LoggerFactory.getLogger(SimpleCommandScriptIntegrationTest.class);
-
- private static final String UP = "up";
- private static final String SCRIPT_NAME = "script.sh";
- private static final String TEXT = "hello world";
- private TestApplication app;
- private ManagementContext managementContext;
- private LocalhostMachineProvisioningLocation localhost;
- private TestHttpServer server;
- private String testId;
-
-
- @BeforeClass
- public void setUpTests() {
- server = initializeServer();
- }
-
- @AfterClass
- public void tearDownTests() {
- if (null != server) {
- server.stop();
- }
- }
-
- @BeforeMethod
- public void setUp() {
-
- testId = UUID.randomUUID().toString();
-
- app = TestApplication.Factory.newManagedInstanceForTests();
- managementContext = app.getManagementContext();
-
- localhost = managementContext.getLocationManager()
- .createLocation(LocationSpec.create(LocalhostMachineProvisioningLocation.class)
- .configure("name", testId));
- }
-
- @AfterMethod(alwaysRun = true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- }
-
-
- private TestHttpServer initializeServerUnstarted() {
- return new TestHttpServer()
- .handler("/" + SCRIPT_NAME,
- new TestHttpRequestHandler().response("#!/bin/sh\necho " + TEXT + "\n"));
- }
- private TestHttpServer initializeServer() {
- return initializeServerUnstarted().start();
- }
-
-
-
- @Test(groups = "Integration")
- public void shouldInvokeScript() {
- TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- String testUrl = server.getUrl() + "/" + SCRIPT_NAME;
- HttpAsserts.assertContentContainsText(testUrl, TEXT);
-
- SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
- .configure(TARGET_ENTITY, testEntity)
- .configure(DOWNLOAD_URL, testUrl)
- .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
- .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, TEXT)));
-
- app.start(ImmutableList.of(localhost));
-
- assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
- .withFailMessage("Service should be up");
- assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
- .withFailMessage("Service should be marked running");
- }
-
- @Test
- public void shouldExecuteInTheRightPlace() throws Exception {
- TestEntity testEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- String testUrl = server.getUrl() + "/" + SCRIPT_NAME;
- HttpAsserts.assertContentContainsText(testUrl, TEXT);
-
- String remoteTmp = randomName();
- SimpleCommandTest uptime = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
- .configure(TARGET_ENTITY, testEntity)
- .configure(COMMAND, "mkdir " + remoteTmp)
- .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0)));
-
- Path localTmpPath = Paths.get("/tmp/").resolve(randomName());
- Path pwdSh = localTmpPath.resolve("pwd.sh");
- Files.createDirectory(localTmpPath);
- Files.createFile(pwdSh);
- Files.write(pwdSh, "pwd".getBytes());
- String pwdUrl = "file:" + pwdSh.toString();
-
- SimpleCommandTest pwd = app.createAndManageChild(EntitySpec.create(SimpleCommandTest.class)
- .configure(TARGET_ENTITY, testEntity)
- .configure(DOWNLOAD_URL, pwdUrl)
- .configure(RUN_DIR, remoteTmp)
- .configure(ASSERT_STATUS, ImmutableMap.of(EQUALS, 0))
- .configure(ASSERT_OUT, ImmutableMap.of(CONTAINS, remoteTmp)));
-
- app.start(ImmutableList.of(localhost));
-
- assertThat(uptime.sensors().get(SERVICE_UP)).isTrue()
- .withFailMessage("Service should be up");
- assertThat(ServiceStateLogic.getExpectedState(uptime)).isEqualTo(Lifecycle.RUNNING)
- .withFailMessage("Service should be marked running");
- }
-
- private String randomName() {
- return Integer.valueOf(new Random(System.currentTimeMillis()).nextInt(100000)).toString();
- }
-
-}