github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/harness/setup.sh (about)

     1  #!/bin/sh -e
     2  
     3  LINE="---------------"
     4  
     5  start() {
     6      if [ -d _harness ]; then
     7          echo "Daemon setup already in place, stop it first."
     8          exit 1
     9      fi
    10      mkdir -p _harness
    11      cd _harness
    12      cp -a ../harness/daemons .
    13      cp -a ../harness/certs .
    14      echo keyfile > certs/keyfile
    15      chmod 600 certs/keyfile
    16      if ! mongod --help | grep -q -- --ssl; then
    17          rm -rf daemons/db3
    18      fi
    19      COUNT=$(ls daemons | wc -l)
    20      echo "Running daemons..."
    21      svscan daemons &
    22      SVSCANPID=$!
    23      echo $SVSCANPID > svscan.pid
    24      if ! kill -0 $SVSCANPID; then
    25          echo "Cannot execute svscan."
    26          exit 1
    27      fi
    28      echo "Starting $COUNT processes..."
    29      for i in $(seq 30); do
    30          UP=$(svstat daemons/* | grep ' up ' | grep -v ' [0-3] seconds' | wc -l)
    31          echo "$UP processes up..."
    32          if [ x$COUNT = x$UP ]; then
    33              echo "Running setup.js with mongo..."
    34              mongo --nodb ../harness/mongojs/init.js
    35              exit 0
    36          fi
    37          sleep 1
    38      done
    39      echo "Failed to start processes. svstat _harness/daemons/* output:"
    40      echo $LINE
    41      svstat daemons/*
    42      echo $LINE
    43      for DAEMON in daemons/*; do
    44          if $(svstat $DAEMON | grep ' up ' | grep ' [0-3] seconds' > /dev/null); then
    45              echo "Logs for _harness/$DAEMON:"
    46              echo $LINE
    47              cat $DAEMON/log/log.txt
    48              echo $LINE
    49          fi
    50      done
    51      exit 1
    52  }
    53  
    54  stop() {
    55      if [ -d _harness ]; then
    56          cd _harness
    57          if [ -f svscan.pid ]; then
    58              kill -9 $(cat svscan.pid) 2> /dev/null || true
    59              svc -dx daemons/* daemons/*/log > /dev/null 2>&1 || true
    60              COUNT=$(ls daemons | wc -l)
    61              echo "Shutting down $COUNT processes..."
    62              while true; do
    63                  DOWN=$(svstat daemons/* | grep 'supervise not running' | wc -l)
    64                  echo "$DOWN processes down..."
    65                  if [ x$DOWN = x$COUNT ]; then
    66                      break
    67                  fi
    68                  sleep 1
    69              done
    70              rm svscan.pid
    71              echo "Done."
    72          fi
    73          cd ..
    74          rm -rf _harness
    75      fi
    76  }
    77  
    78  
    79  if [ ! -f suite_test.go ]; then
    80      echo "This script must be run from within the source directory."
    81      exit 1
    82  fi
    83  
    84  case "$1" in
    85  
    86      start)
    87          start $2
    88          ;;
    89  
    90      stop)
    91          stop $2
    92          ;;
    93  
    94  esac
    95  
    96  # vim:ts=4:sw=4:et