#!/bin/bash
create_symlink_repo() {
  echo ""
  echo "*** CREATE a fresh repository named $CVMFS_TEST_REPO with user $CVMFS_TEST_USER"
  create_empty_repo $CVMFS_TEST_REPO $CVMFS_TEST_USER || return $?

  local short_name="$1"
  local long_name="$2"
  local symlink_name="$3"  

  start_transaction $CVMFS_TEST_REPO || return $?

  touch /cvmfs/$CVMFS_TEST_REPO/${short_name}
  touch /cvmfs/$CVMFS_TEST_REPO/${long_name}
  mkdir /cvmfs/$CVMFS_TEST_REPO/testdir_mountpoint

  ln -s ${short_name} /cvmfs/$CVMFS_TEST_REPO/${symlink_name}

  publish_repo $CVMFS_TEST_REPO || return 200
  echo "*** FINISHED creating a fresh repository named $CVMFS_TEST_REPO with user $CVMFS_TEST_USER"
  echo ""
}

add_some_tmp_file_to_repo() {
  echo "Adding some random file to the repo $CVMFS_TEST_REPO"
  start_transaction $CVMFS_TEST_REPO || return $?
  local tmpfile="$(mktemp /cvmfs/$CVMFS_TEST_REPO/tmpfile.XXXXX)"
  publish_repo $CVMFS_TEST_REPO || return 200
}

private_mount() {
  local mntpnt="$1"
  local fuse_version="$2"
  local config_file_path="$3"
  TEST702_PRIVATE_MOUNT="$mntpnt"

  local mount_options="rw,system_mount,fsname=cvmfs2,libfuse=$fuse_version"

  do_local_mount_as_root "$mntpnt" \
                 "$CVMFS_TEST_REPO" \
                 "$(get_repo_url $CVMFS_TEST_REPO)" \
                 "" \
                 "CVMFS_CACHE_SYMLINKS=1
CVMFS_SYSLOG_LEVEL=2" \
                 "$mount_options" || return 1
}

private_unmount() {
  sudo umount $TEST702_PRIVATE_MOUNT
  TEST702_PRIVATE_MOUNT=
}

cleanup() {
  echo "running cleanup()..."
  if [ "x$TEST702_PIDS" != "x" ]; then
    sudo kill -9 $TEST702_PIDS
  fi
  if [ "x$TEST702_PRIVATE_MOUNT" != "x" ]; then
    private_unmount
  fi
}
