Uploaded image for project: 'Arquillian'
  1. Arquillian
  2. ARQ-195

Expose a Deployer API to the TestCase

    Details

      Description

      The TestCase should be able to deploy other deployments as part of it's lifecycle.

      E.g.

      • Test the effects of a Deployer
      • Test lifecycles of Bundles

      The API needs to be extendable. some Containers might support start/stop of a deployment as well as deploy/undeploy.

        Gliffy Diagrams

          Issue Links

            Activity

            Hide
            aslak Aslak Knutsen added a comment -

            We need to make a Enricher that can inject a wrapped version of the DeployableContainer in a Deployer API. Everything needed is in the current Context etc, but we need to define a Deployer API(DeployableContainer.deploy/undeploy without the Context).

            This is easy to create for RunMode AS_CLIENT since we're always on the Client side of things and that's where we're already doing a Deployment, but a bit trickier in IN_CONTAINER. When IN_CONTAINER the testcase is running inside the Container under a different ContainerProfile (CONTAINER) which does not have a DeployableContainer defined(we're all ready there so). For this to work the Container needs to know how to deploy to itself from the inside and needs to package up the classes needed etc..

            This might prove to be difficult to do in some of the Embedded Containers (OpenEJB / Weld) where the whole Container is one deployment.

            Show
            aslak Aslak Knutsen added a comment - We need to make a Enricher that can inject a wrapped version of the DeployableContainer in a Deployer API. Everything needed is in the current Context etc, but we need to define a Deployer API(DeployableContainer.deploy/undeploy without the Context). This is easy to create for RunMode AS_CLIENT since we're always on the Client side of things and that's where we're already doing a Deployment, but a bit trickier in IN_CONTAINER. When IN_CONTAINER the testcase is running inside the Container under a different ContainerProfile (CONTAINER) which does not have a DeployableContainer defined(we're all ready there so). For this to work the Container needs to know how to deploy to itself from the inside and needs to package up the classes needed etc.. This might prove to be difficult to do in some of the Embedded Containers (OpenEJB / Weld) where the whole Container is one deployment.
            Hide
            aslak Aslak Knutsen added a comment -

            When doing the initial @Deployment we're on the client side. Exposing a Deployer API that can be called during test execution means the package process might be in-container. To avoid having to package up all possible sub deployments as part of the initial deployment, the Deployer API should support a callback to 'Client' side and execute the packaging there for so to forward it to a DeployableContainer.

            Show
            aslak Aslak Knutsen added a comment - When doing the initial @Deployment we're on the client side. Exposing a Deployer API that can be called during test execution means the package process might be in-container. To avoid having to package up all possible sub deployments as part of the initial deployment, the Deployer API should support a callback to 'Client' side and execute the packaging there for so to forward it to a DeployableContainer.
            Hide
            aslak Aslak Knutsen added a comment -

            pushed upstream, both client and container side

            Show
            aslak Aslak Knutsen added a comment - pushed upstream, both client and container side

              People

              • Assignee:
                aslak Aslak Knutsen
                Reporter:
                aslak Aslak Knutsen
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Development