aboutsummaryrefslogtreecommitdiffstats
path: root/test/servers.sh
blob: eb1b1df7397ccd27a39ddcd4599b47c93921ddc3 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh
# -*- coding: utf-8 -*-

basedir="$(realpath "$0" | xargs dirname)"

info()
{
    echo "--- $*"
}

error()
{
    echo "=== ERROR: $*" >&2
}

warning()
{
    echo "=== WARNING: $*" >&2
}

die()
{
    error "$*"
    exit 1
}

cleanup()
{
    [ -n "$pid_backd" ] && kill "$pid_backd" 2>/dev/null
    [ -n "$pid_postd" ] && kill "$pid_postd" 2>/dev/null
    [ -n "$pid_fsd" ] && kill "$pid_fsd" 2>/dev/null
    wait
}

cleanup_and_exit()
{
    cleanup
    exit 1
}

trap cleanup_and_exit INT TERM
trap cleanup EXIT

start_fsd()
{
    echo "Starting cms-fsd..."
    rm -f "$rundir/cms-fsd.sock"
    local binary="$target/cms-fsd"
    [ -x "$binary" ] || die "cms-fsd binary $binary not found."
    "$binary" \
        --rundir "$rundir" \
        --no-systemd \
        "$dbdir" \
        &
    pid_fsd=$!
}

start_postd()
{
    echo "Starting cms-postd..."
    rm -f "$rundir/cms-postd.sock"
    local binary="$target/cms-postd"
    [ -x "$binary" ] || die "cms-postd binary $binary not found."
    "$binary" \
        --rundir "$rundir" \
        --no-systemd \
        "$dbdir" \
        &
    pid_postd=$!
}

start_backd()
{
    if [ $python -eq 0 ]; then
        echo "Starting cms-backd..."
        rm -f "$rundir/cms-backd.sock"
        local binary="$target/cms-backd"
        [ -x "$binary" ] || die "cms-backd binary $binary not found."
        "$binary" \
            --rundir "$rundir" \
            --no-systemd \
            &
        pid_backd=$!
    else
        echo "Starting cmsbackpy..."
        export NOTIFY_SOCKET=
        rm -f "$rundir/cms-backd.sock"
        local pyscript="$basedir/../cmsbackpy/cms-backd"
        [ -r "$pyscript" ] || die "cms-backd script $pyscript not found."
        python3 "$pyscript" \
            --rundir "$rundir" \
            --pythonpath "$basedir/.." \
            --no-cython \
            &
        pid_backd=$!
    fi
}

python=1
release="debug"
while [ $# -ge 1 ]; do
    case "$1" in
        --no-python|-P)
            python=0
            ;;
        --release|-r)
            release="release"
            ;;
        *)
            die "Invalid option: $1"
            ;;
    esac
    shift
done

target="$basedir/../target/$release"
rundir="$basedir/run"
dbdir="$basedir/../example/db"
pid_fsd=
pid_postd=
pid_backd=
mkdir -p "$rundir"
start_fsd
start_postd
sleep 1
start_backd
wait

# vim: ts=4 sw=4 expandtab
bues.ch cgit interface