#!/bin/bash
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

TMP_DIR=
cleanup() {
  rm -rf "${TMP_DIR}"
}

fail() {
  echo "${test}: FAIL: $*" >&2
  exit 1
}

pass() {
  echo "${test}: PASS"
  exit 0
}

test_init() {
  scratch_dir="${TMP_DIR}/${test}"
  export SPOOL_DIR="${scratch_dir}/spool"
  mkdir -p "${SPOOL_DIR}"

  trap -- EXIT INT
}

wake_sched_up() {
  local pid=$1 sleep_pid

  sleep_pid=$(LC_ALL=C pstree -p $$ |
              sed -n -r '/sleep\(/s:.*\(([0-9]*)\).*:\1:p')
  kill ${sleep_pid}
}

# Basic test to make sure things work.
test1() {
  local test=${FUNCNAME} scratch_dir pid spool_file
  test_init

  local test_file="${scratch_dir}/ok"
  ${SCHED_SHELL} "${SCHED}" 1000 300 boo touch "${test_file}" &
  pid=$!
  trap "kill ${pid} \$(pgrep -P ${pid})" EXIT INT
  spool_file="${SPOOL_DIR}/boo"

  sleep 1
  if [[ -e ${test_file} ]]; then
    fail "${test_file} should not exist yet"
  fi

  touch -t 199001010101 "${spool_file}"
  wake_sched_up ${pid}
  local timeout=100
  while [[ ! -e ${test_file} ]]; do
    sleep 0.1
    if [[ $(( --timeout )) -eq 0 ]]; then
      fail "${test_file} never came back"
    fi
  done

  pass
}

main() {
  if [[ $# -ne 0 ]]; then
    echo "Usage: $0" >&2
    exit 1
  fi
  echo "Note: Messages like 'Terminated sleep' are normal"

  trap cleanup EXIT INT
  export SCHED=$(realpath "${0%_unittest}")
  # Default to the temp dir ($T) that portage has set up for us.
  # This is needed when doing out of tree builds.
  TMP_DIR=$(mktemp -d "${T:-${SCHED%/*}}/${SCHED##*/}.XXXXXX")

  # Try to use dash if it's available as that's what we'll be using
  # on the actual device at runtime.
  export SCHED_SHELL=$(which dash 2>/dev/null || /bin/sh)

  local ret pids=()
  test1 &
  pids+=( $! )

  ret=0
  for p in "${pids[@]}"; do
    wait ${p}
    : $(( ret |= $? ))
  done
  exit ${ret}
}

main "$@"
