|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
| 3 | +function help() { |
| 4 | + echo "USAGE: scripts/startStandAloneAgency.sh [options]" |
| 5 | + echo "" |
| 6 | + echo "OPTIONS:" |
| 7 | + echo " -a/--agency-size Agency size (odd integer default: 3))" |
| 8 | + echo " -p/--pool-size Pool size (>= agency size default: [agency size])" |
| 9 | + echo " -t/--transport Protocol (ssl|tcp default: tcp)" |
| 10 | + echo " -l/--log-level Log level (INFO|DEBUG|TRACE default: INFO)" |
| 11 | + echo "" |
| 12 | + echo "EXAMPLES:" |
| 13 | + echo " scripts/startStandaloneAgency.sh" |
| 14
+ echo " scripts/startStandaloneAgency.sh -a 5 -p 10 -t ssl" |
| 15 | + echo " scripts/startStandaloneAgency.sh --agency-size 3 --pool-size 5" |
| 16 | + |
| 17 | +} |
| 18 | + |
3 | 19 | NRAGENTS=3
|
4 | 20 | POOLSZ=""
|
5 | 21 | TRANSPORT="tcp"
|
6 | 22 | LOG_LEVEL="INFO"
|
7 | 23 |
|
8 |
| -while getopts ":a:p:t:l:" opt; do |
9 |
| - case $opt in |
10 |
| - a) NRAGENTS="$OPTARG" |
11 |
| - ;; |
12 |
| - p) POOLSZ="$OPTARG" |
13 |
| - ;; |
14 |
| - t) TRANSPORT="$OPTARG" |
15 |
| - ;; |
16 |
| - l) LOG_LEVEL="$OPTARG" |
17 |
| - ;; |
18 |
| - \?) echo "Invalid option -$OPTARG" >&2 |
19 |
| - ;; |
| 24 | +while [[ ${1} ]]; do |
| 25 | + case "${1}" in |
| 26 | + -a|--agency-size) |
| 27 | + NRAGENTS=${2} |
| 28 | + shift |
| 29 | + ;; |
| 30 | + -p|--pool-size) |
| 31 | + POOLSZ=${2} |
| 32 | + shift |
| 33 | + ;; |
| 34 | + -t|--transport) |
| 35 | + TRANSPORT=${2} |
| 36 | + shift |
| 37 | + ;; |
| 38 | + -l|--log-level) |
| 39 | + LOG_LEVEL=${2} |
| 40 | + shift |
| 41 | + ;; |
| 42 | + -h|--help) |
| 43 | + help |
| 44 | + exit 1 |
| 45 | + ;; |
| 46 | + *) |
| 47 | + echo "Unknown parameter: ${1}" >&2 |
| 48 | + help |
| 49 | + exit 1 |
| 50 | + ;; |
20 | 51 | esac
|
| 52 | + |
| 53 | + if ! shift; then |
| 54 | + echo 'Missing parameter argument.' >&2 |
| 55 | + return 1 |
| 56 | + fi |
21 | 57 | done
|
22 | 58 |
|
23 | 59 | if [ "$POOLSZ" == "" ] ; then
|
24 |
| - POOLSZ=$NRAGENTS |
| 60 | + POOLSZ=$NRAGENTS |
25 | 61 | fi
|
26 | 62 |
|
27 | 63 | if [ "$TRANSPORT" == "ssl" ]; then
|
28 |
| - SSLKEYFILE="--ssl.keyfile UnitTests/server.pem" |
| 64 | + SSLKEYFILE="--ssl.keyfile UnitTests/server.pem" |
| 65 | + CURL="curl --insecure -ks https://" |
29 | 66 | else
|
30 |
| - SSLKEYFILE="" |
| 67 | + SSLKEYFILE="" |
| 68 | + CURL="curl -s http://" |
31 | 69 | fi
|
32 | 70 |
|
33 |
| -printf "agency-size: %s\n" "$NRAGENTS" |
34 |
| -printf "pool-size: %s\n" "$POOLSZ" |
35 |
| -printf "transport: %s\n" "$TRANSPORT" |
36 |
| -printf "log-level: %s\n" "$LOG_LEVEL" |
| 71 | +printf "Starting agency ... \n" |
| 72 | +printf " agency-size: %s," "$NRAGENTS" |
| 73 | +printf " pool-size: %s," "$POOLSZ" |
| 74 | +printf " transport: %s," "$TRANSPORT" |
| 75 | +printf " log-level: %s\n" "$LOG_LEVEL" |
37 | 76 |
|
38 | 77 | if [ ! -d arangod ] || [ ! -d arangosh ] || [ ! -d UnitTests ] ; then
|
39 |
| - echo Must be started in the main ArangoDB source directory. |
40 |
| - exit 1 |
| 78 | + echo Must be started in the main ArangoDB source directory. |
| 79 | + exit 1 |
41 | 80 | fi
|
42 | 81 |
|
43 | 82 | if [[ $(( $NRAGENTS % 2 )) == 0 ]]; then
|
44 |
| - echo Number of agents must be odd. |
45 |
| - exit 1 |
| 83 | + echo Number of agents must be odd. |
| 84 | + exit 1 |
46 | 85 | fi
|
47 | 86 |
|
48 | 87 | MINP=0.5
|
49 | 88 | MAXP=2.0
|
50 | 89 | SFRE=2.5
|
51 | 90 | COMP=1000
|
52 |
| -BASE=5001 |
| 91 | +BASE=5000 |
53 | 92 |
|
54 | 93 | rm -rf agency
|
55 | 94 | mkdir -p agency
|
56 |
| -echo -n "Starting agency ... " |
| 95 | +PIDS="" |
57 | 96 | for aid in `seq 0 $(( $POOLSZ - 1 ))`; do
|
58 |
| - port=$(( $BASE + $aid )) |
59 |
| - build/bin/arangod \ |
60 |
| - -c none \ |
61 |
| - --agency.activate true \ |
62 |
| - --agency.election-timeout-min $MINP \ |
63 |
| - --agency.election-timeout-max $MAXP \ |
64 |
| - --agency.endpoint $TRANSPORT://localhost:$BASE \ |
65 |
| - --agency.my-address $TRANSPORT://localhost:$port \ |
66 |
| - --agency.compaction-step-size $COMP \ |
67 |
| - --agency.pool-size $POOLSZ \ |
68 |
| - --agency.size $NRAGENTS \ |
69 |
| - --agency.supervision true \ |
70 |
| - --agency.supervision-frequency $SFRE \ |
71 |
| - --agency.wait-for-sync false \ |
72 |
| - --database.directory agency/data$port \ |
73 |
| - --javascript.app-path ./js/apps \ |
74 |
| - --javascript.startup-directory ./js \ |
75 |
| - --javascript.v8-contexts 1 \ |
76 |
| - --log.file agency/$port.log \ |
77 |
| - --log.force-direct true \ |
78 |
| - --log.level agency=$LOG_LEVEL \ |
79 |
| - --server.authentication false \ |
80 |
| - --server.endpoint $TRANSPORT://localhost:$port \ |
81 |
| - --server.statistics false \ |
82 |
| - $SSLKEYFILE \ |
83 |
| - > agency/$port.stdout 2>&1 & |
| 97 | + port=$(( $BASE + $aid )) |
| 98 | + build/bin/arangod \ |
| 99 | + -c none \ |
| 100 | + --agency.activate true \ |
| 101 | + --agency.election-timeout-min $MINP \ |
| 102 | + --agency.election-timeout-max $MAXP \ |
| 103 | + --agency.endpoint $TRANSPORT://localhost:$BASE \ |
| 104 | + --agency.my-address $TRANSPORT://localhost:$port \ |
| 105 | + --agency.compaction-step-size $COMP \ |
| 106 | + --agency.pool-size $POOLSZ \ |
| 107 | + --agency.size $NRAGENTS \ |
| 108 | + --agency.supervision true \ |
| 109 | + --agency.supervision-frequency $SFRE \ |
| 110 | + --agency.wait-for-sync false \ |
| 111 | + --database.directory agency/data$port \ |
| 112 | + --javascript.app-path ./js/apps \ |
| 113 | + --javascript.startup-directory ./js \ |
| 114 | + --javascript.v8-contexts 1 \ |
| 115 | + --log.file agency/$port.log \ |
| 116 | + --log.force-direct true \ |
| 117 | + --log.level agency=$LOG_LEVEL \ |
| 118 | + --server.authentication false \ |
| 119 | + --server.endpoint $TRANSPORT://localhost:$port \ |
| 120 | + --server.statistics false \ |
| 121 | + $SSLKEYFILE \ |
| 122 | + > agency/$port.stdout 2>&1 & |
| 123 | + PIDS+=$! |
| 124 | + PIDS+=" " |
84 | 125 | done
|
85 | 126 |
|
86 |
| -echo "done." |
87 |
| -echo "Your agents are ready at port $BASE onward" |
| 127 | +echo " done. Your agents are ready at port $BASE onward." |
| 128 | +#echo "Process ids: $PIDS" |
| 129 | +echo "Try ${CURL}localhost:5000/_api/agency/config." |
88 | 130 |
|
89 | 131 |
|
0 commit comments