#
# Copyright (c) 2015, 2024, 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\0info threads\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=bash
# The below trick was found on https://stackoverflow.com/a/41613532
native.core.args=-c\0kill -ABRT %p && tail --pid=%p -f /dev/null
native.core.args.delimiter=\0
native.core.timeout=600000

cores=native.gdb
native.gdb.app=gdb
# Assume that java standard laucher has been used
native.gdb.args=%java\0-c\0%p\0-batch\0-ex\0info threads\0-ex\0thread apply all backtrace
native.gdb.args.delimiter=\0

################################################################################
# environment info to gather
################################################################################
environment=\
  users.current users.logged users.last \
  disk \
  env \
  ulimit \
  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 net.hostsfile \
  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

ulimit.app=bash
ulimit.args=-c\0ulimit -a
ulimit.args.delimiter=\0

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

net.hostsfile.app=cat
net.hostsfile.args=/etc/hosts

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
################################################################################
