~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/lxc/lxd/test/suites/fdleak.sh

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
 
 
3
test_fdleak() {
 
4
  LXD_FDLEAK_DIR=$(mktemp -d -p "${TEST_DIR}" XXX)
 
5
  chmod +x "${LXD_FDLEAK_DIR}"
 
6
  spawn_lxd "${LXD_FDLEAK_DIR}"
 
7
  pid=$(cat "${LXD_FDLEAK_DIR}/lxd.pid")
 
8
 
 
9
  beforefds=$(/bin/ls "/proc/${pid}/fd" | wc -l)
 
10
  (
 
11
    set -e
 
12
    # shellcheck disable=SC2034
 
13
    LXD_DIR=${LXD_FDLEAK_DIR}
 
14
 
 
15
    ensure_import_testimage
 
16
 
 
17
    for i in $(seq 5); do
 
18
      lxc init "testimage leaktest${i}"
 
19
      lxc info "leaktest${i}"
 
20
      lxc start "leaktest${i}"
 
21
      lxc exec "leaktest${i}" -- ps -ef
 
22
      lxc stop "leaktest${i}" --force
 
23
      lxc delete "leaktest${i}"
 
24
    done
 
25
 
 
26
    sleep 5
 
27
 
 
28
    exit 0
 
29
  )
 
30
  afterfds=$(/bin/ls "/proc/${pid}/fd" | wc -l)
 
31
  leakedfds=$((afterfds - beforefds))
 
32
 
 
33
  bad=0
 
34
  # shellcheck disable=SC2015
 
35
  [ ${leakedfds} -gt 5 ] && bad=1 || true
 
36
  if [ ${bad} -eq 1 ]; then
 
37
    echo "${leakedfds} FDS leaked"
 
38
    ls "/proc/${pid}/fd" -al
 
39
    netstat -anp 2>&1 | grep "${pid}/"
 
40
    false
 
41
  fi
 
42
 
 
43
  kill_lxd "${LXD_FDLEAK_DIR}"
 
44
}