summaryrefslogtreecommitdiffstats
path: root/src/test/cli/ceph-conf
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/cli/ceph-conf')
-rw-r--r--src/test/cli/ceph-conf/env-vs-args.t14
-rw-r--r--src/test/cli/ceph-conf/help.t40
-rw-r--r--src/test/cli/ceph-conf/invalid-args.t17
-rw-r--r--src/test/cli/ceph-conf/manpage.t33
-rw-r--r--src/test/cli/ceph-conf/option.t67
-rw-r--r--src/test/cli/ceph-conf/sections.t18
-rw-r--r--src/test/cli/ceph-conf/show-config-value.t20
-rw-r--r--src/test/cli/ceph-conf/show-config.t6
-rw-r--r--src/test/cli/ceph-conf/simple.t4
9 files changed, 219 insertions, 0 deletions
diff --git a/src/test/cli/ceph-conf/env-vs-args.t b/src/test/cli/ceph-conf/env-vs-args.t
new file mode 100644
index 00000000..b4cf858f
--- /dev/null
+++ b/src/test/cli/ceph-conf/env-vs-args.t
@@ -0,0 +1,14 @@
+# we can use CEPH_CONF to override the normal configuration file location.
+ $ env CEPH_CONF=from-env ceph-conf -s foo bar
+ did not load config file, using default settings.
+ .* \-1 Errors while parsing config file! (re)
+ .* \-1 parse_file: cannot open from-env: \(2\) No such file or directory (re)
+ .* \-1 Errors while parsing config file! (re)
+ .* \-1 parse_file: cannot open from-env: \(2\) No such file or directory (re)
+ [1]
+
+# command-line arguments should override environment
+ $ env -u CEPH_CONF ceph-conf -c from-args
+ global_init: unable to open config file from search list from-args
+ [1]
+
diff --git a/src/test/cli/ceph-conf/help.t b/src/test/cli/ceph-conf/help.t
new file mode 100644
index 00000000..d96c4a8e
--- /dev/null
+++ b/src/test/cli/ceph-conf/help.t
@@ -0,0 +1,40 @@
+ $ ceph-conf --help
+ Ceph configuration query tool
+
+ USAGE
+ ceph-conf <flags> <action>
+
+ ACTIONS
+ -L|--list-all-sections List all sections
+ -l|--list-sections <prefix> List sections with the given prefix
+ --filter-key <key> Filter section list to only include sections
+ with given key defined.
+ --filter-key-value <key>=<val> Filter section list to only include sections
+ with given key/value pair.
+ --lookup <key> Print a configuration setting to stdout.
+ Returns 0 (success) if the configuration setting is
+ found; 1 otherwise.
+ -r|--resolve-search search for the first file that exists and
+ can be opened in the resulted comma
+ delimited search list.
+ -D|--dump-all dump all variables.
+
+ FLAGS
+ --name name Set type.id
+ [-s <section>] Add to list of sections to search
+ [--format plain|json|json-pretty]
+ dump variables in plain text, json or pretty
+ json
+
+ If there is no action given, the action will default to --lookup.
+
+ EXAMPLES
+ [$] ceph-conf --name mon.0 -c /etc/ceph/ceph.conf 'mon addr' (re)
+ Find out what the value of 'mon addr' is for monitor 0.
+
+ [$] ceph-conf -l mon (re)
+ List sections beginning with 'mon'.
+
+ RETURN CODE
+ Return code will be 0 on success; error code otherwise.
+
diff --git a/src/test/cli/ceph-conf/invalid-args.t b/src/test/cli/ceph-conf/invalid-args.t
new file mode 100644
index 00000000..43cedf2d
--- /dev/null
+++ b/src/test/cli/ceph-conf/invalid-args.t
@@ -0,0 +1,17 @@
+ $ cat >test.conf <<EOF
+ > [bar]
+ > bar = green
+ > EOF
+
+# TODO output an error
+ $ ceph-conf -c test.conf broken
+ [1]
+
+ $ ceph-conf -c test.conf --name total.garbage
+ error parsing 'total.garbage': expected string of the form TYPE.ID, valid types are: auth, mon, osd, mds, mgr, client
+ [1]
+
+ $ ceph-conf -c test.conf -s bar
+ You must give an action, such as --lookup or --list-all-sections.
+ Pass --help for more help.
+ [1]
diff --git a/src/test/cli/ceph-conf/manpage.t b/src/test/cli/ceph-conf/manpage.t
new file mode 100644
index 00000000..425f2718
--- /dev/null
+++ b/src/test/cli/ceph-conf/manpage.t
@@ -0,0 +1,33 @@
+# setup
+ $ cat >foo.conf <<'EOF'
+ > ; ---------------------
+ > [group cephnet]
+ > addr = 10.3.14.0/24
+ >
+ > [global]
+ > pid file = /home/sage/ceph/src/out/$name.pid
+ >
+ > [osd]
+ > osd data = /mnt/osd$id
+ > [osd.3]
+ > host = cosd3
+ > EOF
+
+To extract the value of the "osd data" option for the osd0 daemon,
+
+ $ ceph-conf -c foo.conf "osd data" --name osd.0
+ /mnt/osd0
+
+This is equivalent to doing specifying sections [osd0], [osd.0],
+[osd], or [global], in that order of preference:
+
+# TODO the "admin" here seems like an actual bug
+
+ $ ceph-conf -c foo.conf "osd data" -s osd0 -s osd.0 -s osd -s global
+ /mnt/osdadmin
+
+To list all sections that begin with osd:
+
+ $ ceph-conf -c foo.conf -l osd
+ osd
+ osd.3
diff --git a/src/test/cli/ceph-conf/option.t b/src/test/cli/ceph-conf/option.t
new file mode 100644
index 00000000..a8b5b6e3
--- /dev/null
+++ b/src/test/cli/ceph-conf/option.t
@@ -0,0 +1,67 @@
+ $ cat >test.conf <<EOF
+ > [bar]
+ > bar = green
+ > [foo]
+ > bar = blue
+ > [baz]
+ > bar = yellow
+ > [thud]
+ > bar = red
+ > [nobar]
+ > other = 42
+ > EOF
+
+ $ ceph-conf -c test.conf bar -s foo
+ blue
+
+# test the funny "equals sign" argument passing convention
+ $ ceph-conf --conf=test.conf bar -s foo
+ blue
+
+ $ ceph-conf --conf=test.conf -L
+ bar
+ baz
+ foo
+ global
+ nobar
+ thud
+
+ $ ceph-conf --conf=test.conf --list-all-sections
+ bar
+ baz
+ foo
+ global
+ nobar
+ thud
+
+ $ ceph-conf --conf=test.conf --list_all_sections
+ bar
+ baz
+ foo
+ global
+ nobar
+ thud
+
+# TODO man page stops in the middle of a sentence
+
+ $ ceph-conf -c test.conf bar -s xyzzy
+ [1]
+
+ $ ceph-conf -c test.conf bar -s xyzzy
+ [1]
+
+ $ ceph-conf -c test.conf bar -s xyzzy -s thud
+ red
+
+ $ ceph-conf -c test.conf bar -s nobar -s thud
+ red
+
+ $ ceph-conf -c test.conf bar -s thud -s baz
+ red
+
+ $ ceph-conf -c test.conf bar -s baz -s thud
+ yellow
+
+ $ ceph-conf -c test.conf bar -s xyzzy -s nobar -s thud -s baz
+ red
+
diff --git a/src/test/cli/ceph-conf/sections.t b/src/test/cli/ceph-conf/sections.t
new file mode 100644
index 00000000..63063cc9
--- /dev/null
+++ b/src/test/cli/ceph-conf/sections.t
@@ -0,0 +1,18 @@
+ $ cat >test.conf <<EOF
+ > [bar]
+ > bar = green
+ > [foo]
+ > bar = blue
+ > [baz]
+ > bar = yellow
+ > [thud]
+ > bar = yellow
+ > EOF
+
+ $ ceph-conf -c test.conf -l bar
+ bar
+
+ $ ceph-conf -c test.conf -l b
+ bar
+ baz
+
diff --git a/src/test/cli/ceph-conf/show-config-value.t b/src/test/cli/ceph-conf/show-config-value.t
new file mode 100644
index 00000000..5750de8e
--- /dev/null
+++ b/src/test/cli/ceph-conf/show-config-value.t
@@ -0,0 +1,20 @@
+
+# should reflect daemon defaults
+
+ $ ceph-conf -n osd.0 --show-config-value log_file -c /dev/null
+ /var/log/ceph/ceph-osd.0.log
+ $ CEPH_ARGS="--fsid 96a3abe6-7552-4635-a79b-f3c096ff8b95" ceph-conf -n osd.0 --show-config-value fsid -c /dev/null
+ 96a3abe6-7552-4635-a79b-f3c096ff8b95
+ $ ceph-conf -n osd.0 --show-config-value INVALID -c /dev/null
+ failed to get config option 'INVALID': option not found
+ [1]
+ $ echo '[global]' > $TESTDIR/ceph.conf
+ $ echo 'mon_host=$public_network' >> $TESTDIR/ceph.conf
+ $ echo 'public_network=$mon_host' >> $TESTDIR/ceph.conf
+ $ ceph-conf --show-config-value mon_host -c $TESTDIR/ceph.conf
+ variable expansion loop at mon_host=$public_network
+ expansion stack:
+ public_network=$mon_host
+ mon_host=$public_network
+ $mon_host
+ $ rm $TESTDIR/ceph.conf
diff --git a/src/test/cli/ceph-conf/show-config.t b/src/test/cli/ceph-conf/show-config.t
new file mode 100644
index 00000000..cfd72399
--- /dev/null
+++ b/src/test/cli/ceph-conf/show-config.t
@@ -0,0 +1,6 @@
+ $ ceph-conf -n osd.0 --show-config -c /dev/null | grep ceph-osd
+ admin_socket = /var/run/ceph/ceph-osd.0.asok
+ log_file = /var/log/ceph/ceph-osd.0.log
+ mon_debug_dump_location = /var/log/ceph/ceph-osd.0.tdump
+ $ CEPH_ARGS="--fsid 96a3abe6-7552-4635-a79b-f3c096ff8b95" ceph-conf -n osd.0 --show-config -c /dev/null | grep fsid
+ fsid = 96a3abe6-7552-4635-a79b-f3c096ff8b95
diff --git a/src/test/cli/ceph-conf/simple.t b/src/test/cli/ceph-conf/simple.t
new file mode 100644
index 00000000..043ca203
--- /dev/null
+++ b/src/test/cli/ceph-conf/simple.t
@@ -0,0 +1,4 @@
+ $ ceph-conf
+ You must give an action, such as --lookup or --list-all-sections.
+ Pass --help for more help.
+ [1]