summaryrefslogtreecommitdiffstats
path: root/kernel/Documentation/ABI/testing/sysfs-class-rtc-rtc0-device-rtc_calibration
blob: 4cf1e72222d9c449464c1f3cd07f2ac7508d9349 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
What:           Attribute for calibrating ST-Ericsson AB8500 Real Time Clock
Date:           Oct 2011
KernelVersion:  3.0
Contact:        Mark Godfrey <mark.godfrey@stericsson.com>
Description:    The rtc_calibration attribute allows the userspace to
                calibrate the AB8500.s 32KHz Real Time Clock.
                Every 60 seconds the AB8500 will correct the RTC's value
                by adding to it the value of this attribute.
                The range of the attribute is -127 to +127 in units of
                30.5 micro-seconds (half-parts-per-million of the 32KHz clock)
Users:          The /vendor/st-ericsson/base_utilities/core/rtc_calibration
                daemon uses this interface.
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
#!/bin/bash
##############################################################################
# Copyright 2015: Mirantis Inc.
# All Rights Reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.
# yardstick comment: this is a modified copy of
# rally/tests/ci/cover.sh
##############################################################################

if [[ -n $COVER_DIR_NAME ]]; then
    :
elif [[ -n $_ ]]; then
    COVER_DIR_NAME=$( dirname $_ )
else
    COVER_DIR_NAME=$( dirname $0 )
fi

show_diff () {
    diff -U 0 $1 $2 | awk -f $COVER_DIR_NAME/cover.awk
}

run_coverage_test() {

    ALLOWED_EXTRA_MISSING=10
    # enable debugging
    set -x

    # Stash uncommitted changes, checkout master and save coverage report
    uncommited=$(git status --porcelain | grep -v "^??")
    [[ -n ${uncommited} ]] && git stash > /dev/null
    git checkout HEAD^

    baseline_report=$(mktemp -t yardstick_coverageXXXXXXX)

    find . -type f -name "*.pyc" -delete

    # Temporarily run tests from two directories, until all tests have moved
    coverage run -p -m unittest discover ./tests/unit
    coverage run -p -m unittest discover ./yardstick/tests/unit
    coverage combine

    # Temporarily omit yardstick/tests from the report
    coverage report --omit=yardstick/tests/*/* > ${baseline_report}
    coverage erase

    # debug awk
    tail -1 ${baseline_report}
    baseline_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${baseline_report})

    if [[ -z $baseline_missing ]]; then
        echo "Failed to determine baseline missing"
        exit 1
    fi

    # Checkout back and unstash uncommitted changes (if any)
    git checkout -
    [[ -n ${uncommited} ]] && git stash pop > /dev/null

    # Generate and save coverage report
    current_report=$(mktemp -t yardstick_coverageXXXXXXX)

    find . -type f -name "*.pyc" -delete

    # Temporarily run tests from two directories, until all tests have moved
    coverage run -p -m unittest discover ./tests/unit
    coverage run -p -m unittest discover ./yardstick/tests/unit
    coverage combine

    # Temporarily omit yardstick/tests from the report
    coverage report --omit=yardstick/tests/*/* > ${current_report}
    coverage erase

    rm -rf cover-$PY_VER
    coverage html -d cover-$PY_VER

    # debug awk
    tail -1 ${current_report}
    current_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${current_report})

    if [[ -z $current_missing ]]; then
        echo "Failed to determine current missing"
        exit 1
    fi

    # Show coverage details
    new_missing=$((current_missing - baseline_missing))

    echo "Missing lines allowed to introduce : ${ALLOWED_EXTRA_MISSING}"
    echo "Missing lines introduced           : ${new_missing}"
    echo "Missing lines in master            : ${baseline_missing}"
    echo "Missing lines in proposed change   : ${current_missing}"

    if [[ ${new_missing} -gt ${ALLOWED_EXTRA_MISSING} ]];
    then
        show_diff ${baseline_report} ${current_report}
        echo "Please write more unit tests, we should keep our test coverage :( "
        rm ${baseline_report} ${current_report}
        exit 1

    elif [[ ${new_missing} -gt 0 ]];
    then
        show_diff ${baseline_report} ${current_report}
        echo "I believe you can cover all your code with 100% coverage!"

    else
        echo "Thank you! You are awesome! Keep writing unit tests! :)"
    fi

    rm ${baseline_report} ${current_report}
}