summaryrefslogtreecommitdiff
path: root/openembedded/scripts/dmesg-parser.sh
blob: 1b7d7358457c77a97b40b82f8840e0ee29d66e88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/sh

TMP_LOG="log.txt"

parse_locking_api() {
    cat $1 | grep "|$" | sed 's/^[][ 0-9\.]*//' | awk '
    /^\|/ {
        FS=":"
        split($0, l, "|"); j=1;
        for(i=1;i<=NF;i++) {
            if(length(l[i]) > 0)
                lock[j++] = l[i]
        }
    }

    /:[ a-z\|]*\|$/ {
        ptr=1; k=1;
        for(i=1;i<length($2);i+=ptr) {
            result=substr($2, i, length(lock[k]))
            if(result ~ /[^ ]+/) {
                extra_info=""
                if(result=="failed") {
                    result="ok"
                    extra_info=" [expected failed]"
                }
                printf("%s(%s)%s: %s\n", $1, lock[k], extra_info, result)
            }
            ptr=length(lock[k])+1
            k++
        }
    }'
}

parse_cpu_write_buffer_testing() {
    KEY="Testing write buffer coherency"
    log=`cat $1 | grep "${KEY}"`
    [ -z "${log}" ] && return 0
    t_id=${log%:*}
    t_r=${log##*:}
    f_reason=${t_r#*, }
    if [ "${f_reason}" != "${t_r}" ]; then
        t_r="FAILED"
        t_id="${t_id} [${f_reason}]"
    fi
    echo "${t_id}: ${t_r}"
}

parse_ring_buffer_test_result () {
    KEY="Running ring buffer tests"
    [ -z "`cat $1 | grep \"${KEY}\"`" ] && return
    if [ -n "`cat $1 | grep 'Ring buffer PASSED!'`" ] ; then
        echo "Ring buffer test: ok"
    else
        echo "Ring buffer test: failed"
    fi
}

parse_event_trace_test () {
    grep "^Testing " $1 | while read l;
    do
        t_id=${l%:*}
        t_r=${l##*: }
        [ -n "`echo ${t_r}|grep \".* PASSED\"`" ] && t_id="${t_id} ${t_r% PASSED}" && t_r="PASSED"
        [ -n "${t_r}" ] && case ${t_r} in
            Enabled* )
                t_id="${t_id} [${t_r}]"
                t_r="skip"
                ;;
            error* )
                t_id="${t_id} [${t_r}]"
                t_r="FAILED"
                ;;
            "OK" | "PASSED" | "ret = 0" )
                t_r="ok"
                ;;
            * )
                t_id="${t_id} [${t_r}]"
                t_r="FAILED"
                ;;
        esac
        [ -n "${t_id}" -a -n "${t_r}" ] && echo "${t_id}: ${t_r}"
    done
}

parse_test_string_helper () {
    KEY="test_string_helpers: Running tests"
    [ -z "`cat $1 | grep \"${KEY}\"`" ] && return
    if [ -n "`cat $1 | grep 'Test failed: flags'`" ] ; then
        echo "test_string_helpers: failed"
    else
        echo "test_string_helpers: ok"
    fi
}

parse_odebug_test () {
    grep "ODEBUG: selftest" $1 | while read l;
    do
        case "${l}" in
            "ODEBUG: selftest passed" )
                echo "ODEBUG selftest: ok"
                ;;
            * )
                echo "ODEBUG [${l#ODEBUG: }]: failed"
                ;;
        esac
    done
}

parse_rt_mutex_test () {
    r="`grep "Initializing RT-Tester" $1`"
    [ -n "${r}" ] && echo "${r}" | tr '[:upper:]' '[:lower:]'
}

cat $1 | sed 's/^[][ 0-9\.]*//' > ${TMP_LOG}

parse_locking_api ${TMP_LOG}
parse_cpu_write_buffer_testing ${TMP_LOG}
parse_ring_buffer_test_result ${TMP_LOG}
parse_event_trace_test ${TMP_LOG}
parse_test_string_helper ${TMP_LOG}
parse_odebug_test ${TMP_LOG}
parse_rt_mutex_test ${TMP_LOG}