xref: /aosp_15_r20/external/parameter-framework/upstream/tools/coverage/README.md (revision c33452fb792a5495ec310a9626f2638b053af5dd)
1*c33452fbSAndroid Build Coastguard Worker# Domain coverage report
2*c33452fbSAndroid Build Coastguard Worker
3*c33452fbSAndroid Build Coastguard Worker## Introduction
4*c33452fbSAndroid Build Coastguard Worker
5*c33452fbSAndroid Build Coastguard WorkerDuring the PFW's life cycle, criteria states are changed and configurations are
6*c33452fbSAndroid Build Coastguard Workerapplied.
7*c33452fbSAndroid Build Coastguard Worker
8*c33452fbSAndroid Build Coastguard WorkerThis report gives the coverage for :
9*c33452fbSAndroid Build Coastguard Worker
10*c33452fbSAndroid Build Coastguard Worker- Criterion: detect easily which criterion state aren't used.
11*c33452fbSAndroid Build Coastguard Worker- Configuration: detect configuration that are never applied.
12*c33452fbSAndroid Build Coastguard Worker- Configuration rule: part of the rules that are useless and could be removed.
13*c33452fbSAndroid Build Coastguard Worker- Total average coverage
14*c33452fbSAndroid Build Coastguard Worker
15*c33452fbSAndroid Build Coastguard WorkerTwo things are needed to generate a coverage report:
16*c33452fbSAndroid Build Coastguard Worker
17*c33452fbSAndroid Build Coastguard Worker1. The Settings file
18*c33452fbSAndroid Build Coastguard Worker2. parameter-framework logs
19*c33452fbSAndroid Build Coastguard Worker
20*c33452fbSAndroid Build Coastguard Worker## How to get the Settings file
21*c33452fbSAndroid Build Coastguard Worker
22*c33452fbSAndroid Build Coastguard WorkerUsually, you have this file at hand.  But if getting the Settings file is
23*c33452fbSAndroid Build Coastguard Workerpainful, you may use remote-process to print it:
24*c33452fbSAndroid Build Coastguard Worker
25*c33452fbSAndroid Build Coastguard Worker    remote-process <host> <port> getDomainsWithSettingsXML > domains.xml
26*c33452fbSAndroid Build Coastguard Worker
27*c33452fbSAndroid Build Coastguard Worker## How to get PFW logs
28*c33452fbSAndroid Build Coastguard Worker
29*c33452fbSAndroid Build Coastguard WorkerYou must get the logs from the start of the parameter-framework.
30*c33452fbSAndroid Build Coastguard Worker
31*c33452fbSAndroid Build Coastguard WorkerOn Android, you should stop the process instantiating the parameter-framework,
32*c33452fbSAndroid Build Coastguard Workerclear the logs, start the process and get the logs using logcat.  E.g:
33*c33452fbSAndroid Build Coastguard Worker
34*c33452fbSAndroid Build Coastguard Worker    $ adb shell stop your_process
35*c33452fbSAndroid Build Coastguard Worker    $ adb logcat -c
36*c33452fbSAndroid Build Coastguard Worker    $ adb logcat > coverage.log &
37*c33452fbSAndroid Build Coastguard Worker    $ adb shell start your_process
38*c33452fbSAndroid Build Coastguard Worker    ... do your testing ...
39*c33452fbSAndroid Build Coastguard Worker    kill the background logcat started above
40*c33452fbSAndroid Build Coastguard Worker
41*c33452fbSAndroid Build Coastguard Worker## How to generate the report
42*c33452fbSAndroid Build Coastguard Worker
43*c33452fbSAndroid Build Coastguard WorkerThen execute :
44*c33452fbSAndroid Build Coastguard Worker
45*c33452fbSAndroid Build Coastguard Worker    $ aplog2coverage.sh -d domains.xml -e<some_regex> coverage.log -o coverageReport.html
46*c33452fbSAndroid Build Coastguard Worker
47*c33452fbSAndroid Build Coastguard WorkerYou may pass several log files.
48*c33452fbSAndroid Build Coastguard Worker
49*c33452fbSAndroid Build Coastguard WorkerThe regex (-e argument) is used to match relevant log lines: If you have
50*c33452fbSAndroid Build Coastguard Workerseveral PFW instances running, you need to have a way to tell which instance is
51*c33452fbSAndroid Build Coastguard Workerlogging each line.  Besides, if accelerates the parsing by eliminating
52*c33452fbSAndroid Build Coastguard Workerirrelevant log lines.
53*c33452fbSAndroid Build Coastguard Worker
54*c33452fbSAndroid Build Coastguard WorkerYou may pass the optional `-f` argument to ignore some parse errors.
55*c33452fbSAndroid Build Coastguard Worker
56*c33452fbSAndroid Build Coastguard Worker### Limitations
57*c33452fbSAndroid Build Coastguard Worker
58*c33452fbSAndroid Build Coastguard Worker- Having more than one dot (".") in log paths is not supported (see the sort
59*c33452fbSAndroid Build Coastguard Worker  implementation (sort -rn -k2 -t.) in aplog2coverage.sh).
60*c33452fbSAndroid Build Coastguard Worker- A PFW start log line must be at the head of the oldest log: no
61*c33452fbSAndroid Build Coastguard Worker  applyconfiguration or set criterion log should be found before the PFW start.
62