summaryrefslogtreecommitdiffstats
path: root/debian/tests/util
blob: 4278ee7ab5c1ff50713481f05275f7083f738b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh

# $1: share name
# $2: comma separated list of vfs_objects to use, if any
add_share() {
    local share="$1"
    local vfs="$2"
    if ! testparm -s 2>&1 | grep -E "^\[${share}\]"; then
        echo "Adding [${share}] share"
        cat >> /etc/samba/smb.conf <<EOFEOF
[${share}]
  read only = no
  guest ok = no
  path = /${share}
EOFEOF
        if [ -n "${vfs}" ]; then
            echo "vfs objects = ${vfs}" >> /etc/samba/smb.conf
        fi
        systemctl restart smbd.service
    else
        echo "Share [${share}] already exists, continuing"
    fi
}

# $1: username
# $2: password
add_user() {
    local username="$1"
    local password="$2"

    echo "Creating a local and samba user called ${username}"
    useradd -m "${username}"
    echo "Setting samba password for the ${username} user"
    printf '%s\n%s\n' "${password}" "${password}" | smbpasswd -s -a ${username}
}

# $1: share name
populate_share() {
    local sharename="$1"
    local usergroup="$2"
    local sharepath="/${sharename}"

    mkdir -p "${sharepath}"
    dd if=/dev/urandom bs=4096 count=1000 2>/dev/null | base64 > "${sharepath}/data"
    cd "${sharepath}"
    md5sum data > data.md5
    chown -R "${usergroup}:${usergroup}" "${sharepath}"
}

ensure_uring_available() {

    # uring is supported starting with kernel 5.1.x
    local kver=$(uname -r)
    case "$kver" in
      ( [0-4].* | 5.0.* ) # everything before 5.1
        echo "uring not available in kernel version ${kver%%-*}, skipping test"
        exit 77
        ;;
    esac

    # ubuntu does not build liburing on i386,
    # so io_uring vfs object is unavailable too
    : ${DEB_HOST_MULTIARCH:=$(dpkg-architecture -qDEB_BUILD_MULTIARCH)}
    if [ ! -f /usr/lib/$DEB_HOST_MULTIARCH/samba/vfs/io_uring.so ]; then
        echo "io_uring vfs object is not available on this architecture, skipping test"
        exit 77
    fi
}