<?xml version="1.0" encoding="ISO-8859-1"?>
<!--

    Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<project name="MBeanApi Config tests" default="all" basedir=".">

  <property name="testsRoot" value="." />
  <property name="build" value="${testsRoot}/build" />
  <property file="./bootstrap.subcomponent.properties" />
  <property file="./../../../../../../bootstrap/bootstrap.properties" />
  <property file="./../../../../../../appserv/build.properties" />
  <property file="./../../../../../config.properties" />
  <property file="./build.properties" />


  <path id="compile.classpath">
    <pathelement location="${jmxri.jar}" />
    <pathelement location="${mbeanapi.jar}" />
    <pathelement location="${mbeanapi-impl.jar}" />
    <pathelement location="${jmxremote.jar}" />
    <pathelement location="${common}" />
    <pathelement location="${mgmtapi.jar}" />
  </path>

  <path id="run.classpath">
    <pathelement location="${build}" />
    <pathelement location="${jmxri.jar}" />
    <pathelement location="${mbeanapi.jar}" />
    <pathelement location="${mbeanapi-impl.jar}" />
    <pathelement location="${jmxremote.jar}" />
    <pathelement location="${mgmtapi.jar}" />
    <pathelement location="${common}" />
  </path>

  <target name="init" description="MBeanapi Tests initialization">
    <mkdir dir="${build}" />
    <exec executable="ant" dir="${testsRoot}/../common" failonerror="true">
      <arg value="build" />
    </exec>
  </target>

  <!-- all -->
  <target name="all" depends="build" description="Build entire component" />

  <!-- build -->
  <target name="build" depends="compile" description="Build entire component" />

  <!-- compile -->
  <target name="compile" depends="init">
    <javac srcdir="${src.dir}"
           destdir="${build}"
           debug="${javac.debug}"
           optimize="${javac.optimize}"
           source="${javac.source}"
           deprecation="${javac.deprecation}"
           failonerror="true"
    >
      <classpath refid="compile.classpath" />
      <include name="**/*.java" />
    </javac>
  </target>

  <!-- clean -->
  <target name="clean" description="clean">
    <delete dir="${build}" />
  </target>

  <target name="run-standalone-instance-test-1"
          description="runs the standalone instance test to create, start, stop and delete one standalone instance"
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.StandaloneInstanceTest" fork="false">
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="NODE_AGENT" value="hyades" />
      <!-- change this to your node agent name-->
      <sysproperty key="NEW_NODE_AGENT" value="true" />
      <sysproperty key="NUM_INSTANCES" value="1" />
      <sysproperty key="USE_TLS" value="true" />
      <!--<sysproperty key="CONFIG_NAME" value="a_config"/>-->
      <sysproperty key="PROPERTIES"
                   value="HTTP_LISTENER_PORT=${http-list-1}:HTTP_SSL_LISTENER_PORT=${http-list-2}:IIOP_LISTENER_PORT=${orb-list-1}:IIOP_SSL_LISTENER_PORT=${SSL}:IIOP_SSL_MUTUALAUTH_PORT=${SSL_MUTUALAUTH}:JMX_SYSTEM_CONNECTOR_PORT=${JMX_SYSTEM_CONNECTOR}"
      />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

  <target name="run-standalone-instance-test-2"
          description="runs the standalone instance test to create, start, stop and delete four standalone instances"
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.StandaloneInstanceTest"
          failonerror="true"
          fork="false"
    >
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="NODE_AGENT" value="hyades" />
      <!-- change this to your node agent name-->
      <sysproperty key="NEW_NODE_AGENT" value="true" />
      <sysproperty key="NUM_INSTANCES" value="4" />
      <sysproperty key="USE_TLS" value="true" />
      <sysproperty key="PROPERTIES"
                   value="HTTP_LISTENER_PORT=${http-list-1}:HTTP_SSL_LISTENER_PORT=${http-list-2}:IIOP_LISTENER_PORT=${orb-list-1}:IIOP_SSL_LISTENER_PORT=${SSL}:IIOP_SSL_MUTUALAUTH_PORT=${SSL_MUTUALAUTH}:JMX_SYSTEM_CONNECTOR_PORT=${JMX_SYSTEM_CONNECTOR}"
      />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

  <target name="run-config-tests"
          description="runs resources,pools,http-service config elements tests to create, delete, list operations"
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.AMXConfigVerifier"
          failonerror="true"
          fork="false"
    >
      <!-- turn forking to true if starting jvm in debug mode-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="NODE_AGENT" value="hyades" />
      <!-- change this to your node agent name-->
      <sysproperty key="NEW_NODE_AGENT" value="true" />
      <sysproperty key="NUM_INSTANCES" value="4" />
      <sysproperty key="USE_TLS" value="true" />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

  <target name="run-cluster-lifecycle-test-1"
          description="creates 1 cluster with 2 instances, starts and stops cluster, then starts and stops each of the instances in the cluster, then deletes instances and cluster"
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.ClusterLifecycleTest"
          failonerror="true"
          fork="false"
    >
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="NODE_AGENT" value="hyades" />
      <!-- change this to your node agent name-->
      <sysproperty key="NEW_NODE_AGENT" value="true" />
      <sysproperty key="NUM_INSTANCES" value="2" />
      <sysproperty key="NUM_CLUSTERS" value="1" />
      <sysproperty key="USE_TLS" value="true" />
      <sysproperty key="PROPERTIES"
                   value="HTTP_LISTENER_PORT=${http-list-1}:HTTP_SSL_LISTENER_PORT=${http-list-2}:IIOP_LISTENER_PORT=${orb-list-1}:IIOP_SSL_LISTENER_PORT=${SSL}:IIOP_SSL_MUTUALAUTH_PORT=${SSL_MUTUALAUTH}:JMX_SYSTEM_CONNECTOR_PORT=${JMX_SYSTEM_CONNECTOR}"
      />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

  <target name="run-http-listener-test"
          description="creates an http-listener, a virtual server and an ssl element under this listener and verified creation."
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.HTTPListenerTests"
          failonerror="true"
          fork="false"
    >
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="USE_TLS" value="true" />
      <sysproperty key="CONFIG_NAME" value="server-config" />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>
  <target name="run-iiop-listener-test"
          description="creates an iiop-listener, a virtual server and an ssl element under this listener and verified creation."
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.IIOPListenerTests"
          failonerror="true"
          fork="false"
    >
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="USE_TLS" value="true" />
      <sysproperty key="CONFIG_NAME" value="server-config" />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

  <target name="run-remote-instance-test-1"
          description="runs the remote standalone instance test to create, start, stop and delete one remote standalone instance"
  >
    <java classname="com.sun.enterprise.admin.mbeanapi.config.RemoteInstanceTest" fork="false">
      <!-- turn forking to true if starting jvm in debug mode and see comments below-->
      <classpath refid="run.classpath" />
      <sysproperty key="HOST" value="localhost" />
      <sysproperty key="AMX_PORT" value="8686" />
      <sysproperty key="ADMIN_PORT" value="4849" />
      <sysproperty key="ADMIN_USER" value="admin" />
      <sysproperty key="ADMIN_PASSWORD" value="adminadmin" />
      <sysproperty key="NODE_AGENT" value="easqelx14" />
      <!-- change this to your node agent name-->
      <sysproperty key="NEW_NODE_AGENT" value="true" />
      <sysproperty key="NUM_INSTANCES" value="1" />
      <sysproperty key="USE_TLS" value="true" />
      <!--<sysproperty key="CONFIG_NAME" value="a_config"/>-->
      <sysproperty key="PROPERTIES"
                   value="HTTP_LISTENER_PORT=${http-list-1}:HTTP_SSL_LISTENER_PORT=${http-list-2}:IIOP_LISTENER_PORT=${orb-list-1}:IIOP_SSL_LISTENER_PORT=${SSL}:IIOP_SSL_MUTUALAUTH_PORT=${SSL_MUTUALAUTH}:JMX_SYSTEM_CONNECTOR_PORT=${JMX_SYSTEM_CONNECTOR}"
      />
      <!-- uncomment the following lines if starting jvm in debug mode,
         but do not check in to cvs with debug enabled, and forking set to true-->
      <!--<sysproperty key="java.compiler" value="NONE"/>-->
      <!--<jvmarg value="-Xdebug"/>-->
      <!--<jvmarg value="-Xnoagent"/>-->
      <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=15000"/>-->
    </java>
  </target>

</project>
