Allow event codes with collection groups (e.g. {r001b})

Allow event codes with collection groups.

Before:

>wperf stat -e {r1b,r75},r74,r73,r70,r71 -c 1 sleep 1
unknown event name: r1b

After:

>wperf stat -e {r1b,r75},r74,r73,r70,r71 -c 1 sleep 1
counting ... done

Performance counter stats for core 1, no multiplexing, kernel mode excluded, on Arm Limited core implementation:
note: 'e' - normal event, 'gN' - grouped event with group number N, metric name will be appended if 'e' or 'g' comes from it

         counter value  event name  event idx  event note
         =============  ==========  =========  ==========
        30,656,693,247  cycle       fixed      e
           242,697,275  inst_spec   0x1b       g0
            34,277,625  vfp_spec    0x75       g0
           257,378,095  ase_spec    0x74       e
         3,680,275,854  dp_spec     0x73       e
         1,653,492,652  ld_spec     0x70       e
         4,179,665,477  st_spec     0x71       e

               1.128 seconds time elapsed

Testing

Regression

============================= test session starts ===============================
platform win32 -- Python 3.11.1, pytest-7.2.0, pluggy-1.0.0
rootdir: C:\Users\przemek\Desktop\wperf\merge-retquest\_events
collected 75 items

wperf_cli_common_test.py ....                                               [  5%]
wperf_cli_json_validator_test.py ....                                       [ 10%]
wperf_cli_list_test.py ...                                                  [ 14%]
wperf_cli_metrics_test.py ........                                          [ 25%]
wperf_cli_padding_test.py .........                                         [ 37%]
wperf_cli_stat_test.py ...........................................          [ 94%]
wperf_cli_test_test.py ....                                                 [100%]

========================= 75 passed in 149.60s (0:02:29) =========================

Unit tests

vstest.console x64\Debug\wperf-test.dll
Microsoft (R) Test Execution Command Line Tool Version 17.5.0 (x64)
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
  Passed test_check_cores_in_pmu_ctl_hdr_p_null [< 1 ms]
  Passed test_check_cores_in_pmu_ctl_hdr_p_cores_count [< 1 ms]
  Passed test_check_cores_in_pmu_ctl_hdr_p_cores_no_error [< 1 ms]
  Passed test_check_cores_in_pmu_ctl_hdr_p_cores_no [< 1 ms]
  Passed test_get_core_event_index [< 1 ms]
  Passed test_get_dmc_clk_event_index [< 1 ms]
  Passed test_get_dmc_clkdiv2_event_index [< 1 ms]
  Passed test_parse_events_str_for_sample_rf [< 1 ms]
  Passed test_parse_events_str_for_sample_r1b [< 1 ms]
  Passed test_parse_events_str_for_sample_r12_rab [< 1 ms]
  Passed test_parse_events_str_for_sample_r_7_events [< 1 ms]
  Passed test_parse_events_str_EVT_CORE_rf_in_group [< 1 ms]
  Passed test_parse_events_str_EVT_CORE_2_raw_events_in_group [< 1 ms]
  Passed test_parse_events_str_EVT_CORE_raw_events_in_group_4 [101 ms]
  Passed test_parse_events_str_EVT_CORE_rf [< 1 ms]
  Passed test_parse_events_str_EVT_CORE_r1b [< 1 ms]
  Passed test_parse_events_str_EVT_CORE_r_7_events [< 1 ms]
  Passed test_parse_events_str_EVT_DSU_1_event [< 1 ms]
  Passed test_parse_events_str_EVT_DSU_2_events [< 1 ms]
  Passed test_parse_events_str_EVT_DSU_2_events_case_insensitive_prefix [< 1 ms]
  Passed test_parse_events_str_EVT_DSU_2_events_uppercase [< 1 ms]
  Passed test_parse_events_str_EVT_DMC_CLKDIV2_1_event [< 1 ms]
  Passed test_parse_events_str_EVT_DMC_CLKDIV2_1_event_uppercase [< 1 ms]
  Passed test_parse_events_str_EVT_DMC_CLKDIV2_1_event_prefix_uppercase [< 1 ms]
  Passed test_gen_pdb_name_dll [< 1 ms]
  Passed test_gen_pdb_name_exe [< 1 ms]
  Passed test_gen_pdb_name_dll_path [< 1 ms]
  Passed test_gen_pdb_name_multiple_dll_dots [< 1 ms]
  Passed test_MultiByteFromWideString [< 1 ms]
  Passed test_IntToHexWideString [< 1 ms]
  Passed test_IntToHexWideString_wchar_t [< 1 ms]
  Passed test_IntToDecWideString [< 1 ms]
  Passed test_DoubleToWideString [< 1 ms]
  Passed test_DoubleToWideStringExt [< 1 ms]
  Passed test_TokenizeWideStringOfInts_error [< 1 ms]
  Passed test_TokenizeWideStringOfInts_empty [< 1 ms]
  Passed test_TokenizeWideStringOfInts_clear_output [< 1 ms]
  Passed test_TokenizeWideStringOfInts_0 [< 1 ms]
  Passed test_TokenizeWideStringOfInts_012 [< 1 ms]
  Passed test_TokenizeWideStringOfInts_fibb [< 1 ms]
  Passed test_ReplaceFileExtension [< 1 ms]
  Passed test_IntToDecWithCommas [< 1 ms]
  Passed test_IntToDecWithCommas_neg [< 1 ms]
  Passed test_IntToDecWithCommas_Ramanujan_Tau [< 1 ms]
  Passed test_CaseInsensitiveWStringComparision [< 1 ms]
  Passed test_WStringToLower [< 1 ms]
  Passed test_WStringStartsWith [< 1 ms]
  Passed test_CaseInsensitiveWStringStartsWith [< 1 ms]
  Passed test_tablejson_char [< 1 ms]
  Passed test_tablejson_wchar [< 1 ms]
  Passed test_jsonobject_char [< 1 ms]
  Passed test_jsonobject_wchar [< 1 ms]

Test Run Successful.
Total tests: 52
     Passed: 52
 Total time: 0.3955 Seconds

Merge request reports

Loading
Loading