<!--

    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

-->


<property name="module" value="tnative"/>
<property name="appname" value="${module}"/>
<property name="assemble" value="${env.APS_HOME}/build/module/archive"/>
<property name="test.description" value="Selfmanagement-DISK-CPU-MEMORY-Tests"/>
<property name="application.xml" value="descriptor/application.xml"/>
<property name="sun-application.xml" value="descriptor/sun-application.xml"/>
<property name="application-client.xml" value="descriptor/application-client.xml"/>
<property name="sun-application-client.xml" value="descriptor/sun-application-client.xml"/>

<property name="appclientjar.files" value="${build.classes.dir}"/>
<property name="appclient.jar" value="${assemble}/${module}-client.jar"/>
<property name="appclient.jar.name" value="${module}-client.jar"/>
<property name="app.type" value="application"/>
<property name="app.lib" value="${env.APS_HOME}/../../publish/glassfish/lib/"/>

<property name="disk.event.mbean.impl.class.name" value="com.sun.enterprise.ee.selfmanagement.mbeans.DiskToolkit"/>
<property name="disk.event.mbean.name" value="DiskEventBean"/>
<property name="disk.event.mbean.attribute.name" value="PartitionSpace"/>
<property name="disk.event.mbean.attribute.value" value="\/root"/>
<property name="disk.action.mbean.impl.class.name" value="com.sun.s1peqe.selfmanagement.tnative.action.DiskSpace"/>
<property name="disk.action.mbean.name" value="CustomDiskActionBean"/>
<property name="memory.event.mbean.impl.class.name" value="com.sun.enterprise.ee.selfmanagement.mbeans.Memory"/>
<property name="memory.event.mbean.name" value="MemoryEventBean"/>
<property name="memory.action.mbean.impl.class.name" value="com.sun.s1peqe.selfmanagement.tnative.action.MemoryUtil"/>
<property name="memory.action.mbean.name" value="CustomMemoryActionBean"/>
<property name="cpu.event.mbean.impl.class.name" value="com.sun.enterprise.ee.selfmanagement.mbeans.CPU"/>
<property name="cpu.event.mbean.name" value="CPUEventBean"/>
<property name="cpu.action.mbean.impl.class.name" value="com.sun.s1peqe.selfmanagement.tnative.action.CpuUtil"/>
<property name="cpu.action.mbean.name" value="CustomCpuActionBean"/>


<property name="selfmanagement.rule.eventtype" value="monitor"/>
<property name="selfmanagement.rule.eventloglevel" value="INFO"/>

<property name="selfmanagement.rule.monitor.type.counter" value="countermonitor"/>
<property name="selfmanagement.rule.monitor.type.gauge" value="gaugemonitor"/>

<property name="selfmanagement.rule.monitor.initthreshold.counter" value="0"/>
<property name="selfmanagement.rule.monitor.numbertype.counter" value="long"/>

<property name="selfmanagement.rule.monitor.highthreshold.gauge" value="1"/>
<property name="selfmanagement.rule.monitor.lowthreshold.gauge" value="0"/>
<property name="selfmanagement.rule.monitor.numbertype.gauge" value="double"/>

<property name="selfmanagement.rule.monitor.observedattribute.disk" value="DiskFree"/>
<property name="selfmanagement.rule.monitor.observedattribute.memory" value="FreeMemory"/>
<property name="selfmanagement.rule.monitor.observedattribute.cpu" value="CpuUtilization"/>

<property name="selfmanagement.rule1.eventproperties" value="monitortype=${selfmanagement.rule.monitor.type.counter}:initthreshold=${selfmanagement.rule.monitor.initthreshold.counter}:numbertype=${selfmanagement.rule.monitor.numbertype.counter}:observedobject=user\:impl\-class\-name\=${disk.event.mbean.impl.class.name}\,name\=${disk.event.mbean.name}\,server\=server:observedattribute=${selfmanagement.rule.monitor.observedattribute.disk}"/>

<property name="selfmanagement.rule2.eventproperties" value="monitortype=${selfmanagement.rule.monitor.type.counter}:initthreshold=${selfmanagement.rule.monitor.initthreshold.counter}:numbertype=${selfmanagement.rule.monitor.numbertype.counter}:observedobject=user\:impl\-class\-name\=${memory.event.mbean.impl.class.name}\,name\=${memory.event.mbean.name}\,server\=server:observedattribute=${selfmanagement.rule.monitor.observedattribute.memory}"/>

<property name="selfmanagement.rule3.eventproperties" value="monitortype=${selfmanagement.rule.monitor.type.gauge}:lowthreshold=${selfmanagement.rule.monitor.lowthreshold.gauge}:highthreshold=${selfmanagement.rule.monitor.highthreshold.gauge}:numbertype=${selfmanagement.rule.monitor.numbertype.gauge}:observedobject=user\:impl\-class\-name\=${cpu.event.mbean.impl.class.name}\,name\=${cpu.event.mbean.name}\,server\=server:observedattribute=${selfmanagement.rule.monitor.observedattribute.cpu}"/>

<property name="selfmanagement.rule1.name" value="DiskRule"/>
<property name="selfmanagement.rule2.name" value="MemoryUtilRule"/>
<property name="selfmanagement.rule3.name" value="CpuUtilRule"/>
