1common:
2  integration_platforms:
3    - qemu_x86
4    - qemu_x86_64
5  platform_allow:
6    # Representative platforms to make sure this builds without issues
7    # and the analyzer actually runs and outputs something.
8    - mps2/an385
9    - qemu_cortex_a53
10    - qemu_x86
11    - qemu_x86_64
12    - qemu_riscv32
13    - qemu_riscv64
14    - qemu_xtensa/dc233c/mmu
15  extra_configs:
16    - CONFIG_QEMU_ICOUNT=n
17  tags:
18    - debug
19    - thread_analyzer
20tests:
21  debug.thread_analyzer.printk:
22    extra_configs:
23      - CONFIG_THREAD_ANALYZER_USE_PRINTK=y
24    harness: console
25    harness_config:
26      type: multi_line
27      regex:
28        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
29        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
30  debug.thread_analyzer.printk.stack_safety:
31    extra_configs:
32      - CONFIG_THREAD_ANALYZER_USE_PRINTK=y
33      - CONFIG_THREAD_ANALYZER_STACK_SAFETY=y
34      - CONFIG_THREAD_RUNTIME_STACK_SAFETY_DEFAULT_UNUSED_THRESHOLD_PCT=90
35    harness: console
36    harness_config:
37      type: multi_line
38      regex:
39        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
40        - " : Stack Safety Warning: Threshold crossed"
41        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
42  debug.thread_analyzer.printk.userspace:
43    filter: CONFIG_ARCH_HAS_USERSPACE
44    extra_configs:
45      - CONFIG_THREAD_ANALYZER_USE_PRINTK=y
46      - CONFIG_USERSPACE=y
47    harness: console
48    harness_config:
49      type: multi_line
50      regex:
51        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
52        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
53  debug.thread_analyzer.printk.userspace.priv_stack:
54    filter: CONFIG_ARCH_HAS_USERSPACE
55    extra_configs:
56      - CONFIG_THREAD_ANALYZER_USE_PRINTK=y
57      - CONFIG_THREAD_ANALYZER_PRIV_STACK_USAGE=y
58      - CONFIG_USERSPACE=y
59    platform_exclude:
60      # These platforms do not yet have the necessary bits to determine
61      # usage of privileged stacks.
62      - mps2/an385
63      - qemu_cortex_a53
64    harness: console
65    harness_config:
66      type: multi_line
67      regex:
68        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
69        - "(.*)PRIV_STACK: unused [0-9]+ usage [0-9]+ / [0-9]+"
70        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
71  debug.thread_analyzer.log_backend:
72    extra_configs:
73      - CONFIG_THREAD_ANALYZER_USE_LOG=y
74      - CONFIG_LOG=y
75      - CONFIG_LOG_MODE_IMMEDIATE=y
76    harness: console
77    harness_config:
78      type: multi_line
79      regex:
80        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
81        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
82  debug.thread_analyzer.log_backend.userspace:
83    filter: CONFIG_ARCH_HAS_USERSPACE
84    extra_configs:
85      - CONFIG_USERSPACE=y
86      - CONFIG_THREAD_ANALYZER_USE_LOG=y
87      - CONFIG_LOG=y
88      - CONFIG_LOG_MODE_IMMEDIATE=y
89    harness: console
90    harness_config:
91      type: multi_line
92      regex:
93        - "(.*)0x([0-9a-fA-F]+)([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
94        - "(.*)ISR0([ ]+) : STACK: unused [0-9]+ usage [0-9]+ / [0-9]+ (.*)"
95