Hi all,

@tbouron and @googlielmo reviewed and approved the first PR [2], so I've merged that now. Thomas also made use of it for his tests in https://github.com/brooklyncentral/brooklyn-riak-cluster/pull/1.

Any comments, or shall I push on with the second part of the proposal ("Get child/member by index")?

Aled


On 08/11/2016 17:51, Aled Sage wrote:
Hi all,

I'd like us to make a few enhancements to the YAML DSL support. These are mostly motivated by trying to write some more complicated YAML test case examples.

_*$brooklyn:entity() to support nested DSLs*_
See [1], and the PR at [2].

For example, being able to write:

$brooklyn:entity(config("targetId")).attributeWhenReady("main.uri")

This looks up the entity with the id specified in the targetId config, and then retrieves the main.uri sensor value from that entity.

Currently, $brooklyn:entity() takes a string for the id of an entity to be looked up. However, in more dynamic situations the entity's id is only available on-the-fly as a sensor value (or a sensor value that is set to the entity itself).

In the example below, the "loop-test" will go through the members of the Riak cluster, and will run the test-http against each. That test entity will then lookup the main.uri from that riak cluster member.

   services:
   - type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
      id: target-app
   ...
- type: org.apache.brooklyn.test.framework.LoopOverGroupMembersTestCase
      name: "Value replicated on all Riak nodes"
      brooklyn.config:
        target: target-app
        testSpec:
          $brooklyn:entitySpec:
            type: org.apache.brooklyn.test.framework.TestHttpCall
            brooklyn.config:
              url:
$brooklyn:entity(config("targetId")).attributeWhenReady("main.uri")
              applyAssertionTo: status
              assert:
                equals: 200

We'd also support retrieving a $brooklyn:entity() from sensor that points at the actual entity (rather than at the entity's id).

_*Get child/member by index*_
Currently, the $brooklyn:entity() and its variants takes an entity's id. It would be useful to be able to retrieve entities in other ways, without knowing their ids (particularly when those entities are nested inside a blueprint that someone else wrote).

For example, we could retrieve the main.uri of the first and second members of a cluster by doing:

$brooklyn:entity("riak-cluster").member(0).attributeWhenReady("main.uri")
$brooklyn:entity("riak-cluster").member(1).attributeWhenReady("main.uri")

We could similarly retrieve a child by index.

This would be very useful for tests that write data using the first member, and then read the data using the second member of the cluster.

_*Other enhancements?*_
I suggest that we make improvements incrementally, starting with these.

However, does anyone have any other enhancements that they'd really like to see?

Aled

[1] https://issues.apache.org/jira/browse/BROOKLYN-381
[2] https://github.com/apache/brooklyn-server/pull/417



Reply via email to