On 2 July 2012 23:40, Amit Kucheria <amit.kucheria@linaro.org> wrote:
On Mon, Jul 2, 2012 at 9:13 PM, Rajagopal Venkat
<rajagopal.venkat@linaro.org> wrote:
> add powertop test cases into pm-qa. Run the powertop sanity
> test to check if tool is available. If yes, then run
> powertop in report generation mode and validate the output.
>
> Signed-off-by: Rajagopal Venkat <rajagopal.venkat@linaro.org>
> ---
>  Makefile                     |    1 +
>  powertop/Makefile            |   25 ++++++++++++++++++
>  powertop/powertop_01.sh      |   58 ++++++++++++++++++++++++++++++++++++++++++
>  powertop/powertop_01.txt     |    1 +
>  powertop/powertop_sanity.sh  |   35 +++++++++++++++++++++++++
>  powertop/powertop_sanity.txt |    1 +
>  6 files changed, 121 insertions(+)
>  create mode 100644 powertop/Makefile
>  create mode 100755 powertop/powertop_01.sh
>  create mode 100644 powertop/powertop_01.txt
>  create mode 100755 powertop/powertop_sanity.sh
>  create mode 100644 powertop/powertop_sanity.txt
>
> diff --git a/Makefile b/Makefile
> index f85e5ac..1e73608 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -33,6 +33,7 @@ check:
>         @(cd sched_mc; $(MAKE) check)
>  #      @(cd suspend; $(MAKE) check)
>  #      @(cd thermal; $(MAKE) check)
> +#      @(cd powertop; $(MAKE) check)
>
>  uncheck:
>         @(cd cpufreq; $(MAKE) uncheck)
> diff --git a/powertop/Makefile b/powertop/Makefile
> new file mode 100644
> index 0000000..412edb5
> --- /dev/null
> +++ b/powertop/Makefile
> @@ -0,0 +1,25 @@
> +#
> +# PM-QA validation test suite for the power management on Linux
> +#
> +# Copyright (C) 2011, Linaro Limited.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License
> +# as published by the Free Software Foundation; either version 2
> +# of the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> +#
> +# Contributors:
> +#     Rajagopal Venkat <rajagopal.venkat@linaro.org>
> +#       - initial API and implementation
> +#
> +
> +include ../Test.mk
> diff --git a/powertop/powertop_01.sh b/powertop/powertop_01.sh
> new file mode 100755
> index 0000000..3427899
> --- /dev/null
> +++ b/powertop/powertop_01.sh
> @@ -0,0 +1,58 @@
> +#!/bin/bash
> +#
> +# PM-QA validation test suite for the power management on Linux
> +#
> +# Copyright (C) 2011, Linaro Limited.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License
> +# as published by the Free Software Foundation; either version 2
> +# of the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> +#
> +# Contributors:
> +#     Rajagopal Venkat <rajagopal.venkat@linaro.org>
> +#       - initial API and implementation
> +#
> +
> +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Doc/QA/Scripts#powertop_01
> +
> +source ../include/functions.sh
> +
> +run_powertop() {
> +
> +    local bin_name=powertop

Is is safe to assume that powertop is always in the PATH? Even on Android?

Though powertop is available in the PATH on ubuntu and Android, it is not safe to assume.
This will be fixed.
 
> +    local report=csv
> +    local seconds=10
> +    local iterations=2
> +    local report_name=PowerTOP*.csv
> +
> +    # remove old reports if exists
> +    rm -f $report_name
> +
> +    # run powertop for $(iterations) in report generation mode
> +    start_time=`date +%s`
> +    sudo $bin_name --$report --time=$seconds --iteration=$iterations
> +    end_time=`date +%s`
> +
> +    # check if powertop run for desired time
> +    let expected_time="$iterations * $seconds"
> +    let actual_time="$end_time - $start_time"
> +
> +    check "if powertop run for $expected_time sec" "test $actual_time -ge $expected_time"
> +
> +    # check if $(iterations) number of reports are generated
> +    check "if reports are generated" "test $(ls $report_name | wc -l) -eq $iterations"


     ^^^^^^   Isn't 'ls -1' required for this to succeed?

When ls is piped, output is listed one per line. Hence the above check is working. Good to add -1 to it.
It will be fixed.


In general, I'd use mktemp -d and put the logs in a random temporary
directory each time, but I guess that won't work on Android?

The powertop generates report files in current directory and doesn't provide option to pass directory name as an argument.
 
> +
> +    return 0
> +}
> +
> +run_powertop
> diff --git a/powertop/powertop_01.txt b/powertop/powertop_01.txt
> new file mode 100644

empty file?

> index 0000000..0caa6f0
> --- /dev/null
> +++ b/powertop/powertop_01.txt
> @@ -0,0 +1 @@
> +run powertop for 2 iterations of 10sec each
contents of powertop_01.txt
 
> diff --git a/powertop/powertop_sanity.sh b/powertop/powertop_sanity.sh
> new file mode 100755
> index 0000000..3ae3065
> --- /dev/null
> +++ b/powertop/powertop_sanity.sh
> @@ -0,0 +1,35 @@
> +#!/bin/bash
> +#
> +# PM-QA validation test suite for the power management on Linux
> +#
> +# Copyright (C) 2011, Linaro Limited.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License
> +# as published by the Free Software Foundation; either version 2
> +# of the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> +#
> +# Contributors:
> +#     Rajagopal Venkat <rajagopal.venkat@linaro.org>
> +#       - initial API and implementation
> +#
> +
> +source ../include/functions.sh
> +
> +check_powertop() {
> +
> +    local bin_name=powertop
> +
> +    command -v $bin_name >/dev/null 2>&1 && return 1 || return 0
> +}
> +
> +check_powertop
> diff --git a/powertop/powertop_sanity.txt b/powertop/powertop_sanity.txt
> new file mode 100644

empty file?

> index 0000000..1a182ae
> --- /dev/null
> +++ b/powertop/powertop_sanity.txt
> @@ -0,0 +1 @@
> +powertop is not available. Skipping all tests...
contents of powertop_sanity.txt
 
> --
> 1.7.9.5
>
>
> _______________________________________________
> linaro-dev mailing list
> linaro-dev@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev

Thanks for the review.