RULE Increment deploy counter and init rendezvous
CLASS org.jboss.test.kernel.junit.MicrocontainerTestDelegate 
METHOD deploy(java.net.URL)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND NOTHING
IF TRUE
DO 
   debug("Counter " + incrementCounter("Deploy")),
   flag("StartRV"),
   deleteRendezvous("StartThreads", 0),
   createRendezvous("StartThreads", 2)
ENDRULE

RULE Deploy end rendezvous making sure threads have started
CLASS org.jboss.test.kernel.junit.MicrocontainerTestDelegate 
METHOD deploy(java.net.URL)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
AT EXIT
BIND NOTHING
IF TRUE
DO
   debug("StartThreads rendezvous in AbstractController$InstallControllerContextTask"),
   rendezvous("StartThreads"),
   debug("StartThreads rendezvous go!!!")
ENDRULE

#This should be triggered on 1st call to deploy() when we install Bean1, which will stop in the Instantiated stage since Bean2 has not yet been deployed
RULE Wait for Bean1 to be instantiated
CLASS org.jboss.test.kernel.junit.MicrocontainerTestDelegate 
METHOD deploy(java.net.URL)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
AT EXIT
BIND NOTHING
IF 1 == readCounter("Deploy")
DO 
   debug("wait in deploy"),
   waitFor("Instantiated", 10000),
   debug("go!!!")
ENDRULE

#This should be triggered on 2nd call to deploy() when we install Bean2, which go through to Installed
RULE Wait for Bean1 to be installed
CLASS org.jboss.test.kernel.junit.MicrocontainerTestDelegate 
METHOD deploy(java.net.URL)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
AT EXIT
BIND NOTHING
IF 2 == readCounter("Deploy")
DO 
   debug("wait in deploy"),
   waitFor("Installed", 10000),
   debug("go!!!")
ENDRULE

RULE Start threads rendezvous
CLASS org.jboss.dependency.plugins.AbstractController$InstallControllerContextTask 
METHOD run
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND NOTHING
IF flagged("StartRV")
DO 
   clear("StartRV"),
   debug("StartThreads rendezvous in AbstractController$InstallControllerContextTask"),
   rendezvous("StartThreads"),
   debug("StartThreads rendezvous go!!!")
ENDRULE

RULE Signal Bean1 instantiated
CLASS org.jboss.dependency.plugins.AbstractController$ContextsInstalledByExecutor
METHOD disassociateWithTask
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx = $1
IF ctx.getName().equals("Bean1") AND ctx.getState().equals(org.jboss.dependency.spi.ControllerState.INSTANTIATED)
DO 
   debug("signalling Instantiated in AbstractController$ContextsInstalledByExecutor"),
   signalWake("Instantiated", true),
   debug("signalled!!!")
ENDRULE

RULE Signal Bean1 Installed
CLASS org.jboss.dependency.plugins.AbstractController$ContextsInstalledByExecutor
METHOD disassociateWithTask
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx = $1
IF ctx.getName().equals("Bean1") AND ctx.getState().equals(org.jboss.dependency.spi.ControllerState.INSTALLED)
DO 
   debug("signalling Installed in AbstractController$ContextsInstalledByExecutor"),
   signalWake("Installed", true),
   debug("signalled!!!")
ENDRULE


RULE Mark PreInstallAction
CLASS org.jboss.kernel.plugins.dependency.PreInstallAction
METHOD installActionInternal(KernelControllerContext)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx:KernelControllerContext = $1
IF TRUE
DO addPoint("PreInstall-" + ctx.getName())
ENDRULE

RULE Mark DescribeAction
CLASS org.jboss.kernel.plugins.dependency.DescribeAction
METHOD installActionInternal(KernelControllerContext)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx:KernelControllerContext = $1
IF TRUE
DO addPoint("Describe-" + ctx.getName())
ENDRULE

RULE Mark InstantiateAction
CLASS org.jboss.kernel.plugins.dependency.InstantiateAction
METHOD installActionInternal(KernelControllerContext)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx:KernelControllerContext = $1
IF TRUE
DO addPoint("Instantiate-" + ctx.getName())
ENDRULE

RULE Mark ConfigureAction
CLASS org.jboss.kernel.plugins.dependency.ConfigureAction
METHOD installActionInternal(KernelControllerContext)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx:KernelControllerContext = $1
IF TRUE
DO addPoint("Configure-" + ctx.getName())
ENDRULE

#We don't do this in the Action class since there is no point invoked once on install
RULE Mark create
CLASS org.jboss.test.kernel.asynchronous.support.BeanWithCreateStart
METHOD create
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND bean = $0
IF TRUE
DO addPoint("Create-" + bean.getName())
ENDRULE

#We don't do this in the Action class since there is no point invoked once on install
RULE Mark StartStopLifecycleAction
CLASS org.jboss.test.kernel.asynchronous.support.BeanWithCreateStart
METHOD start
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND bean = $0
IF TRUE
DO addPoint("Start-" + bean.getName())
ENDRULE

RULE Mark InstallAction
CLASS org.jboss.kernel.plugins.dependency.InstallAction
METHOD installActionInternal(KernelControllerContext)
HELPER org.jboss.test.kernel.asynchronous.support.Helper
BIND ctx:KernelControllerContext = $1
IF TRUE
DO addPoint("Install-" + ctx.getName())
ENDRULE
