@@ -23,18 +23,21 @@ ZTEST(publish_stats, test_channel_metadata)
2323 zassert_equal (0 , zbus_chan_pub_stats_count (& chan ));
2424 zassert_equal (0 , zbus_chan_pub_stats_last_time (& chan ));
2525 zassert_equal (0 , zbus_chan_pub_stats_avg_period (& chan ));
26+ zassert_equal (UINT64_MAX , zbus_chan_pub_stats_msg_age (& chan ));
2627
2728 /* Should be no different after a second of runtime */
2829 k_sleep (K_TIMEOUT_ABS_MS (1000 ));
2930 zassert_equal (0 , zbus_chan_pub_stats_count (& chan ));
3031 zassert_equal (0 , zbus_chan_pub_stats_last_time (& chan ));
3132 zassert_equal (0 , zbus_chan_pub_stats_avg_period (& chan ));
33+ zassert_equal (UINT64_MAX , zbus_chan_pub_stats_msg_age (& chan ));
3234
3335 /* Normal publish */
3436 zassert_equal (0 , zbus_chan_pub (& chan , & val , K_NO_WAIT ));
3537 zassert_equal (1 , zbus_chan_pub_stats_count (& chan ));
3638 zassert_within (k_uptime_ticks (), zbus_chan_pub_stats_last_time (& chan ), clock_window );
3739 zassert_within (1000 , zbus_chan_pub_stats_avg_period (& chan ), 50 );
40+ zassert_equal (0 , zbus_chan_pub_stats_msg_age (& chan ));
3841
3942 /* Push 4 times in quick succession, wait for 2 second boundary */
4043 for (int i = 0 ; i < 4 ; i ++ ) {
@@ -45,24 +48,28 @@ ZTEST(publish_stats, test_channel_metadata)
4548 zassert_equal (5 , zbus_chan_pub_stats_count (& chan ));
4649 zassert_within (pub_time , zbus_chan_pub_stats_last_time (& chan ), clock_window );
4750 zassert_within (400 , zbus_chan_pub_stats_avg_period (& chan ), 50 );
51+ zassert_within (1000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
4852
4953 /* Channel claim and finish does not update metadata by default */
5054 zassert_equal (0 , zbus_chan_claim (& chan , K_NO_WAIT ));
5155 zassert_equal (0 , zbus_chan_finish (& chan ));
56+ zassert_within (1000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
5257
5358 zassert_equal (0 , zbus_chan_claim (& chan , K_NO_WAIT ));
5459 cval = zbus_chan_msg (& chan );
5560 cval -> x = 1000 ;
5661 zassert_equal (0 , zbus_chan_finish (& chan ));
5762 zassert_equal (5 , zbus_chan_pub_stats_count (& chan ));
5863 zassert_within (pub_time , zbus_chan_pub_stats_last_time (& chan ), clock_window );
64+ zassert_within (1000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
5965
6066 /* Channel notify does not update metadata */
6167 for (int i = 0 ; i < 10 ; i ++ ) {
6268 zassert_equal (0 , zbus_chan_notify (& chan , K_NO_WAIT ));
6369 }
6470 zassert_equal (5 , zbus_chan_pub_stats_count (& chan ));
6571 zassert_within (pub_time , zbus_chan_pub_stats_last_time (& chan ), clock_window );
72+ zassert_within (1000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
6673
6774 /* Manually update publish statistics with claim */
6875 zassert_equal (0 , zbus_chan_claim (& chan , K_NO_WAIT ));
@@ -74,6 +81,10 @@ ZTEST(publish_stats, test_channel_metadata)
7481 zassert_equal (6 , zbus_chan_pub_stats_count (& chan ));
7582 zassert_within (pub_time , zbus_chan_pub_stats_last_time (& chan ), clock_window );
7683 zassert_within (500 , zbus_chan_pub_stats_avg_period (& chan ), 50 );
84+ zassert_within (1000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
85+
86+ k_sleep (K_TIMEOUT_ABS_MS (5000 ));
87+ zassert_within (3000 , zbus_chan_pub_stats_msg_age (& chan ), clock_window );
7788}
7889
7990ZTEST_SUITE (publish_stats , NULL , NULL , NULL , NULL , NULL );
0 commit comments