Skip to content

Update EventQueue API to use chrono times #13975

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 8, 2021
Merged

Conversation

adbridge
Copy link
Contributor

@adbridge adbridge commented Nov 27, 2020

Summary of changes

Main dispatch function is updated to take a Chrono duration instead of an integer milliseconds parameter.

To allow for the instances of blocking and non wait versions, which previously were actioned by passing either -1 or 0 as the millisecond delay respectively, two other functions are now available.

dispatch_once() - new
dispatch_forever() - internally modified from the original version but no change in functionality

Note without this fix EventQueue dispatch function is actually broken. Events may not be dispatched at all or in the worst case the chip will crash.

Impact of changes

This is an API change, affecting the following areas:

  • The parameter passed to the EventQueue.dispatch() function will now need to be a Chrono duration.
    E.g. '100ms'
  • The dispatch_forever() function has been changed internally but the API itself remains the same.
  • A new function, dispatch_once() has been added.

Migration actions required

The following migrations actions are required:

  • Calls to EventQueue.dispatch(int ms) will now need to be changed to use EventQueue.dispatch(chrono wait). This should be
    as simple as adding 'ms' to any passed literal value. E.g. '100' becomes '100ms'. Variables passed in will need to be explicitly
    converted.
  • Calls to EventQueue.dispatch(-1) should used EventQueue.dispatch_forever()
  • Calls to EventQueue.dispatch(0) should used EventQueue.dispatch_once()

Documentation

EventQueue docs may need to be updated . Code snippet examples will certainly need to be.
NB. This also has an impact on the Events snippet example as that uses the EventQueue.dispatch() function.


Pull request type

[] Patch update (Bug fix / Target update / Docs update / Test update / Refactor)
[x] Feature update (New feature / Functionality change / New API)
[] Major update (Breaking change E.g. Return code change / API behaviour change)

Test results

[] No Tests required for this change (E.g docs only update)
[x] Covered by existing mbed-os tests (Greentea or Unittest)
[] Tests / results supplied as part of this PR

Reviewers

@kjbracey-arm @donatieng @pan-

@ciarmcom
Copy link
Member

@adbridge, thank you for your changes.
@kjbracey-arm @donatieng @pan- @ARMmbed/mbed-os-core @ARMmbed/mbed-os-maintainers please review.

Copy link
Member

@pan- pan- left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @adbridge . I wonder if we shouldn't provide a graceful period where dispatch(int ms=-1) is exposed as a deprecated function.

* @see EventQueue::dispatch
*
* Executes events indefinitely unless the dispatch loop is forcibly broken.
* See break_dispatch()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can use @see to reference another function. Doxygen should generate a link to it and depending on it's configuration it can list references in break_dispatch doc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo error removing the '@' by the looks of it!

* @param ms Time to wait for events in milliseconds, a negative
* value will dispatch events indefinitely
* (default to -1)
* @param wait Time to wait for events in milliseconds, expressed as a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I always found that description confusing; the parameter expresses the duration of the dispatch process. It has nothing to do with the time to wait for events. For example, if I request a dispatch for 10ms and an event is ready at 2ms into the process. The function won't exit after processing the event, it will continue the dispatch process for the remaining 8ms.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see what you mean, but it also isn't a time limit on the dispatch. If there are multiple events scheduled for the time as it stood on entry, it will run them all. It won't run the first few and then decide "oh, those first few events took longer than 10ms, let's stop dispatching.

So it is specifically determining how long it will wait, not dispatch, but yes, it's relative to the entry time, not a "gap" timeout after last event.

These sort of multi-op things with timeouts are always confusing. Compare condition variables, where there is a timeout on the wait, but no timeout on the mutex acquire. Time could be well past the deadline before you regain control, whether or not the wait timed out...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's part of the original comment by the author, are we saying we disagree with what was originally written ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the original comment is acceptable, and "wait" is right. @pan- didn't like it, interpreting it as a one-off wait for first event. I view it as correctly describing when we'll give up at any point we find ourselves waiting.

* In this case, the dispatch function does not wait and is IRQ safe.
*
*/
void dispatch_once();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I lost my comment for that item.

@kjbracey-arm The implementation doesn't do exactly this. It may not break immediately out of the loop if the next tick hasn't been reached. Do you think we should patch the implementation ?
The change is trivial, we just have to return if ms is equal to 0.

int deadline = -1;
tick = equeue_tick();
// check if we should stop dispatching soon
if (ms >= 0) {

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not seeing what you're seeing here. If ms == 0, then it computes tickdiff(timeout, tick), ie entry_tick + 0 - tick, and that's got to be <= 0, so it exits immediately. Right?

BTW the name here feels perilously close to dispatch_one(), but I guess it's okay...

@evedon
Copy link
Contributor

evedon commented Nov 30, 2020

Thanks @adbridge . I wonder if we shouldn't provide a graceful period where dispatch(int ms=-1) is exposed as a deprecated function.

We must mark the function has deprecated and remove it in a future major release.

* @param ms Time to wait for events in milliseconds, a negative
* value will dispatch events indefinitely
* (default to -1)
* @param wait Time to wait for events in milliseconds, expressed as a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see what you mean, but it also isn't a time limit on the dispatch. If there are multiple events scheduled for the time as it stood on entry, it will run them all. It won't run the first few and then decide "oh, those first few events took longer than 10ms, let's stop dispatching.

So it is specifically determining how long it will wait, not dispatch, but yes, it's relative to the entry time, not a "gap" timeout after last event.

These sort of multi-op things with timeouts are always confusing. Compare condition variables, where there is a timeout on the wait, but no timeout on the mutex acquire. Time could be well past the deadline before you regain control, whether or not the wait timed out...

* In this case, the dispatch function does not wait and is IRQ safe.
*
*/
void dispatch_once();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not seeing what you're seeing here. If ms == 0, then it computes tickdiff(timeout, tick), ie entry_tick + 0 - tick, and that's got to be <= 0, so it exits immediately. Right?

BTW the name here feels perilously close to dispatch_one(), but I guess it's okay...


/** Dispatch currently queued events only and then terminate
*
* In this case, the dispatch function does not wait and is IRQ safe.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can't quite say it's IRQ safe. It wouldn't be in an RTOS build, as it still uses mutexes for its state locks. It's close to it, and in certain specialised non-RTOS runtime environments this might be important, but for mainline Mbed OS API I think I'd like to not try to specify that.

evedon
evedon previously requested changes Jan 8, 2021
*/
void dispatch(int ms = -1);
void dispatch(duration wait);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to leave the existing API with a deprecation warning. This PR then becomes a Feature update rather than Breaking change.

@ciarmcom ciarmcom added the stale Stale Pull Request label Jan 19, 2021
@ciarmcom
Copy link
Member

This pull request has automatically been marked as stale because it has had no recent activity. @adbridge, please carry out any necessary work to get the changes merged. Thank you for your contributions.

@ciarmcom ciarmcom added stale Stale Pull Request and removed stale Stale Pull Request labels Jan 19, 2021
@mergify mergify bot dismissed evedon’s stale review January 20, 2021 12:54

Pull request has been modified.

@adbridge
Copy link
Contributor Author

@evedon @pan- @kjbracey-arm please re-review

@adbridge
Copy link
Contributor Author

Going to consider the changes here along side the fix needed for type inconsistencies across the event/eventqueue/equeue APIs (triggered by #14176)

@adbridge
Copy link
Contributor Author

adbridge commented Feb 4, 2021

Updated Greentea test results:

> mbed test -vv -t GCC_ARM -m K64F -n events-tests-tests-events-queue
[mbed-11532] Working path "/home/anna/git/mbed-os" (program)
[mbed-11532] Exec "/usr/bin/python3 -m pip list -l" in "/home/anna/git/mbed-os"
appdirs (1.4.4)
asn1ate (0.6.0)
beautifulsoup4 (4.6.3)
cbor (1.0.0)
certifi (2020.12.5)
cffi (1.14.4)
chardet (3.0.4)
Click (7.0)
cmsis-pack-manager (0.2.10)
colorama (0.3.9)
cryptography (2.9.2)
ecdsa (0.16.1)
fasteners (0.16)
future (0.18.2)
icetea (1.2.4)
idna (2.7)
intelhex (2.2.1)
Jinja2 (2.10.3)
jsonmerge (1.7.0)
jsonschema (2.6.0)
junit-xml (1.8)
lockfile (0.12.2)
manifest-tool (1.5.2)
MarkupSafe (1.1.1)
mbed-cli (1.10.5)
mbed-cloud-sdk (2.0.8)
mbed-flasher (0.10.1)
mbed-greentea (1.8.3)
mbed-host-tests (1.8.3)
mbed-ls (1.8.3)
mbed-os-tools (1.8.3)
milksnake (0.1.5)
prettytable (0.7.2)
protobuf (3.5.2.post1)
psutil (5.6.6)
pyasn1 (0.2.3)
pycparser (2.20)
pycryptodome (3.9.9)
pyelftools (0.25)
pyparsing (2.4.7)
pyserial (3.4)
python-dateutil (2.8.1)
python-dotenv (0.15.0)
pyusb (1.1.1)
PyYAML (4.2b1)
requests (2.20.1)
semver (2.13.0)
setuptools (51.3.3)
six (1.12.0)
soupsieve (2.1)
urllib3 (1.24.2)
wcwidth (0.2.5)
yattag (1.14.0)
[mbed-11532] Exec "/usr/bin/python3 -u /home/anna/git/mbed-os/tools/test.py -D MBED_TEST_MODE -t GCC_ARM -m K64F --source . --build ./BUILD/tests/K64F/GCC_ARM --test-spec ./BUILD/tests/K64F/GCC_ARM/test_spec.json --build-data ./BUILD/tests/K64F/GCC_ARM/build_data.json -n events-tests-tests-events-queue -v --greentea" in "/home/anna/git/mbed-os"
WARNING: MBED_ARMC6_PATH set as environment variable but doesn't exist
Building library mbed-build (K64F, GCC_ARM)
Scan: mbed-os
Macros: -DDEVICE_FLASH=1 -D__CMSIS_RTOS -DMBED_BUILD_TIMESTAMP=1612372680.891245 -DTARGET_MCUXpresso_MCUS -DDEVICE_CRC=1 -DTARGET_PSA_V7_M -DDEVICE_RESET_REASON=1 -D__MBED__=1 -DDEVICE_USBDEVICE=1 -DTARGET_KSDK2_MCUS -DDEVICE_SPI=1 -DDEVICE_PORTOUT=1 -DCOMPONENT_FLASHIAP=1 -DDEVICE_PORTINOUT=1 -DMBED_TEST_MODE -DTARGET_KPSDK_MCUS -DMBED_TICKLESS -DDEVICE_PORTIN=1 -DTARGET_MCU_K64F -DTARGET_RELEASE -DCOMPONENT_SD=1 -DTARGET_KPSDK_CODE -DTARGET_NAME=K64F -DMBED_SPLIT_HEAP -DDEVICE_ANALOGOUT=1 -DDEVICE_WATCHDOG=1 -DTOOLCHAIN_GCC_ARM -DTARGET_RTOS_M4_M7 -DTARGET_Freescale_EMAC -DDEVICE_ANALOGIN=1 -DTARGET_K64F -DTARGET_LIKE_CORTEX_M4 -D__FPU_PRESENT=1 -DDEVICE_I2C=1 -DDEVICE_USTICKER=1 -DDEVICE_SERIAL_FC=1 -D__CORTEX_M4 -DDEVICE_LPTICKER=1 -DDEVICE_PWMOUT=1 -DDEVICE_SPISLAVE=1 -DTARGET_MBED_PSA_SRV -DTARGET_CORTEX_M -DDEVICE_RTC=1 -DTARGET_PSA_Target -DDEVICE_INTERRUPTIN=1 -DTARGET_Freescale -DDEVICE_I2CSLAVE=1 -DFEATURE_PSA=1 -DTARGET_CORTEX -DTARGET_M4 -DCPU_MK64FN1M0VMD12 -DTOOLCHAIN_GCC -D__MBED_CMSIS_RTOS_CM -DDEVICE_TRNG=1 -DFSL_RTOS_MBED -DDEVICE_SLEEP=1 -DDEVICE_SPI_ASYNCH=1 -DDEVICE_STDIO_MESSAGES=1 -DDEVICE_EMAC=1 -DTARGET_FF_ARDUINO -DDEVICE_SERIAL=1 -DARM_MATH_CM4 -DTARGET_LIKE_MBED -DTARGET_FRDM -DDEVICE_SERIAL_ASYNCH=1
Building project queue (K64F, GCC_ARM)
Scan: GCC_ARM
Scan: queue
Macros: -DDEVICE_FLASH=1 -D__CMSIS_RTOS -DTARGET_MCUXpresso_MCUS -DMBED_BUILD_TIMESTAMP=1612372684.3094883 -DDEVICE_CRC=1 -DTARGET_PSA_V7_M -DDEVICE_RESET_REASON=1 -D__MBED__=1 -DDEVICE_USBDEVICE=1 -DTARGET_KSDK2_MCUS -DDEVICE_SPI=1 -DDEVICE_PORTOUT=1 -DCOMPONENT_FLASHIAP=1 -DDEVICE_PORTINOUT=1 -DMBED_TEST_MODE -DTARGET_KPSDK_MCUS -DMBED_TICKLESS -DDEVICE_PORTIN=1 -DTARGET_MCU_K64F -DTARGET_RELEASE -DCOMPONENT_SD=1 -DTARGET_KPSDK_CODE -DTARGET_NAME=K64F -DMBED_SPLIT_HEAP -DDEVICE_ANALOGOUT=1 -DDEVICE_WATCHDOG=1 -DTOOLCHAIN_GCC_ARM -DTARGET_RTOS_M4_M7 -DTARGET_Freescale_EMAC -DDEVICE_ANALOGIN=1 -DTARGET_K64F -DTARGET_LIKE_CORTEX_M4 -D__FPU_PRESENT=1 -DDEVICE_I2C=1 -DDEVICE_USTICKER=1 -DDEVICE_SERIAL_FC=1 -D__CORTEX_M4 -DDEVICE_LPTICKER=1 -DDEVICE_PWMOUT=1 -DDEVICE_SPISLAVE=1 -DTARGET_MBED_PSA_SRV -DTARGET_CORTEX_M -DDEVICE_RTC=1 -DTARGET_PSA_Target -DDEVICE_INTERRUPTIN=1 -DTARGET_Freescale -DDEVICE_I2CSLAVE=1 -DFEATURE_PSA=1 -DTARGET_CORTEX -DTARGET_M4 -DCPU_MK64FN1M0VMD12 -DTOOLCHAIN_GCC -D__MBED_CMSIS_RTOS_CM -DDEVICE_TRNG=1 -DFSL_RTOS_MBED -DDEVICE_SLEEP=1 -DDEVICE_SPI_ASYNCH=1 -DDEVICE_STDIO_MESSAGES=1 -DDEVICE_EMAC=1 -DTARGET_FF_ARDUINO -DDEVICE_SERIAL=1 -DARM_MATH_CM4 -DTARGET_LIKE_MBED -DTARGET_FRDM -DDEVICE_SERIAL_ASYNCH=1
Link: queue
Preproc: /home/anna/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-cpp -E -P BUILD/tests/K64F/GCC_ARM/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/device/TOOLCHAIN_GCC_ARM/MK64FN1M0xxx12.ld -Wl,--gc-sections -Wl,--wrap,main -Wl,--wrap,_malloc_r -Wl,--wrap,_free_r -Wl,--wrap,_realloc_r -Wl,--wrap,_memalign_r -Wl,--wrap,_calloc_r -Wl,--wrap,exit -Wl,--wrap,atexit -Wl,-n -Wl,--wrap,printf -Wl,--wrap,sprintf -Wl,--wrap,snprintf -Wl,--wrap,vprintf -Wl,--wrap,vsprintf -Wl,--wrap,vsnprintf -Wl,--wrap,fprintf -Wl,--wrap,vfprintf -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fmessage-length=0 -fno-exceptions -ffunction-sections -fdata-sections -funsigned-char -MMD -fomit-frame-pointer -Os -g -DMBED_TRAP_ERRORS_ENABLED=1 -DMBED_MINIMAL_PRINTF -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -DMBED_ROM_START=0x0 -DMBED_ROM_SIZE=0x100000 -DMBED_RAM1_START=0x1fff0000 -DMBED_RAM1_SIZE=0x10000 -DMBED_RAM_START=0x20000000 -DMBED_RAM_SIZE=0x30000 -DMBED_BOOT_STACK_SIZE=1024 -DXIP_ENABLE=0 -o ./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/.link_script.ld -DDEVICE_FLASH=1 -D__CMSIS_RTOS -DTARGET_MCUXpresso_MCUS -DMBED_BUILD_TIMESTAMP=1612372684.3094883 -DDEVICE_CRC=1 -DTARGET_PSA_V7_M -DDEVICE_RESET_REASON=1 -D__MBED__=1 -DDEVICE_USBDEVICE=1 -DTARGET_KSDK2_MCUS -DDEVICE_SPI=1 -DDEVICE_PORTOUT=1 -DCOMPONENT_FLASHIAP=1 -DDEVICE_PORTINOUT=1 -DMBED_TEST_MODE -DTARGET_KPSDK_MCUS -DMBED_TICKLESS -DDEVICE_PORTIN=1 -DTARGET_MCU_K64F -DTARGET_RELEASE -DCOMPONENT_SD=1 -DTARGET_KPSDK_CODE -DTARGET_NAME=K64F -DMBED_SPLIT_HEAP -DDEVICE_ANALOGOUT=1 -DDEVICE_WATCHDOG=1 -DTOOLCHAIN_GCC_ARM -DTARGET_RTOS_M4_M7 -DTARGET_Freescale_EMAC -DDEVICE_ANALOGIN=1 -DTARGET_K64F -DTARGET_LIKE_CORTEX_M4 -D__FPU_PRESENT=1 -DDEVICE_I2C=1 -DDEVICE_USTICKER=1 -DDEVICE_SERIAL_FC=1 -D__CORTEX_M4 -DDEVICE_LPTICKER=1 -DDEVICE_PWMOUT=1 -DDEVICE_SPISLAVE=1 -DTARGET_MBED_PSA_SRV -DTARGET_CORTEX_M -DDEVICE_RTC=1 -DTARGET_PSA_Target -DDEVICE_INTERRUPTIN=1 -DTARGET_Freescale -DDEVICE_I2CSLAVE=1 -DFEATURE_PSA=1 -DTARGET_CORTEX -DTARGET_M4 -DCPU_MK64FN1M0VMD12 -DTOOLCHAIN_GCC -D__MBED_CMSIS_RTOS_CM -DDEVICE_TRNG=1 -DFSL_RTOS_MBED -DDEVICE_SLEEP=1 -DDEVICE_SPI_ASYNCH=1 -DDEVICE_STDIO_MESSAGES=1 -DDEVICE_EMAC=1 -DTARGET_FF_ARDUINO -DDEVICE_SERIAL=1 -DARM_MATH_CM4 -DTARGET_LIKE_MBED -DTARGET_FRDM -DDEVICE_SERIAL_ASYNCH=1 @./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/.includes_d41d8cd98f00b204e9800998ecf8427e.txt -include ./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/mbed_config.h
[DEBUG] Return: 0
Link: /home/anna/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-gcc @./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/.link_options.txt
[DEBUG] Return: 0
Elf2Bin: queue
FromELF: /home/anna/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-objcopy -O binary ./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/queue.elf ./BUILD/tests/K64F/GCC_ARM/./events/tests/TESTS/events/queue/queue.bin
[DEBUG] Return: 0
| Module                   |     .text |    .data |      .bss |
|--------------------------|-----------|----------|-----------|
| [fill]                   |   139(+0) |    7(+0) |  2327(+0) |
| [lib]/c.a                | 12807(+0) | 2472(+0) |    89(+0) |
| [lib]/gcc.a              |   920(+0) |    0(+0) |     0(+0) |
| [lib]/misc               |   180(+0) |    4(+0) |    28(+0) |
| [lib]/nosys.a            |    32(+0) |    0(+0) |     0(+0) |
| cmsis/CMSIS_5            |  7190(+0) |  164(+0) |  1612(+0) |
| cmsis/device             |  1716(+0) |    4(+0) |  4344(+0) |
| connectivity/drivers     |     4(+0) |    0(+0) |     0(+0) |
| connectivity/nanostack   |   164(+0) |    0(+0) |     0(+0) |
| drivers/source           |   978(+0) |    0(+0) |     0(+0) |
| drivers/usb              |    12(+0) |    0(+0) |     0(+0) |
| events/source            |  1687(+0) |    0(+0) |     0(+0) |
| events/tests             | 15491(+0) |    0(+0) |  1109(+0) |
| features/frameworks      |  7065(+0) |   69(+0) |   369(+0) |
| hal/source               |  1679(+0) |    8(+0) |   115(+0) |
| platform/source          |  7751(+0) |  260(+0) |   365(+0) |
| rtos/source              |   217(+0) |    0(+0) |     8(+0) |
| targets/TARGET_Freescale |  9117(+0) |   36(+0) |   386(+0) |
| Subtotals                | 67149(+0) | 3024(+0) | 10752(+0) |
Total Static RAM memory (data + bss): 13776(+0) bytes
Total Flash memory (text + data): 70173(+0) bytes

Image: BUILD/tests/K64F/GCC_ARM/events/tests/TESTS/events/queue/queue.bin


Memory map breakdown for built projects (values in Bytes):
| name  | target | toolchain | static_ram | total_flash |
|-------|--------|-----------|------------|-------------|
| queue | K64F   | GCC_ARM   |      13776 |       70173 |


Build successes:
  * K64F::GCC_ARM::EVENTS-TESTS-TESTS-EVENTS-QUEUE
  * K64F::GCC_ARM::MBED-BUILD
[mbed-11532] Exec "mbedgt --test-spec ./BUILD/tests/K64F/GCC_ARM/test_spec.json -n events-tests-tests-events-queue -V" in "/home/anna/git/mbed-os"
[1612372688.38][root]Generating grammar tables from /usr/lib/python3.6/lib2to3/Grammar.txt
[1612372688.43][root]Generating grammar tables from /usr/lib/python3.6/lib2to3/PatternGrammar.txt
mbedgt: greentea test automation tool ver. 1.8.3
mbedgt: test specification file './BUILD/tests/K64F/GCC_ARM/test_spec.json' (specified with --test-spec option)
mbedgt: using './BUILD/tests/K64F/GCC_ARM/test_spec.json' from current directory!
mbedgt: detecting connected mbed-enabled devices...
mbedgt: detected 1 device
	| platform_name | platform_name_unique | serial_port  | mount_point         | target_id                                        |
	|---------------|----------------------|--------------|---------------------|--------------------------------------------------|
	| K64F          | K64F[0]              | /dev/ttyACM0 | /media/anna/DAPLINK | 0240000034544e45000800048e3800265a91000097969900 |
mbedgt: processing target 'K64F' toolchain 'GCC_ARM' compatible platforms... (note: switch set to --parallel 1)
	| platform_name | platform_name_unique | serial_port       | mount_point         | target_id                                        |
	|---------------|----------------------|-------------------|---------------------|--------------------------------------------------|
	| K64F          | K64F[0]              | /dev/ttyACM0:9600 | /media/anna/DAPLINK | 0240000034544e45000800048e3800265a91000097969900 |
mbedgt: test case filter (specified with -n option)
	events-tests-tests-events-queue
	test filtered in 'events-tests-tests-events-queue'
mbedgt: running 1 test for platform 'K64F' and toolchain 'GCC_ARM'
	use 1 instance of execution threads for testing
mbedgt: checking for 'host_tests' directory above image directory structure
	'host_tests' directory not found: two directory levels above image path checked
mbedgt: selecting test case observer...
	calling mbedhtrun: mbedhtrun -m K64F -p /dev/ttyACM0:9600 -f "BUILD/tests/K64F/GCC_ARM/events/tests/TESTS/events/queue/queue.bin" -d /media/anna/DAPLINK -c default -t 0240000034544e45000800048e3800265a91000097969900 -r default -C 4 --sync 5 -P 60
mbedgt: mbed-host-test-runner: started
[1612372689.91][HTST][INF] host test executor ver. 1.8.3
[1612372689.91][HTST][INF] copy image onto target...
[1612372689.91][COPY][INF] Waiting up to 60 sec for '0240000034544e45000800048e3800265a91000097969900' mount point (current is '/media/anna/DAPLINK')...
[1612372697.93][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372698.44][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372698.95][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372699.46][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372699.97][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372700.48][HTST][INF] starting host test process...
[1612372700.49][CONN][INF] starting connection process...
[1612372700.49][CONN][INF] notify event queue about extra 60 sec timeout for serial port pooling
[1612372700.49][CONN][INF] initializing serial port listener...
[1612372700.49][PLGN][INF] Waiting up to 60 sec for '0240000034544e45000800048e3800265a91000097969900' serial port (current is '/dev/ttyACM0')...
[1612372700.50][HTST][INF] setting timeout to: 60 sec
[1612372700.53][mbedls.lstools_base]MBED with target id '0240000034544e45000800048e3800265a91000097969900' is connected, but not mounted. Use the '-u' flag to include it in the list.
[1612372701.04][SERI][INF] serial(port=/dev/ttyACM0, baudrate=9600, read_timeout=0.01, write_timeout=5)
[1612372701.05][SERI][INF] reset device using 'default' plugin...
[1612372701.16][SERI][INF] waiting 1.00 sec after reset
[1612372702.16][SERI][INF] wait for it...
[1612372702.16][SERI][TXD] mbedmbedmbedmbedmbedmbedmbedmbedmbedmbed
[1612372702.16][CONN][INF] sending up to 5 __sync packets (specified with --sync=5)
[1612372702.16][CONN][INF] sending preamble '1563135f-1693-40c6-aa05-72cde8968a96'
[1612372702.16][SERI][TXD] {{__sync;1563135f-1693-40c6-aa05-72cde8968a96}}
[1612372702.35][CONN][RXD] d1563135f-1693-40c6-aa05-72cde8968a96}}
[1612372702.37][CONN][WRN] found KV pair in stream: {{__version;1.3.0}}, ignoring...
[1612372702.38][CONN][WRN] found KV pair in stream: {{__timeout;20}}, ignoring...
[1612372702.45][CONN][RXD] {{__host_test_name;default_auto}ss...
[1612372702.50][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing calls with 5 args}}, ignoring...
[1612372702.55][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing calls with 4 args}}, ignoring...
[1612372702.65][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing calls with 3 __testcase_name;Testing calls with 2 args}}, ignoring...
[1612372702.70][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing calls with 1 args}}, ignoring...
[1612372702.75][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing calls with 0 args}}, ignoring...
[1612372702.79][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing call_in}}, ignoring...
[1612372702.83][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing call_every}}, ignoring...
[1612372702.88][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing allocate failure}}, ignoring...
[1612372702.92][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing event cancel 1}}, ignoring...
[1612372702.97][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing the event class}}, ignoring...
[1612372703.02][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing the event class helpers}}, ignoring...
[1612372703.07][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing the event inference}}, ignoring...
[1612372703.12][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing time_left}}, ignoring...
[1612372703.20][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing mixed dynamic & static events queue}}, ignoring...
[1612372703.23][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing static events queue}}, ignoring...
[1612372703.29][CONN][RXD]
[1612372703.29][CONN][WRN] found KV pair in stream: {{__testcase_name;Testing event period values}}, ignoring...
[1612372703.35][CONN][RXD] >>> Running case #1: 'Testing calls with 5 args'...
[1612372703.40][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 5 args}}, ignoring...
[1612372703.44][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 5 args;1;0}}, ignoring...
[1612372703.50][CONN][RXD] >>> 'Testing calls with 5 args': 1 passed, 0 failed
[1612372703.50][CONN][RXD]
[1612372703.55][CONN][RXD] >>> Running case #2: 'Testing calls with 4 args'...
[1612372703.61][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 4 args}}, ignoring...
[1612372703.66][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 4 args;1;0}}, ignoring...
[1612372703.72][CONN][RXD] >>> 'Testing calls with 4 args': 1 passed, 0 failed
[1612372703.72][CONN][RXD]
[1612372703.77][CONN][RXD] >>> Running case #3: 'Testing calls with 3 args'...
[1612372703.83][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 3 args}}, ignoring...
[1612372703.88][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 3 args;1;0}}, ignoring...
[1612372703.94][CONN][RXD] >>> 'Testing calls with 3 args': 1 passed, 0 failed
[1612372703.94][CONN][RXD]
[1612372703.99][CONN][RXD] >>> Running case #4: 'Testing calls with 2 args'...
[1612372704.04][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 2 args}}, ignoring...
[1612372704.09][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 2 args;1;0}}, ignoring...
[1612372704.14][CONN][RXD] >>> 'Testing calls with 2 args': 1 passed, 0 failed
[1612372704.18][CONN][RXD]
[1612372704.20][CONN][RXD] >>> Running case #5: 'Testing calls with 1 args'...
[1612372704.26][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 1 args}}, ignoring...
[1612372704.32][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 1 args;1;0}}, ignoring...
[1612372704.37][CONN][RXD] >>> 'Testing calls with 1 args': 1 passed, 0 failed
[1612372704.37][CONN][RXD]
[1612372704.42][CONN][RXD] >>> Running case #6: 'Testing calls with 0 args'...
[1612372704.48][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing calls with 0 args}}, ignoring...
[1612372704.53][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing calls with 0 args;1;0}}, ignoring...
[1612372704.59][CONN][RXD] >>> 'Testing calls with 0 args': 1 passed, 0 failed
[1612372704.59][CONN][RXD]
[1612372704.62][CONN][RXD] >>> Running case #7: 'Testing call_in'...
[1612372704.67][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing call_in}}, ignoring...
[1612372706.71][CONN][WRN] found KV pair in stream: {{__testcase_finish;Testing call_in;1;0}}, ignoring...
[1612372706.75][CONN][RXD] >>> 'Testing call_in': 1 passed, 0 failed
[1612372706.75][CONN][RXD]
[1612372706.80][CONN][RXD] >>> Running case #8: 'Testing call_every'...
[1612372706.84][CONN][WRN] found KV pair in stream: {{__testcase_start;Testing call_every}}, ignoring...
[1612372707.17][CONN][INF] Reset the part and send in new preamble...
[1612372707.17][SERI][INF] reset device using 'default' plugin...
[1612372707.28][SERI][INF] waiting 1.00 sec after reset
[1612372708.28][SERI][INF] wait for it...
[1612372708.28][CONN][INF] resending new preamble 'c687d01b-e527-4107-8bbb-67e82dbb6c7d' after 5.00 sec
[1612372708.28][SERI][TXD] {{__sync;c687d01b-e527-4107-8bbb-67e82dbb6c7d}}
[1612372708.37][CONN][RXD] mbedmbedmbedmbedmbedmbedmbedmbed
[1612372708.43][CONN][INF] found SYNC in stream: {{__sync;c687d01b-e527-4107-8bbb-67e82dbb6c7d}} it is #1 sent, queued...
[1612372708.43][HTST][INF] sync KV found, uuid=c687d01b-e527-4107-8bbb-67e82dbb6c7d, timestamp=1612372708.428464
[1612372708.45][CONN][INF] found KV pair in stream: {{__version;1.3.0}}, queued...
[1612372708.45][HTST][INF] DUT greentea-client version: 1.3.0
[1612372708.47][CONN][INF] found KV pair in stream: {{__timeout;20}}, queued...
[1612372708.47][HTST][INF] setting timeout to: 20 sec
[1612372708.50][CONN][INF] found KV pair in stream: {{__host_test_name;default_auto}}, queued...
[1612372708.50][HTST][INF] host test class: '<class 'mbed_os_tools.test.host_tests.default_auto.DefaultAuto'>'
[1612372708.50][HTST][INF] host test setup() call...
[1612372708.50][HTST][INF] CALLBACKs updated
[1612372708.50][HTST][INF] host test detected: default_auto
[1612372708.53][CONN][RXD] >>> Running 17 test cases...
[1612372708.59][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 5 args}}, queued...
[1612372708.64][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 4 args}}, queued...
[1612372708.68][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 3 args}}, queued...
[1612372708.73][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 2 args}}, queued...
[1612372708.79][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 1 args}}, queued...
[1612372708.83][CONN][INF] found KV pair in stream: {{__testcase_name;Testing calls with 0 args}}, queued...
[1612372708.87][CONN][INF] found KV pair in stream: {{__testcase_name;Testing call_in}}, queued...
[1612372708.91][CONN][INF] found KV pair in stream: {{__testcase_name;Testing call_every}}, queued...
[1612372708.96][CONN][INF] found KV pair in stream: {{__testcase_name;Testing allocate failure}}, queued...
[1612372709.00][CONN][INF] found KV pair in stream: {{__testcase_name;Testing event cancel 1}}, queued...
[1612372709.05][CONN][INF] found KV pair in stream: {{__testcase_name;Testing the event class}}, queued...
[1612372709.11][CONN][INF] found KV pair in stream: {{__testcase_name;Testing the event class helpers}}, queued...
[1612372709.15][CONN][INF] found KV pair in stream: {{__testcase_name;Testing the event inference}}, queued...
[1612372709.20][CONN][INF] found KV pair in stream: {{__testcase_name;Testing time_left}}, queued...
[1612372709.26][CONN][INF] found KV pair in stream: {{__testcase_name;Testing mixed dynamic & static events queue}}, queued...
[1612372709.31][CONN][INF] found KV pair in stream: {{__testcase_name;Testing static events queue}}, queued...
[1612372709.37][CONN][RXD]
[1612372709.37][CONN][INF] found KV pair in stream: {{__testcase_name;Testing event period values}}, queued...
[1612372709.42][CONN][RXD] >>> Running case #1: 'Testing calls with 5 args'...
[1612372709.47][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 5 args}}, queued...
[1612372709.52][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 5 args;1;0}}, queued...
[1612372709.58][CONN][RXD] >>> 'Testing calls with 5 args': 1 passed, 0 failed
[1612372709.59][CONN][RXD]
[1612372709.63][CONN][RXD] >>> Running case #2: 'Testing calls with 4 args'...
[1612372709.69][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 4 args}}, queued...
[1612372709.76][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 4 args;1;0}}, queued...
[1612372709.80][CONN][RXD] >>> 'Testing calls with 4 args': 1 passed, 0 failed
[1612372709.80][CONN][RXD]
[1612372709.85][CONN][RXD] >>> Running case #3: 'Testing calls with 3 args'...
[1612372709.90][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 3 args}}, queued...
[1612372709.96][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 3 args;1;0}}, queued...
[1612372710.01][CONN][RXD] >>> 'Testing calls with 3 args': 1 passed, 0 failed
[1612372710.01][CONN][RXD]
[1612372710.07][CONN][RXD] >>> Running case #4: 'Testing calls with 2 args'...
[1612372710.12][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 2 args}}, queued...
[1612372710.19][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 2 args;1;0}}, queued...
[1612372710.25][CONN][RXD] >>> 'Testing calls with 2 args': 1 passed, 0 failed
[1612372710.25][CONN][RXD]
[1612372710.28][CONN][RXD] >>> Running case #5: 'Testing calls with 1 args'...
[1612372710.34][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 1 args}}, queued...
[1612372710.40][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 1 args;1;0}}, queued...
[1612372710.44][CONN][RXD] >>> 'Testing calls with 1 args': 1 passed, 0 failed
[1612372710.44][CONN][RXD]
[1612372710.51][CONN][RXD] >>> Running case #6: 'Testing calls with 0 args'...
[1612372710.55][CONN][INF] found KV pair in stream: {{__testcase_start;Testing calls with 0 args}}, queued...
[1612372710.61][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing calls with 0 args;1;0}}, queued...
[1612372710.66][CONN][RXD] >>> 'Testing calls with 0 args': 1 passed, 0 failed
[1612372710.66][CONN][RXD]
[1612372710.71][CONN][RXD] >>> Running case #7: 'Testing call_in'...
[1612372710.75][CONN][INF] found KV pair in stream: {{__testcase_start;Testing call_in}}, queued...
[1612372712.78][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing call_in;1;0}}, queued...
[1612372712.84][CONN][RXD] >>> 'Testing call_in': 1 passed, 0 failed
[1612372712.84][CONN][RXD]
[1612372712.88][CONN][RXD] >>> Running case #8: 'Testing call_every'...
[1612372712.93][CONN][INF] found KV pair in stream: {{__testcase_start;Testing call_every}}, queued...
[1612372714.97][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing call_every;1;0}}, queued...
[1612372715.02][CONN][RXD] >>> 'Testing call_every': 1 passed, 0 failed
[1612372715.02][CONN][RXD]
[1612372715.07][CONN][RXD] >>> Running case #9: 'Testing allocate failure'...
[1612372715.12][CONN][INF] found KV pair in stream: {{__testcase_start;Testing allocate failure}}, queued...
[1612372715.17][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing allocate failure;1;0}}, queued...
[1612372715.23][CONN][RXD] >>> 'Testing allocate failure': 1 passed, 0 failed
[1612372715.23][CONN][RXD]
[1612372715.28][CONN][RXD] >>> Running case #10: 'Testing event cancel 1'...
[1612372715.33][CONN][INF] found KV pair in stream: {{__testcase_start;Testing event cancel 1}}, queued...
[1612372715.38][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing event cancel 1;1;0}}, queued...
[1612372715.42][CONN][RXD] >>> 'Testing event cancel 1': 1 passed, 0 failed
[1612372715.42][CONN][RXD]
[1612372715.48][CONN][RXD] >>> Running case #11: 'Testing the event class'...
[1612372715.53][CONN][INF] found KV pair in stream: {{__testcase_start;Testing the event class}}, queued...
[1612372715.59][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing the event class;1;0}}, queued...
[1612372715.64][CONN][RXD] >>> 'Testing the event class': 1 passed, 0 failed
[1612372715.64][CONN][RXD]
[1612372715.70][CONN][RXD] >>> Running case #12: 'Testing the event class helpers'...
[1612372715.76][CONN][INF] found KV pair in stream: {{__testcase_start;Testing the event class helpers}}, queued...
[1612372715.81][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing the event class helpers;1;0}}, queued...
[1612372715.88][CONN][RXD] >>> 'Testing the event class helpers': 1 passed, 0 failed
[1612372715.88][CONN][RXD]
[1612372715.93][CONN][RXD] >>> Running case #13: 'Testing the event inference'...
[1612372716.00][CONN][INF] found KV pair in stream: {{__testcase_start;Testing the event inference}}, queued...
[1612372716.06][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing the event inference;1;0}}, queued...
[1612372716.10][CONN][RXD] >>> 'Testing the event inference': 1 passed, 0 failed
[1612372716.10][CONN][RXD]
[1612372716.16][CONN][RXD] >>> Running case #14: 'Testing time_left'...
[1612372716.21][CONN][INF] found KV pair in stream: {{__testcase_start;Testing time_left}}, queued...
[1612372716.55][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing time_left;1;0}}, queued...
[1612372716.61][CONN][RXD] >>> 'Testing time_left': 1 passed, 0 failed
[1612372716.61][CONN][RXD]
[1612372716.67][CONN][RXD] >>> Running case #15: 'Testing mixed dynamic & static events queue'...
[1612372716.74][CONN][INF] found KV pair in stream: {{__testcase_start;Testing mixed dynamic & static events queue}}, queued...
[1612372716.91][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing mixed dynamic & static events queue;1;0}}, queued...
[1612372716.98][CONN][RXD] >>> 'Testing mixed dynamic & static events queue': 1 passed, 0 failed
[1612372716.98][CONN][RXD]
[1612372717.04][CONN][RXD] >>> Running case #16: 'Testing static events queue'...
[1612372717.09][CONN][INF] found KV pair in stream: {{__testcase_start;Testing static events queue}}, queued...
[1612372717.54][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing static events queue;1;0}}, queued...
[1612372717.60][CONN][RXD] >>> 'Testing static events queue': 1 passed, 0 failed
[1612372717.61][CONN][RXD]
[1612372717.66][CONN][RXD] >>> Running case #17: 'Testing event period values'...
[1612372717.72][CONN][INF] found KV pair in stream: {{__testcase_start;Testing event period values}}, queued...
[1612372718.49][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing event period values;1;0}}, queued...
[1612372718.54][CONN][RXD] >>> 'Testing event period values': 1 passed, 0 failed
[1612372718.55][CONN][RXD]
[1612372718.58][CONN][RXD] >>> Test cases: 17 passed, 0 failed
[1612372718.61][CONN][INF] found KV pair in stream: {{__testcase_summary;17;0}}, queued...
[1612372718.62][CONN][INF] found KV pair in stream: {{end;success}}, queued...
[1612372718.63][HTST][INF] __notify_complete(True)
[1612372718.63][HTST][INF] __exit_event_queue received
[1612372718.63][HTST][INF] test suite run finished after 10.15 sec...
[1612372718.65][CONN][INF] found KV pair in stream: {{__exit;0}}, queued...
[1612372718.65][CONN][INF] received special event '__host_test_finished' value='True', finishing
[1612372718.70][HTST][INF] CONN exited with code: 0
[1612372718.70][HTST][INF] Some events in queue
[1612372718.70][HTST][INF] stopped consuming events
[1612372718.70][HTST][INF] host test result() call skipped, received: True
[1612372718.70][HTST][WRN] missing __exit event from DUT
[1612372718.70][HTST][INF] calling blocking teardown()
[1612372718.70][HTST][INF] teardown() finished
[1612372718.70][HTST][INF] {{result;success}}
mbedgt: checking for GCOV data...
mbedgt: mbed-host-test-runner: stopped and returned 'OK'
mbedgt: test on hardware with target id: 0240000034544e45000800048e3800265a91000097969900
mbedgt: test suite 'events-tests-tests-events-queue' ................................................. OK in 29.74 sec
	test case: 'Testing allocate failure' ........................................................ OK in 0.05 sec
	test case: 'Testing call_every' .............................................................. OK in 2.04 sec
	test case: 'Testing call_in' ................................................................. OK in 2.03 sec
	test case: 'Testing calls with 0 args' ....................................................... OK in 0.06 sec
	test case: 'Testing calls with 1 args' ....................................................... OK in 0.06 sec
	test case: 'Testing calls with 2 args' ....................................................... OK in 0.07 sec
	test case: 'Testing calls with 3 args' ....................................................... OK in 0.06 sec
	test case: 'Testing calls with 4 args' ....................................................... OK in 0.07 sec
	test case: 'Testing calls with 5 args' ....................................................... OK in 0.05 sec
	test case: 'Testing event cancel 1' .......................................................... OK in 0.05 sec
	test case: 'Testing event period values' ..................................................... OK in 0.77 sec
	test case: 'Testing mixed dynamic & static events queue' ..................................... OK in 0.17 sec
	test case: 'Testing static events queue' ..................................................... OK in 0.45 sec
	test case: 'Testing the event class' ......................................................... OK in 0.06 sec
	test case: 'Testing the event class helpers' ................................................. OK in 0.05 sec
	test case: 'Testing the event inference' ..................................................... OK in 0.06 sec
	test case: 'Testing time_left' ............................................................... OK in 0.34 sec
mbedgt: test case summary: 17 passes, 0 failures
mbedgt: all tests finished!
mbedgt: shuffle seed: 0.2798898522
mbedgt: test suite report:
| target       | platform_name | test suite                      | result | elapsed_time (sec) | copy_method |
|--------------|---------------|---------------------------------|--------|--------------------|-------------|
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | OK     | 29.74              | default     |
mbedgt: test suite results: 1 OK
mbedgt: test case report:
| target       | platform_name | test suite                      | test case                                   | passed | failed | result | elapsed_time (sec) |
|--------------|---------------|---------------------------------|---------------------------------------------|--------|--------|--------|--------------------|
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing allocate failure                    | 1      | 0      | OK     | 0.05               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing call_every                          | 1      | 0      | OK     | 2.04               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing call_in                             | 1      | 0      | OK     | 2.03               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 0 args                   | 1      | 0      | OK     | 0.06               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 1 args                   | 1      | 0      | OK     | 0.06               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 2 args                   | 1      | 0      | OK     | 0.07               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 3 args                   | 1      | 0      | OK     | 0.06               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 4 args                   | 1      | 0      | OK     | 0.07               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing calls with 5 args                   | 1      | 0      | OK     | 0.05               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing event cancel 1                      | 1      | 0      | OK     | 0.05               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing event period values                 | 1      | 0      | OK     | 0.77               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing mixed dynamic & static events queue | 1      | 0      | OK     | 0.17               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing static events queue                 | 1      | 0      | OK     | 0.45               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing the event class                     | 1      | 0      | OK     | 0.06               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing the event class helpers             | 1      | 0      | OK     | 0.05               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing the event inference                 | 1      | 0      | OK     | 0.06               |
| K64F-GCC_ARM | K64F          | events-tests-tests-events-queue | Testing time_left                           | 1      | 0      | OK     | 0.34               |
mbedgt: test case results: 17 OK
mbedgt: completed in 30.35 sec

@adbridge
Copy link
Contributor Author

adbridge commented Feb 4, 2021

@evedon please re-review

Copy link
Contributor

@evedon evedon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.
In the PR description you wrote "Note without this fix EventQueue dispatch function is actually broken." : Can you give more details on what is broken?

@mergify mergify bot added needs: CI and removed needs: review labels Feb 5, 2021
@adbridge
Copy link
Contributor Author

adbridge commented Feb 5, 2021

Looks good.
In the PR description you wrote "Note without this fix EventQueue dispatch function is actually broken." : Can you give more details on what is broken?

Difficult to be precise as I saw a variety of effects depending on what values were provided. These ranged from just hanging without actually dispatching the event to core dumping the chip. I can certainly add that.

@ciarmcom
Copy link
Member

ciarmcom commented Feb 7, 2021

This pull request has automatically been marked as stale because it has had no recent activity. @ARMmbed/mbed-os-maintainers, please start CI to get the PR merged.

@ciarmcom ciarmcom added the stale Stale Pull Request label Feb 7, 2021
@adbridge
Copy link
Contributor Author

adbridge commented Feb 8, 2021

CI started

@mbed-ci
Copy link

mbed-ci commented Feb 8, 2021

Jenkins CI Test : ✔️ SUCCESS

Build Number: 1 | 🔒 Jenkins CI Job | 🌐 Logs & Artifacts

CLICK for Detailed Summary

jobs Status
jenkins-ci/mbed-os-ci_unittests ✔️
jenkins-ci/mbed-os-ci_cmake-example-ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-test ✔️
jenkins-ci/mbed-os-ci_greentea-test ✔️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants