diff mbox

[v1,1/4] qemu-iotests: refine common.config

Message ID 1446189186-23104-1-git-send-email-tubo@linux.vnet.ibm.com
State New
Headers show

Commit Message

Bo Tu Oct. 30, 2015, 7:13 a.m. UTC
Be easier to read, and be slightly shorter.

Suggested-By: Sascha Silbe <silbe@linux.vnet.ibm.com>
Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
Signed-off-by: Bo Tu <tubo@linux.vnet.ibm.com>
---
 tests/qemu-iotests/common.config | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

Comments

Eric Blake Oct. 30, 2015, 5:36 p.m. UTC | #1
On 10/30/2015 01:13 AM, Bo Tu wrote:
> Be easier to read, and be slightly shorter.

You mentioned a very short "what" in the subject line (good), but the
"why" in the commit body ("easier to read, shorter") is rather terse and
subjective.  It would be nicer to go into details (change the definition
of default_alias_machine) or give a sample of what changes (use grep
instead of awk).

[meta-comment]

When sending a series, please include a 0/4 cover letter.  You may want
to do:
git config format.coverLetter auto
to make it automatic when using git format-patch/send-email.

> 
> Suggested-By: Sascha Silbe <silbe@linux.vnet.ibm.com>
> Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
> Signed-off-by: Bo Tu <tubo@linux.vnet.ibm.com>
> ---
>  tests/qemu-iotests/common.config | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
> index 596bb2b..0a165e8 100644
> --- a/tests/qemu-iotests/common.config
> +++ b/tests/qemu-iotests/common.config
> @@ -129,10 +129,9 @@ export QEMU_IO=_qemu_io_wrapper
>  export QEMU_NBD=_qemu_nbd_wrapper
>  
>  default_machine=$($QEMU -machine \? | awk '/(default)/{print $1}')
> -default_alias_machine=$($QEMU -machine \? |\
> -    awk -v var_default_machine="$default_machine"\)\
> -    '{if ($(NF-2)=="(alias"&&$(NF-1)=="of"&&$(NF)==var_default_machine){print $1}}')
> -if [ ! -z "$default_alias_machine" ]; then
> +default_alias_machine=$($QEMU -machine \? \

As long as we are touching this, we ought to switch to using '-machine
help' rather than the deprecated '-machine \?'.

> +    | grep -F "(alias of ${default_machine})" |cut -d ' ' -f 1 |head -n 1)

Why are you moving the | across lines?

If we are rewriting to avoid awk, why not do it with a single sed
process, rather than a grep|cut|head pipeline?  For that matter, why not
rewrite default_machine to also avoid awk?

default_machine=$($QEMU -machine help | sed -n '/(default)/ s/ .*//p')
default_alias_machine=$($QEMU -machine help | \
  sed -n "/(alias of $default_machine)"' { s/ .*//p; q; }')

(which happens to work even if $default_machine contains '.', but might
get a bit dicey if the machine names could ever contain ?, [, *, or
other regex metacharacters)

> +if [ -n "$default_alias_machine" ]; then

Could shorten this to:

if [[ $default_alias_machine ]]; then

since we are already using bash.
Bo Tu Nov. 3, 2015, 6:42 a.m. UTC | #2
Hi Eric:

thanks for your review.

On 10/31/2015 01:36 AM, Eric Blake wrote:
> On 10/30/2015 01:13 AM, Bo Tu wrote:
>> Be easier to read, and be slightly shorter.
> You mentioned a very short "what" in the subject line (good), but the
> "why" in the commit body ("easier to read, shorter") is rather terse and
> subjective.  It would be nicer to go into details (change the definition
> of default_alias_machine) or give a sample of what changes (use grep
> instead of awk).

I agree with you. Adding more details as below,
Replacing sed with awk, then it's easier to read.
Replacing "[ ! -z "$default_alias_machine" ]" with "[[ $default_alias_machine ]]",
then it's slightly shorter.

>
> [meta-comment]
>
> When sending a series, please include a 0/4 cover letter.  You may want
> to do:
> git config format.coverLetter auto
> to make it automatic when using git format-patch/send-email.

My understanding is that cover letter is needed if the patch set is a little bit complicated.
Cover letter is not needed if patch set just has minor change and comment is already in the
git message for every patch.
If my understanding above is wrong, please correct me. I just hope to be more clear about process :-)

>> Suggested-By: Sascha Silbe <silbe@linux.vnet.ibm.com>
>> Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
>> Signed-off-by: Bo Tu <tubo@linux.vnet.ibm.com>
>> ---
>>   tests/qemu-iotests/common.config | 7 +++----
>>   1 file changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
>> index 596bb2b..0a165e8 100644
>> --- a/tests/qemu-iotests/common.config
>> +++ b/tests/qemu-iotests/common.config
>> @@ -129,10 +129,9 @@ export QEMU_IO=_qemu_io_wrapper
>>   export QEMU_NBD=_qemu_nbd_wrapper
>>   
>>   default_machine=$($QEMU -machine \? | awk '/(default)/{print $1}')
>> -default_alias_machine=$($QEMU -machine \? |\
>> -    awk -v var_default_machine="$default_machine"\)\
>> -    '{if ($(NF-2)=="(alias"&&$(NF-1)=="of"&&$(NF)==var_default_machine){print $1}}')
>> -if [ ! -z "$default_alias_machine" ]; then
>> +default_alias_machine=$($QEMU -machine \? \
> As long as we are touching this, we ought to switch to using '-machine
> help' rather than the deprecated '-machine \?'.

thanks to point this.

>
>> +    | grep -F "(alias of ${default_machine})" |cut -d ' ' -f 1 |head -n 1)
> Why are you moving the | across lines?

thanks to point this

>
> If we are rewriting to avoid awk, why not do it with a single sed
> process, rather than a grep|cut|head pipeline?  For that matter, why not
> rewrite default_machine to also avoid awk?

The goal is not to avoid awk. The line of default_machine is easy to read, but the
line of default_alias_machine as below is not easy to read, that's why Sascha
suggest me to change it for the line of default_alias_machine.

/-default_alias_machine=$($QEMU -machine \? |\ -    awk -v 
var_default_machine="$default_machine"\)\ -    '{if 
($(NF-2)=="(alias"&&$(NF-1)=="of"&&$(NF)==var_default_machine){print $1}}')/

>
> default_machine=$($QEMU -machine help | sed -n '/(default)/ s/ .*//p')
> default_alias_machine=$($QEMU -machine help | \
>    sed -n "/(alias of $default_machine)"' { s/ .*//p; q; }')
>
> (which happens to work even if $default_machine contains '.', but might
> get a bit dicey if the machine names could ever contain ?, [, *, or
> other regex metacharacters)

I like the single sed process. However, I got error message as below after running it,
/sed: -e expression #1, char 38: unknown command: `.' /I guess you missed a '/' which is marked as red as below, So I change it as below,
/default_machine=$($QEMU -machine help | sed -n '/(default)/ s/ .*//p') 
default_alias_machine=$($QEMU -machine help | \ sed -n "/(alias of 
$default_machine)"/' { s/ .*//p; q; }') /

>
>> +if [ -n "$default_alias_machine" ]; then
> Could shorten this to:
>
> if [[ $default_alias_machine ]]; then

thanks to point this.

>
> since we are already using bash.
>
Eric Blake Nov. 3, 2015, 2:59 p.m. UTC | #3
On 11/02/2015 11:42 PM, tu bo wrote:

> I agree with you. Adding more details as below,
> Replacing sed with awk, then it's easier to read.

Subjective opinion, but yes, I tend to agree that awk can be a pain to
learn when another tool can do the same job.

> Replacing "[ ! -z "$default_alias_machine" ]" with "[[
> $default_alias_machine ]]",
> then it's slightly shorter.
> 
>>
>> [meta-comment]
>>
>> When sending a series, please include a 0/4 cover letter.  You may want
>> to do:
>> git config format.coverLetter auto
>> to make it automatic when using git format-patch/send-email.
> 
> My understanding is that cover letter is needed if the patch set is a
> little bit complicated.
> Cover letter is not needed if patch set just has minor change and
> comment is already in the
> git message for every patch.
> If my understanding above is wrong, please correct me. I just hope to be
> more clear about process :-)

No, the rule is: if there is more than one patch, you need a cover
letter, regardless of how complicated or simple the patches are. If
there is only one patch, you don't need a cover letter, but it also
doesn't hurt if you have one.

When documenting the changes between patch versions, you can either do
it all in the cover letter, or on a patch-by-patch basis.  Or both.

> The goal is not to avoid awk. The line of default_machine is easy to
> read, but the
> line of default_alias_machine as below is not easy to read, that's why
> Sascha
> suggest me to change it for the line of default_alias_machine.
> 
> /-default_alias_machine=$($QEMU -machine \? |\ -    awk -v
> var_default_machine="$default_machine"\)\ -    '{if
> ($(NF-2)=="(alias"&&$(NF-1)=="of"&&$(NF)==var_default_machine){print
> $1}}')/
> 

Your mailer botched the quoting here.

>>
>> default_machine=$($QEMU -machine help | sed -n '/(default)/ s/ .*//p')
>> default_alias_machine=$($QEMU -machine help | \
>>    sed -n "/(alias of $default_machine)"' { s/ .*//p; q; }')
>>
>> (which happens to work even if $default_machine contains '.', but might
>> get a bit dicey if the machine names could ever contain ?, [, *, or
>> other regex metacharacters)
> 
> I like the single sed process. However, I got error message as below
> after running it,
> /sed: -e expression #1, char 38: unknown command: `.' /I guess you
> missed a '/' which is marked as red as below,

I intentionally don't read html mail, so I can't see anything marked
red.  But yes, I missed a close /; it should have been:

sed -n "/(alias of $default_machine)/"' { s/ .*//p; q; }'

for the sed command inside $()

> So I change it as below,
> /default_machine=$($QEMU -machine help | sed -n '/(default)/ s/ .*//p')
> default_alias_machine=$($QEMU -machine help | \ sed -n "/(alias of
> $default_machine)"/' { s/ .*//p; q; }') /

Again, quoting is botched, but it looks like you came up with the same fix.
diff mbox

Patch

diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
index 596bb2b..0a165e8 100644
--- a/tests/qemu-iotests/common.config
+++ b/tests/qemu-iotests/common.config
@@ -129,10 +129,9 @@  export QEMU_IO=_qemu_io_wrapper
 export QEMU_NBD=_qemu_nbd_wrapper
 
 default_machine=$($QEMU -machine \? | awk '/(default)/{print $1}')
-default_alias_machine=$($QEMU -machine \? |\
-    awk -v var_default_machine="$default_machine"\)\
-    '{if ($(NF-2)=="(alias"&&$(NF-1)=="of"&&$(NF)==var_default_machine){print $1}}')
-if [ ! -z "$default_alias_machine" ]; then
+default_alias_machine=$($QEMU -machine \? \
+    | grep -F "(alias of ${default_machine})" |cut -d ' ' -f 1 |head -n 1)
+if [ -n "$default_alias_machine" ]; then
     default_machine="$default_alias_machine"
 fi