diff --git a/tests/virsh-optparse b/tests/virsh-optparse index 10fdf7727e..e9dccdd027 100755 --- a/tests/virsh-optparse +++ b/tests/virsh-optparse @@ -32,111 +32,6 @@ fail=0 test_url=test:///default -# Test a required argv -cat <<\EOF > exp-err || framework_failure -error: this function is not supported by the connection driver: virDomainQemuMonitorCommand -EOF -$VIRSH -q -c $test_url qemu-monitor-command test a >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -### Test a regular numeric option - -# Non-numeric value -cat <<\EOF > exp-err || framework_failure -error: Numeric value 'abc' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url cpu-stats test --start abc >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value with invalid suffix -cat <<\EOF > exp-err || framework_failure -error: Numeric value '42WB' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url cpu-stats test --start 42WB >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value with valid suffix. Suffixes are not supported for -# regular numeric options, so this value is rejected -cat <<\EOF > exp-err || framework_failure -error: Numeric value '42MB' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url cpu-stats test --start 42MB >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value bigger than INT_MAX -cat <<\EOF > exp-err || framework_failure -error: Numeric value '2147483648' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url cpu-stats test --start 2147483648 >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Negative numeric value. The value is not valid for the command -# we're testing, but it has been parsed correctly -cat <<\EOF > exp-err || framework_failure -error: Invalid value for start CPU -EOF -$VIRSH -q -c $test_url cpu-stats test --start -1 >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -### Test a scaled numeric option - -# Non-numeric value -cat <<\EOF > exp-err || framework_failure -error: Scaled numeric value 'abc' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url setmaxmem test abc >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value with invalid suffix -cat <<\EOF > exp-err || framework_failure -error: Scaled numeric value '42WB' for option is malformed or out of range -error: invalid argument: unknown suffix 'WB' -EOF -$VIRSH -q -c $test_url setmaxmem test 42WB >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value with valid suffix -$VIRSH -q -c $test_url setmaxmem test 42MB --config >out 2>err || fail=1 -test -s out && fail=1 -test -s err && fail=1 - -# Numeric value bigger than INT_MAX. No failure here because -# scaled numeric values are unsigned long long -$VIRSH -q -c $test_url setmaxmem test 2147483648 --config >out 2>err || fail=1 -test -s out && fail=1 -test -s err && fail=1 - -# Negative numeric value -cat <<\EOF > exp-err || framework_failure -error: Scaled numeric value '-1' for option is malformed or out of range -EOF -$VIRSH -q -c $test_url setmaxmem test -1 >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Zero. The value is not valid for the command we're testing, but -# it has been parsed correctly -cat <<\EOF > exp-err || framework_failure -error: Unable to change MaxMemorySize -error: memory in virDomainSetMemoryFlags must not be zero -EOF -$VIRSH -q -c $test_url setmaxmem test 0 >out 2>err && fail=1 -test -s out && fail=1 -compare exp-err err || fail=1 - -# Numeric value -$VIRSH -q -c $test_url setmaxmem test 42 --config >out 2>err || fail=1 -test -s out && fail=1 -test -s err && fail=1 - ### Test the option (numeric option converted to ms) # Non-numeric value diff --git a/tests/virshtest.c b/tests/virshtest.c index 453b1d7a9e..08c43205bb 100644 --- a/tests/virshtest.c +++ b/tests/virshtest.c @@ -201,6 +201,7 @@ mymain(void) /* comprehensive coverage of argument assignment */ DO_TEST_SCRIPT("argument-assignment", NULL, VIRSH_DEFAULT, "-k0", "-d0"); DO_TEST_SCRIPT("snapshot-create-args", NULL, VIRSH_DEFAULT, "-q"); + DO_TEST_SCRIPT("numeric-parsing", NULL, VIRSH_DEFAULT); VIR_FREE(custom_uri); return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/virshtestdata/numeric-parsing.in b/tests/virshtestdata/numeric-parsing.in new file mode 100644 index 0000000000..d099236af5 --- /dev/null +++ b/tests/virshtestdata/numeric-parsing.in @@ -0,0 +1,43 @@ +echo Test a regular numeric option + +echo Non-numeric value +cpu-stats test --start abc + +echo Numeric value with invalid suffix +cpu-stats test --start 42WB + +echo Numeric value with valid suffix. Suffixes are not supported for +echo regular numeric options, so this value is rejected +cpu-stats test --start 42MB + +echo Numeric value bigger than INT_MAX +cpu-stats test --start 2147483648 + +echo Negative numeric value. The value is not valid for the command +echo we are testing, but it has been parsed correctly +cpu-stats test --start -1 + +echo Test a scaled numeric option + +echo Non-numeric value +setmaxmem test abc + +echo Numeric value with invalid suffix +setmaxmem test 42WB + +echo Numeric value with valid suffix +setmaxmem test 42MB --config + +echo Numeric value bigger than INT_MAX. No failure here because +echo scaled numeric values are unsigned long long +setmaxmem test 2147483648 --config + +echo Negative numeric value +setmaxmem test -1 + +echo Zero. The value is not valid for the command were testing, but +echo it has been parsed correctly +setmaxmem test 0 + +echo Numeric value +setmaxmem test 42 --config diff --git a/tests/virshtestdata/numeric-parsing.out b/tests/virshtestdata/numeric-parsing.out new file mode 100644 index 0000000000..2ffbab666d --- /dev/null +++ b/tests/virshtestdata/numeric-parsing.out @@ -0,0 +1,41 @@ +Test a regular numeric option +Non-numeric value +error: Numeric value 'abc' for option is malformed or out of range + +Numeric value with invalid suffix +error: Numeric value '42WB' for option is malformed or out of range + +Numeric value with valid suffix. Suffixes are not supported for +regular numeric options, so this value is rejected +error: Numeric value '42MB' for option is malformed or out of range + +Numeric value bigger than INT_MAX +error: Numeric value '2147483648' for option is malformed or out of range + +Negative numeric value. The value is not valid for the command +we are testing, but it has been parsed correctly +error: Invalid value for start CPU + +Test a scaled numeric option +Non-numeric value +error: Scaled numeric value 'abc' for option is malformed or out of range + +Numeric value with invalid suffix +error: Scaled numeric value '42WB' for option is malformed or out of range +error: invalid argument: unknown suffix 'WB' + +Numeric value with valid suffix + +Numeric value bigger than INT_MAX. No failure here because +scaled numeric values are unsigned long long + +Negative numeric value +error: Scaled numeric value '-1' for option is malformed or out of range + +Zero. The value is not valid for the command were testing, but +it has been parsed correctly +error: Unable to change MaxMemorySize +error: memory in virDomainSetMemoryFlags must not be zero + +Numeric value +