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 2016/02/01 18:47:13 UTC
[43/50] brooklyn-library git commit: Make TomcatAutoScalerPolicyTest
more deterministic
Make TomcatAutoScalerPolicyTest more deterministic
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/e4b5835f
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/e4b5835f
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/e4b5835f
Branch: refs/heads/0.6.0
Commit: e4b5835f476c2c1d08fe6c220fa24daa6c0742d1
Parents: 1efe728
Author: Aled Sage <al...@gmail.com>
Authored: Fri Nov 15 11:39:16 2013 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Nov 15 14:56:45 2013 +0000
----------------------------------------------------------------------
.../webapp/TomcatAutoScalerPolicyTest.java | 35 +++++++++++++-------
1 file changed, 23 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4b5835f/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
index 251510a..4196442 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
@@ -4,6 +4,8 @@ import static brooklyn.test.HttpTestUtils.connectToUrl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -25,7 +27,10 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
public class TomcatAutoScalerPolicyTest {
-
+
+ @SuppressWarnings("unused")
+ private static final Logger LOG = LoggerFactory.getLogger(TomcatAutoScalerPolicyTest.class);
+
// TODO Test is time-sensitive: we send two web-requests in rapid succession, and expect the average workrate to
// be 2 msgs/sec; we then expect resizing to kick-in.
// P speculate that... if for some reason things are running slow (e.g. GC during that one second), then brooklyn
@@ -33,7 +38,7 @@ public class TomcatAutoScalerPolicyTest {
private LocalhostMachineProvisioningLocation loc;
private TestApplication app;
-
+
@BeforeMethod(alwaysRun=true)
public void setUp() throws Exception {
loc = new LocalhostMachineProvisioningLocation(MutableMap.of("name", "london"));
@@ -78,23 +83,29 @@ public class TomcatAutoScalerPolicyTest {
app.start(ImmutableList.of(loc));
- assertEquals((Integer)1, cluster.getCurrentSize());
+ assertEquals(cluster.getCurrentSize(), (Integer)1);
+ // Scaling based on *total requests* processed, rather than the requests per second.
+ // So just hit it with 2 requests.
+ // Alternatively could hit each tomcat server's URL twice per second; but that's less deterministic.
TomcatServer tc = (TomcatServer) Iterables.getOnlyElement(cluster.getMembers());
for (int i = 0; i < 2; i++) {
connectToUrl(tc.getAttribute(TomcatServerImpl.ROOT_URL));
}
- Asserts.succeedsEventually(MutableMap.of("timeout", 3000), new Runnable() {
- public void run() {
- assertEquals(2.0d/cluster.getCurrentSize(), cluster.getAttribute(DynamicWebAppCluster.AVERAGE_REQUEST_COUNT));
- }});
-
+ // We'll scale to two members as soon as the policy detects it.
+ // But the second member won't count in the requests-per-node until it has started up.
+ // Expect to see (if we polled at convenient times):
+ // - zero requests per node (because haven't yet retrieved over JMX the metric)
+ // - two requests per node, with one member
+ // - two requests per node, with two members (one of whom is still starting up, so doesn't count)
+ // - one request per node (i.e. two divided across the two active members)
Asserts.succeedsEventually(MutableMap.of("timeout", 5*60*1000), new Runnable() {
- public void run() {
- assertTrue(policy.isRunning());
- assertEquals((Integer)2, cluster.getCurrentSize());
- assertEquals(1.0d, cluster.getAttribute(DynamicWebAppCluster.AVERAGE_REQUEST_COUNT));
+ @Override public void run() {
+ String err = "policy="+policy.isRunning()+"; size="+cluster.getCurrentSize()+"; reqCountPerNode="+cluster.getAttribute(DynamicWebAppCluster.REQUEST_COUNT_PER_NODE);
+ assertTrue(policy.isRunning(), "err="+err);
+ assertEquals(cluster.getCurrentSize(), (Integer)2, "err="+err);
+ assertEquals(cluster.getAttribute(DynamicWebAppCluster.REQUEST_COUNT_PER_NODE), 1.0d, "err="+err);
}});
}
}