893e66360c
This defines a new local.conf file that is designed to take the place of all of the 'pass-through'[1] configuration options that have been defined in DevStack. * new local.conf file can contain multiple config file settings to be merged in to existing project config files * localrc can be embedded into local.conf and will auto-extract if localrc does not exist * Adds functions get_meta_section(), get_meta_section_files(), merge_config_file() and merge_config_group() * Adds EXTRA_OPTS, EXTRA_BAREMETAL_OPTS, Q_DHCP_EXTRA_DEFAULT_OPTS and Q_SRV_EXTRA_DEFAULT_OPTS to the deprecated warning list at the end of stack.sh [1] Pass-through options are those that do not configure or change DevStack's behaviour but simply set a value in a project config file. This includes most of the EXTRA_XXX_OPTS configuration variables. Change-Id: I367cadc86116621e9574ac203aafdab483d810d3
180 lines
3.9 KiB
Bash
Executable File
180 lines
3.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Tests for DevStack meta-config functions
|
|
|
|
TOP=$(cd $(dirname "$0")/.. && pwd)
|
|
|
|
# Import common functions
|
|
source $TOP/functions
|
|
|
|
# Import config functions
|
|
source $TOP/lib/config
|
|
|
|
# check_result() tests and reports the result values
|
|
# check_result "actual" "expected"
|
|
function check_result() {
|
|
local actual=$1
|
|
local expected=$2
|
|
if [[ "$actual" == "$expected" ]]; then
|
|
echo "OK"
|
|
else
|
|
echo -e "failed: $actual != $expected\n"
|
|
fi
|
|
}
|
|
|
|
TEST_1C_ADD="[eee]
|
|
type=new
|
|
multi = foo2"
|
|
|
|
function create_test1c() {
|
|
cat >test1c.conf <<EOF
|
|
[eee]
|
|
# original comment
|
|
type=original
|
|
EOF
|
|
}
|
|
|
|
function create_test2a() {
|
|
cat >test2a.conf <<EOF
|
|
[ddd]
|
|
# original comment
|
|
type=original
|
|
EOF
|
|
}
|
|
|
|
cat >test.conf <<EOF
|
|
[[test1|test1a.conf]]
|
|
[default]
|
|
# comment an option
|
|
#log_file=./log.conf
|
|
log_file=/etc/log.conf
|
|
handlers=do not disturb
|
|
|
|
[aaa]
|
|
# the commented option should not change
|
|
#handlers=cc,dd
|
|
handlers = aa, bb
|
|
|
|
[[test1|test1b.conf]]
|
|
[bbb]
|
|
handlers=ee,ff
|
|
|
|
[ ccc ]
|
|
spaces = yes
|
|
|
|
[[test2|test2a.conf]]
|
|
[ddd]
|
|
# new comment
|
|
type=new
|
|
additional=true
|
|
|
|
[[test1|test1c.conf]]
|
|
$TEST_1C_ADD
|
|
EOF
|
|
|
|
|
|
echo -n "get_meta_section_files: test0 doesn't exist: "
|
|
VAL=$(get_meta_section_files test.conf test0)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "get_meta_section_files: test1 3 files: "
|
|
VAL=$(get_meta_section_files test.conf test1)
|
|
EXPECT_VAL="test1a.conf
|
|
test1b.conf
|
|
test1c.conf"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "get_meta_section_files: test2 1 file: "
|
|
VAL=$(get_meta_section_files test.conf test2)
|
|
EXPECT_VAL="test2a.conf"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
|
|
# Get a section from a group that doesn't exist
|
|
echo -n "get_meta_section: test0 doesn't exist: "
|
|
VAL=$(get_meta_section test.conf test0 test0.conf)
|
|
check_result "$VAL" ""
|
|
|
|
# Get a single section from a group with multiple files
|
|
echo -n "get_meta_section: test1c single section: "
|
|
VAL=$(get_meta_section test.conf test1 test1c.conf)
|
|
check_result "$VAL" "$TEST_1C_ADD"
|
|
|
|
# Get a single section from a group with a single file
|
|
echo -n "get_meta_section: test2a single section: "
|
|
VAL=$(get_meta_section test.conf test2 test2a.conf)
|
|
EXPECT_VAL="[ddd]
|
|
# new comment
|
|
type=new
|
|
additional=true"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
# Get a single section that doesn't exist from a group
|
|
echo -n "get_meta_section: test2z.conf not in test2: "
|
|
VAL=$(get_meta_section test.conf test2 test2z.conf)
|
|
check_result "$VAL" ""
|
|
|
|
# Get a section from a conf file that doesn't exist
|
|
echo -n "get_meta_section: nofile doesn't exist: "
|
|
VAL=$(get_meta_section nofile.ini test1)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "get_meta_section: nofile doesn't exist: "
|
|
VAL=$(get_meta_section nofile.ini test0 test0.conf)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "merge_config_file test1c exists: "
|
|
create_test1c
|
|
merge_config_file test.conf test1 test1c.conf
|
|
VAL=$(cat test1c.conf)
|
|
# iniset adds values immediately under the section header
|
|
EXPECT_VAL="[eee]
|
|
multi = foo2
|
|
# original comment
|
|
type=new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_file test2a exists: "
|
|
create_test2a
|
|
merge_config_file test.conf test2 test2a.conf
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds values immediately under the section header
|
|
EXPECT_VAL="[ddd]
|
|
additional = true
|
|
# original comment
|
|
type=new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_file test2a not exist: "
|
|
rm test2a.conf
|
|
merge_config_file test.conf test2 test2a.conf
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds a blank line if it creates the file...
|
|
EXPECT_VAL="
|
|
[ddd]
|
|
additional = true
|
|
type = new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_group test2: "
|
|
rm test2a.conf
|
|
merge_config_group test.conf test2
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds a blank line if it creates the file...
|
|
EXPECT_VAL="
|
|
[ddd]
|
|
additional = true
|
|
type = new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_group test2 no conf file: "
|
|
rm test2a.conf
|
|
merge_config_group x-test.conf test2
|
|
if [[ ! -r test2a.conf ]]; then
|
|
echo "OK"
|
|
else
|
|
echo "failed: $VAL != $EXPECT_VAL"
|
|
fi
|
|
|
|
rm -f test.conf test1c.conf test2a.conf
|