#
# Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

config.execSuffix=
config.getChildren.pattern=%p
config.getChildren.app=ps
config.getChildren.args=--no-headers -o pid --ppid %p
################################################################################
# process info to gather
################################################################################
onTimeout=\
  native.pmap.normal native.pmap.everything \
  native.files native.locks \
  native.stack native.core
################################################################################
native.pattern=%p
native.javaOnly=false
native.args=%p

native.pmap.app=pmap
native.pmap.normal.args=-p %p
native.pmap.everything.args=-XXp %p

native.files.app=lsof
native.files.args=-p %p

native.locks.app=lslocks
native.locks.args=-u --pid %p

native.stack.app=gdb
native.stack.args=--pid=%p\0-batch\0-ex\0thread apply all backtrace
native.stack.args.delimiter=\0
native.stack.params.repeat=6

# has to be the last command
native.core.app=kill
native.core.args=-ABRT %p
################################################################################
# environment info to gather
################################################################################
environment=\
  users.current users.logged users.last \
  disk \
  env \
  system.dmesg system.sysctl \
  process.top process.ps \
  memory.free memory.vmstat.default memory.vmstat.statistics \
        memory.vmstat.slabinfo memory.vmstat.disk \
  files \
  locks \
  net.sockets net.statistics net.ifconfig \
  screenshot
################################################################################
users.current.app=id
users.current.args=-a
users.logged.app=who
users.logged.args=-a
users.last.app=last
users.last.args=-10

disk.app=df
disk.args=-h

env.app=env

system.dmesg.app=dmesg
system.sysctl.app=sysctl
system.sysctl.args=-a

process.top.app=top
process.top.args=-b -n 1
process.ps.app=ps
process.ps.args=-Leo pid,pcpu,cputime,start,pmem,vsz,rssize,stackp,stat,sgi_p,wchan,user,args

memory.free.app=free
memory.free.args=-h
memory.vmstat.app=vmstat
memory.vmstat.default.args=3 3
memory.vmstat.statistics.args=-s
memory.vmstat.slabinfo.args=-m
memory.vmstat.disk.args=-d

files.app=lsof
locks.app=lslocks
locks.args=-u

net.sockets.app=netstat
net.sockets.args=-aeeopv
net.statistics.app=netstat
net.statistics.args=-sv
net.ifconfig.app=ifconfig
net.ifconfig.args=-a

screenshot.app=bash
screenshot.args=-c\0\
    echo '\
        var robot = new java.awt.Robot();\
        var ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();\
        var bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();\
        var capture = robot.createScreenCapture(bounds);\
        var file = new java.io.File("screen.png");\
        javax.imageio.ImageIO.write(capture, "png", file);\
    ' | jshell -
screenshot.args.delimiter=\0
################################################################################

