You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by m4...@apache.org on 2017/07/05 13:44:18 UTC
[1/2] brooklyn-server git commit: Added endpoint test boms
Repository: brooklyn-server
Updated Branches:
refs/heads/master eb9795c13 -> 3dd0bbc38
Added endpoint test boms
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b78bb26f
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b78bb26f
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b78bb26f
Branch: refs/heads/master
Commit: b78bb26faa99af5cd5e8630aebecd6bef63d535d
Parents: eb9795c
Author: graeme.miller <gr...@cloudsoftcorp.com>
Authored: Wed Jul 5 11:27:26 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Wed Jul 5 11:42:25 2017 +0100
----------------------------------------------------------------------
.../resources/generic-application.tests.bom | 467 +++++++++++++++++++
.../src/test/resources/generic.tests.bom | 60 +++
2 files changed, 527 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b78bb26f/locations/container/src/test/resources/generic-application.tests.bom
----------------------------------------------------------------------
diff --git a/locations/container/src/test/resources/generic-application.tests.bom b/locations/container/src/test/resources/generic-application.tests.bom
new file mode 100644
index 0000000..0294cc6
--- /dev/null
+++ b/locations/container/src/test/resources/generic-application.tests.bom
@@ -0,0 +1,467 @@
+# 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.
+
+###
+ # Application blueprints and tests for testing deployment to Swarm or k8s endpoints, and hybrid
+ # deployments that span VMs and containers.
+ #
+ # It deploys a multi-node blueprint, consisting of:
+ # - a cluster of Tomcat nodes (size 1)
+ # - nginx
+ # - database
+ #
+ # It asserts that:
+ # - app comes up
+ # - via nginx, we can connect to the web-app
+ # - via nginx (and the web-app), we can write to the database and read from database
+ #
+ # The different variants of the test will:
+ # - everything running in cluster;
+ # See "multi-node-app-cluster".
+ # - hybrid: comms from VM into the containers (nginx on a VM);
+ # See "multi-node-app-cloud-to-cluster".
+ # - hybrid: comms from the containers out to the VM (database on a VM);
+ # See "multi-node-app-cluster-to-cloud".
+ #
+ # Tests assume that there is a pre-existing location defined with the name "testing-cluster",
+ # which is a swarm or k8s endpoint.
+ #
+ # It assumes that the tests are run against a location in which VMs can be provisioned
+ # (which is then overridden where "testing-cluster" should instead be used). For example,
+ # "multi-node-app-cloud-to-cluster" deploys nginx to the location passed in; and
+ # deploys the tomcat-webapp-cluster to "testing-cluster".
+ ##
+
+brooklyn.catalog:
+ version: "0.12.0-SNAPSHOT" # BROOKLYN_VERSION
+ iconUrl: https://raw.githubusercontent.com/docker-library/docs/471fa6e4cb58062ccbf91afc111980f9c7004981/swarm/logo.png
+
+ items:
+ - "https://raw.githubusercontent.com/brooklyncentral/common-catalog-utils/master/common-tests/src/main/resources/commontests/common.tests.bom"
+ - id: tomcat-webapp-cluster
+ name: "Tomcat Webapp Cluster"
+ description: |
+ Cluster of Tomcat servers
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.group.DynamicCluster
+ id: cluster
+ name: "Webapp Cluster"
+ brooklyn.config:
+ initialSize: 1
+ memberSpec:
+ $brooklyn:entitySpec:
+ type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
+ id: tomcat
+ name: "Tomcat Server"
+ brooklyn.config:
+ wars.root:
+ "http://search.maven.org/remotecontent?filepath=org/apache/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.9.0/brooklyn-example-hello-world-sql-webapp-0.9.0.war"
+ java.sysprops:
+ brooklyn.example.db.url:
+ $brooklyn:formatString:
+ - "jdbc:%s%s?user=%s&password=%s"
+ - $brooklyn:config("db.url")
+ - "visitors"
+ - "brooklyn"
+ - "br00k11n"
+ brooklyn.enrichers:
+ - type: org.apache.brooklyn.core.network.OnPublicNetworkEnricher
+ brooklyn.config:
+ sensors:
+ - http.port
+ brooklyn.enrichers:
+ - type: org.apache.brooklyn.enricher.stock.Aggregator
+ brooklyn.config:
+ enricher.sourceSensor: $brooklyn:sensor("webapp.reqs.perSec.windowed")
+ enricher.targetSensor: $brooklyn:sensor("webapp.reqs.perSec.perNode")
+ enricher.aggregating.fromMembers: true
+ transformation: average
+
+ - id: nginx-load-balancer
+ name: "Nginx Load Balancer"
+ description: |
+ Nginx load balancer
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.proxy.nginx.NginxController
+ id: nginx
+ name: "Load Balancer (nginx)"
+ brooklyn.config:
+ loadbalancer.serverpool: $brooklyn:sibling("cluster")
+ nginx.sticky: false
+ brooklyn.enrichers:
+ - type: org.apache.brooklyn.core.network.OnPublicNetworkEnricher
+ brooklyn.config:
+ sensors:
+ - main.uri
+
+ - id: mysql-database
+ name: "MySQL Database"
+ description: |
+ MySQL database
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.database.mysql.MySqlNode
+ id: db
+ name: "Database (MySQL)"
+ brooklyn.config:
+ provisioning.properties:
+ osFamily: centos
+ osVersionRegex: 7
+ datastore.creation.script.url:
+ "https://raw.githubusercontent.com/apache/brooklyn-library/0.11.x/examples/simple-web-cluster/src/main/resources/visitors-creation-script.sql"
+ brooklyn.enrichers:
+ - type: org.apache.brooklyn.core.network.OnSubnetNetworkEnricher
+ brooklyn.config:
+ sensors:
+ - datastore.url
+
+ - id: multi-node-app-cluster
+ name: "Multi-node Application"
+ description: |
+ A multi-node Brooklyn app, consisting of a cluster of Tomcat servers,
+ a MySQL database and an Nginx load balancer, deployed to a cluster location.
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.stock.BasicApplication
+ brooklyn.children:
+ - type: tomcat-webapp-cluster
+ id: cluster
+ location: testing-cluster
+ - type: nginx-load-balancer
+ id: nginx
+ location: testing-cluster
+ - type: mysql-database
+ id: db
+ location: testing-cluster
+
+ - id: multi-node-app-cloud-to-cluster
+ name: "Multi-node Hybrid Application"
+ description: |
+ A hybrid multi-node Brooklyn app, consisting of a cluster of Tomcat servers,
+ a MySQL database and an Nginx load balancer, with the load balancer deployed
+ to a cloud location and the other entities deployed to a cluster location.
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.stock.BasicApplication
+ brooklyn.children:
+ - type: tomcat-webapp-cluster
+ id: cluster
+ location: testing-cluster
+ - type: nginx-load-balancer
+ id: nginx
+ - type: mysql-database
+ id: db
+ location: testing-cluster
+
+ - id: multi-node-app-cluster-to-cloud
+ name: "Multi-node Hybrid Application"
+ description: |
+ A multi-node Brooklyn app, consisting of a cluster of Tomcat servers,
+ a MySQL database and an Nginx load balancer, with the database deployed
+ to a cloud location and the other entities deployed to a cluster location
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.stock.BasicApplication
+ brooklyn.children:
+ - type: tomcat-webapp-cluster
+ id: cluster
+ location: testing-cluster
+ - type: nginx-load-balancer
+ id: nginx
+ location: testing-cluster
+ - type: mysql-database
+ id: db
+
+ - id: test-multi-node-app
+ name: Test multi-node app deployment
+ description: |
+ Test that we can provision a multi-node Brooklyn app
+ itemType: entity
+ item:
+ type: test-case
+ name: "Sensor Tests"
+ brooklyn.children:
+ - type: assert-up
+ - type: assert-running
+ - type: test-http-status-200
+ url: $brooklyn:config("nginx.url")
+ timeout: 60s
+ - type: test-http-status-200
+ name: "Check Write to web-app message board"
+ url:
+ $brooklyn:formatString:
+ - "%s/db.jsp?name=myname&message=mymessage"
+ - $brooklyn:config("nginx.url")
+ - type: test-http-body
+ name: "Check Read from web-app message board"
+ url:
+ $brooklyn:formatString:
+ - "%s/db.jsp"
+ - $brooklyn:config("nginx.url")
+ assert:
+ - contains: "myname"
+ - contains: "mymessage"
+
+ - id: deploy-multi-node-app-cluster
+ name: "Multi Node Cluster App"
+ description: |
+ Deploy a multi-node app to a cluster location
+ item:
+ type: test-case
+ id: test-scope
+ name: "Cluster Deploy Tests"
+ brooklyn.children:
+ - type: multi-node-app-cluster
+ id: cluster-only-app
+ brooklyn.config:
+ db.url: $brooklyn:ancestor("test-scope").descendant("db").attributeWhenReady("datastore.url.mapped.subnet")
+ member.sensor.hostname: $brooklyn:sensor("host.subnet.address")
+ - type: test-multi-node-app
+ brooklyn.config:
+ timeout: 30m
+ targetId: cluster-only-app
+ nginx.url: $brooklyn:ancestor("test-scope").descendant("nginx").attributeWhenReady("main.uri.mapped.public")
+
+ - id: deploy-multi-node-app-cloud-to-cluster
+ name: "Multi Node Cloud to Cluster App"
+ description: |
+ Deploy a multi-node app to Cloud and cluster locations, with communication
+ from the Cloud entity (Nginx) to the cluster entities.
+ item:
+ type: test-case
+ id: test-scope
+ name: "Cloud to Cluster Deploy Tests"
+ brooklyn.children:
+ - type: multi-node-app-cloud-to-cluster
+ id: cloud-to-cluster-app
+ brooklyn.config:
+ db.url: $brooklyn:ancestor("test-scope").descendant("db").attributeWhenReady("datastore.url.mapped.subnet")
+ member.sensor.hostandport: $brooklyn:sensor("http.endpoint.mapped.public")
+ proxy.domainName: $brooklyn:ancestor("test-scope").descendant("nginx").attributeWhenReady("host.address")
+ - type: test-multi-node-app
+ brooklyn.config:
+ timeout: 30m
+ targetId: cloud-to-cluster-app
+ nginx.url: $brooklyn:ancestor("test-scope").descendant("nginx").attributeWhenReady("main.uri")
+
+ - id: deploy-multi-node-app-cluster-to-cloud
+ name: "Multi Node Cluster to Cloud App"
+ description: |
+ Deploy a multi-node app to Cloud and Cluster locations, with communication
+ from the Cluster entities to the Cloud entity (MySQL).
+ item:
+ type: test-case
+ id: test-scope
+ name: "Cluster to Cloud Deploy Tests"
+ brooklyn.children:
+ - type: multi-node-app-cluster-to-cloud
+ id: cluster-to-cloud-app
+ brooklyn.config:
+ db.url: $brooklyn:ancestor("test-scope").descendant("db").attributeWhenReady("datastore.url")
+ member.sensor.hostname: $brooklyn:sensor("host.subnet.address")
+ - type: test-multi-node-app
+ brooklyn.config:
+ timeout: 30m
+ targetId: cluster-to-cloud-app
+ nginx.url: $brooklyn:ancestor("test-scope").descendant("nginx").attributeWhenReady("main.uri.mapped.public")
+
+ ###
+ # Deploy a single-node blueprint, and confirm SSH works.
+ ##
+ - id: deploy-app-to-cluster-single-node
+ name: "Single Node App to Cluster endpoint"
+ description: |
+ Test that we can provision a simple Brooklyn SoftwareProcess to a Cluster endpoint
+ item:
+ type: test-case
+ name: "Single Node App Deploy Tests"
+ brooklyn.children:
+ - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
+ location: testing-cluster
+ id: empty
+ brooklyn.config:
+ onbox.base.dir.skipResolution: true
+ sshMonitoring.enabled: false
+ - type: test-case
+ name: "Empty Container Tests"
+ brooklyn.config:
+ timeout: 15m
+ targetId: empty
+ brooklyn.children:
+ - type: test-case
+ name: "Sensor Tests"
+ brooklyn.children:
+ # Is up and can deploy
+ - type: assert-up
+ - type: assert-running
+ # Can ssh
+ - type: test-ssh
+ command: |
+ echo "hello-world"
+ assertStatus:
+ equals: 0
+ assertOut:
+ contains: "hello-world"
+
+ ##
+ # A Riak cluster example.
+ #
+ # Requires a (docker swarm or k8s cluster) location pre-configured with cloudsoft/ubuntu:14.04 for the Riak application to deploy to.
+ ##
+ - id: riak-cluster-to-cluster-multi-node
+ name: "Riak Cluster"
+ description: |
+ Riak cluster with load-balanced chatroom webapp
+ iconUrl: classpath://riak-icon.png
+ itemType: entity
+ item:
+ type: org.apache.brooklyn.entity.stock.BasicApplication
+ id: riak-app
+ name: "Riak App"
+ brooklyn.children:
+ - type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
+ id: riak-cluster
+ name: "Riak Cluster"
+ brooklyn.config:
+ provisioning.properties:
+ # cloudsoft/ubuntu:14.04
+ osFamily: ubuntu
+ osVersionRegex: 14.04
+ initialSize: 3
+ install.version: 2.1.4
+ riak.networking.optimize: false
+ riak.networking.internal: false
+ - type: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster
+ id: web-cluster
+ name: "Web Cluster"
+ brooklyn.config:
+ initialSize: 2
+ dynamiccluster.memberspec:
+ $brooklyn:entitySpec:
+ type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
+ brooklyn.config:
+ wars.root:
+ "https://s3-eu-west-1.amazonaws.com/brooklyn-clocker/brooklyn-example-hello-world-sql-webapp.war"
+ java.sysprops:
+ brooklyn.example.riak.nodes:
+ $brooklyn:entity("riak-cluster").attributeWhenReady("riak.cluster.nodeList")
+ controlleddynamicwebappcluster.controllerSpec:
+ $brooklyn:entitySpec:
+ type: org.apache.brooklyn.entity.proxy.nginx.NginxController
+ id: load-balancer
+ brooklyn.enrichers:
+ - type: org.apache.brooklyn.core.network.OnPublicNetworkEnricher
+ brooklyn.config:
+ sensors:
+ - main.uri
+ brooklyn.enrichers:
+ # publish the mapped URL at the cluster
+ - type: org.apache.brooklyn.enricher.stock.Propagator
+ brooklyn.config:
+ uniqueTag: url-propagator
+ enricher.producer: $brooklyn:entity("load-balancer")
+ enricher.propagating.inclusions:
+ - main.uri.mapped.public
+ brooklyn.enrichers:
+ # publish the cluster URL (the mapped public one) as the main.uri of the top-level app
+ - type: org.apache.brooklyn.enricher.stock.Propagator
+ brooklyn.config:
+ uniqueTag: main-uri-publisher
+ enricher.producer: $brooklyn:entity("web-cluster")
+ enricher.propagating.inclusions:
+ - main.uri.mapped.public
+
+ - id: deploy-riak-cluster-to-cluster-multi-node
+ name: "Multi Node Riak Cluster to Cluster"
+ description: |
+ Deploy Riak cluster with load-balanced chatroom webapp to Cluster location
+ item:
+ type: test-case
+ name: "Multi Node App Deploy Tests"
+ brooklyn.children:
+ - type: riak-cluster-to-cluster-multi-node
+ id: riak-app
+ location: testing-cluster
+ - type: test-case
+ brooklyn.config:
+ timeout: 30m
+ targetId: riak-app
+ brooklyn.children:
+ - type: test-case
+ name: "Sensor Tests"
+ brooklyn.children:
+ - type: assert-up
+ - type: assert-running
+ - type: test-http-status-200
+ url: $brooklyn:entity("riak-app").attributeWhenReady("main.uri.mapped.public")
+ timeout: 60s
+ - type: test-http-status-200
+ name: "Check Write to web-app message board"
+ url:
+ $brooklyn:formatString:
+ - "%s/riak.jsp?name=myname&message=mymessage"
+ - $brooklyn:entity("riak-app").attributeWhenReady("main.uri.mapped.public")
+ timeout: 60s
+ - type: test-http-body
+ name: "Check Read from web-app message board"
+ url:
+ $brooklyn:formatString:
+ - "%s/riak.jsp"
+ - $brooklyn:entity("riak-app").attributeWhenReady("main.uri.mapped.public")
+ timeout: 60s
+ assert:
+ - contains: "myname"
+ - contains: "mymessage"
+
+ - id: deploy-single-container-type
+ name: "Deploy Container Type"
+ description: |
+ Deploys an httpd container using the container type
+ itemType: entity
+ item:
+ type: test-case
+ name: "Deploy Container Type Tests"
+ brooklyn.children:
+ - type: org.apache.brooklyn.container.entity.docker.DockerContainer
+ location: testing-cluster
+ id: httpd
+ name: "httpd"
+ brooklyn.config:
+ docker.container.disableSsh: true
+ docker.container.imageName: "httpd"
+ docker.container.inboundPorts:
+ - "70"
+ - "80"
+ - "90-99"
+ - type: test-case
+ brooklyn.config:
+ timeout: 30m
+ targetId: httpd
+ brooklyn.children:
+ - type: test-case
+ name: "Sensor Tests"
+ brooklyn.children:
+ - type: assert-up
+ - type: assert-running
+ - type: test-http-status-200
+ url:
+ $brooklyn:formatString:
+ - "http://%s"
+ - $brooklyn:entity("httpd").attributeWhenReady("docker.port.80.mapped.public")
+ timeout: 30s
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b78bb26f/locations/container/src/test/resources/generic.tests.bom
----------------------------------------------------------------------
diff --git a/locations/container/src/test/resources/generic.tests.bom b/locations/container/src/test/resources/generic.tests.bom
new file mode 100644
index 0000000..5c18bf6
--- /dev/null
+++ b/locations/container/src/test/resources/generic.tests.bom
@@ -0,0 +1,60 @@
+# 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.
+
+brooklyn.catalog:
+ version: "0.12.0-SNAPSHOT" # BROOKLYN_VERSION
+ iconUrl: https://raw.githubusercontent.com/docker-library/docs/471fa6e4cb58062ccbf91afc111980f9c7004981/swarm/logo.png
+
+ items:
+ - "https://raw.githubusercontent.com/brooklyncentral/common-catalog-utils/master/common-tests/src/main/resources/commontests/common.tests.bom"
+
+ - id: cluster-endpoint-tests
+ name: "Cluster Endpoint Deployment Tests"
+ description: |
+ Tests containers and applications can be deployed to both cluster and
+ Cloud locations
+ itemType: template
+ item:
+ brooklyn.config:
+ timeout: 1h
+ timeout.initialStartup: 1h
+ timeout.runtimeAssertion: 1h
+ services:
+ - type: test-case
+ name: "1. Deploy Container Type Tests"
+ brooklyn.children:
+ - type: deploy-single-container-type
+ - type: test-case
+ name: "2. Deploy Blueprint Application Tests"
+ brooklyn.config:
+ dontRequireTtyForSudo: true
+ brooklyn.children:
+ - type: test-case
+ name: "2.1. Single-Node Application Test"
+ brooklyn.children:
+ - type: deploy-app-to-cluster-single-node
+ - type: test-case
+ name: "2.2. Multi-Node Application Test"
+ brooklyn.children:
+ # remove this because of https://issues.apache.org/jira/browse/BROOKLYN-311
+ #- type: deploy-riak-cluster-to-cluster-multi-node
+ - type: deploy-multi-node-app-cluster
+ - type: test-case
+ name: "2.3 Hybrid Multi-Node Application"
+ brooklyn.children:
+ - type: deploy-multi-node-app-cluster-to-cloud
+ - type: deploy-multi-node-app-cloud-to-cluster
\ No newline at end of file
[2/2] brooklyn-server git commit: This closes #755
Posted by m4...@apache.org.
This closes #755
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3dd0bbc3
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3dd0bbc3
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3dd0bbc3
Branch: refs/heads/master
Commit: 3dd0bbc38aa3ae426160a7499c0f3223073e5e06
Parents: eb9795c b78bb26
Author: Mark McKenna <m4...@gmail.com>
Authored: Wed Jul 5 14:43:48 2017 +0100
Committer: Mark McKenna <m4...@gmail.com>
Committed: Wed Jul 5 14:43:48 2017 +0100
----------------------------------------------------------------------
.../resources/generic-application.tests.bom | 467 +++++++++++++++++++
.../src/test/resources/generic.tests.bom | 60 +++
2 files changed, 527 insertions(+)
----------------------------------------------------------------------