Changed the behaviour of the _change counters for liveliness events and changed the tests accordingly.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
This commit is contained in:
parent
827fb76cf4
commit
9ae8af8254
4 changed files with 33 additions and 18 deletions
|
@ -253,25 +253,26 @@ void dds_reader_status_cb (void *ventity, const status_cb_data_t *data)
|
||||||
st->not_alive_count_change++;
|
st->not_alive_count_change++;
|
||||||
break;
|
break;
|
||||||
case LIVELINESS_CHANGED_REMOVE_NOT_ALIVE:
|
case LIVELINESS_CHANGED_REMOVE_NOT_ALIVE:
|
||||||
|
st->not_alive_count--;
|
||||||
|
st->not_alive_count_change--;
|
||||||
break;
|
break;
|
||||||
case LIVELINESS_CHANGED_REMOVE_ALIVE:
|
case LIVELINESS_CHANGED_REMOVE_ALIVE:
|
||||||
st->alive_count--;
|
st->alive_count--;
|
||||||
st->not_alive_count++;
|
st->alive_count_change--;
|
||||||
st->not_alive_count_change++;
|
|
||||||
break;
|
break;
|
||||||
case LIVELINESS_CHANGED_ALIVE_TO_NOT_ALIVE:
|
case LIVELINESS_CHANGED_ALIVE_TO_NOT_ALIVE:
|
||||||
st->alive_count--;
|
st->alive_count--;
|
||||||
|
st->alive_count_change--;
|
||||||
st->not_alive_count++;
|
st->not_alive_count++;
|
||||||
st->not_alive_count_change++;
|
st->not_alive_count_change++;
|
||||||
break;
|
break;
|
||||||
case LIVELINESS_CHANGED_NOT_ALIVE_TO_ALIVE:
|
case LIVELINESS_CHANGED_NOT_ALIVE_TO_ALIVE:
|
||||||
st->not_alive_count--;
|
st->not_alive_count--;
|
||||||
|
st->not_alive_count_change--;
|
||||||
st->alive_count++;
|
st->alive_count++;
|
||||||
st->alive_count_change++;
|
st->alive_count_change++;
|
||||||
break;
|
break;
|
||||||
case LIVELINESS_CHANGED_TWITCH:
|
case LIVELINESS_CHANGED_TWITCH:
|
||||||
st->alive_count_change++;
|
|
||||||
st->not_alive_count_change++;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
st->last_publication_handle = data->handle;
|
st->last_publication_handle = data->handle;
|
||||||
|
|
|
@ -360,9 +360,9 @@ CU_Test(ddsc_entity, liveliness_changed, .init=init_entity_status, .fini=fini_en
|
||||||
ret = dds_get_liveliness_changed_status (rea, &liveliness_changed);
|
ret = dds_get_liveliness_changed_status (rea, &liveliness_changed);
|
||||||
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, -1);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 1);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change,1);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change,0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_i_hdl);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_i_hdl);
|
||||||
|
|
||||||
/* Second call should reset the changed count. */
|
/* Second call should reset the changed count. */
|
||||||
|
@ -370,7 +370,7 @@ CU_Test(ddsc_entity, liveliness_changed, .init=init_entity_status, .fini=fini_en
|
||||||
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 1);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change,0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change,0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_i_hdl);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_i_hdl);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1196,9 +1196,9 @@ CU_Test(ddsc_listener, liveliness_changed, .init=init_triggering_test, .fini=fin
|
||||||
CU_ASSERT_EQUAL_FATAL(triggered & DDS_LIVELINESS_CHANGED_STATUS, DDS_LIVELINESS_CHANGED_STATUS);
|
CU_ASSERT_EQUAL_FATAL(triggered & DDS_LIVELINESS_CHANGED_STATUS, DDS_LIVELINESS_CHANGED_STATUS);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_reader, g_reader);
|
CU_ASSERT_EQUAL_FATAL(cb_reader, g_reader);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.alive_count, 0);
|
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.alive_count_change, 0);
|
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.alive_count_change, -1);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.not_alive_count, 1);
|
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.not_alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.not_alive_count_change, 1);
|
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.not_alive_count_change, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.last_publication_handle, writer_hdl);
|
CU_ASSERT_EQUAL_FATAL(cb_liveliness_changed_status.last_publication_handle, writer_hdl);
|
||||||
|
|
||||||
/* The listener should have reset the count_change. */
|
/* The listener should have reset the count_change. */
|
||||||
|
@ -1206,7 +1206,7 @@ CU_Test(ddsc_listener, liveliness_changed, .init=init_triggering_test, .fini=fin
|
||||||
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.alive_count_change, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 1);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change, 0);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.not_alive_count_change, 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_hdl);
|
CU_ASSERT_EQUAL_FATAL(liveliness_changed.last_publication_handle, writer_hdl);
|
||||||
}
|
}
|
||||||
|
|
|
@ -530,7 +530,7 @@ CU_Test(ddsc_liveliness, create_delete_writer_stress, .init = liveliness_init, .
|
||||||
dds_entity_t waitset;
|
dds_entity_t waitset;
|
||||||
dds_qos_t *wqos;
|
dds_qos_t *wqos;
|
||||||
struct dds_liveliness_changed_status lstatus;
|
struct dds_liveliness_changed_status lstatus;
|
||||||
uint32_t wr_cnt = 0;
|
uint32_t alive_writers_auto = 0, alive_writers_man = 0;
|
||||||
char name[100];
|
char name[100];
|
||||||
dds_qos_t *rqos;
|
dds_qos_t *rqos;
|
||||||
dds_attach_t triggered;
|
dds_attach_t triggered;
|
||||||
|
@ -556,6 +556,7 @@ CU_Test(ddsc_liveliness, create_delete_writer_stress, .init = liveliness_init, .
|
||||||
dds_qset_liveliness(wqos, DDS_LIVELINESS_MANUAL_BY_PARTICIPANT, DDS_MSECS (500));
|
dds_qset_liveliness(wqos, DDS_LIVELINESS_MANUAL_BY_PARTICIPANT, DDS_MSECS (500));
|
||||||
CU_ASSERT_FATAL((writers[0] = dds_create_writer(g_pub_participant, pub_topic, wqos, NULL)) > 0);
|
CU_ASSERT_FATAL((writers[0] = dds_create_writer(g_pub_participant, pub_topic, wqos, NULL)) > 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_waitset_wait(waitset, &triggered, 1, DDS_MSECS(1000)), 1);
|
CU_ASSERT_EQUAL_FATAL(dds_waitset_wait(waitset, &triggered, 1, DDS_MSECS(1000)), 1);
|
||||||
|
alive_writers_man++;
|
||||||
|
|
||||||
/* create writers */
|
/* create writers */
|
||||||
for (n = 1; n < MAX_WRITERS; n++)
|
for (n = 1; n < MAX_WRITERS; n++)
|
||||||
|
@ -565,24 +566,37 @@ CU_Test(ddsc_liveliness, create_delete_writer_stress, .init = liveliness_init, .
|
||||||
dds_write (writers[n], &sample);
|
dds_write (writers[n], &sample);
|
||||||
if (n % 3 == 2)
|
if (n % 3 == 2)
|
||||||
dds_delete(writers[n]);
|
dds_delete(writers[n]);
|
||||||
|
else if (n % 2)
|
||||||
|
alive_writers_auto++;
|
||||||
|
else
|
||||||
|
alive_writers_man++;
|
||||||
}
|
}
|
||||||
dds_delete_qos(wqos);
|
dds_delete_qos(wqos);
|
||||||
|
printf("alive_writers_auto: %d, alive_writers_man: %d\n", alive_writers_auto, alive_writers_man);
|
||||||
|
|
||||||
/* wait for all writers to become alive */
|
/* wait for auto liveliness writers to become alive and manual-by-pp writers to become not-alive */
|
||||||
while (wr_cnt < MAX_WRITERS)
|
do
|
||||||
{
|
{
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_get_liveliness_changed_status (reader, &lstatus), DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(dds_get_liveliness_changed_status (reader, &lstatus), DDS_RETCODE_OK);
|
||||||
wr_cnt += (uint32_t)lstatus.alive_count_change;
|
printf("alive: %d, not-alive: %d\n", lstatus.alive_count, lstatus.not_alive_count);
|
||||||
dds_sleepfor (DDS_MSECS(50));
|
dds_sleepfor (DDS_MSECS(50));
|
||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL_FATAL (wr_cnt, MAX_WRITERS);
|
while (lstatus.alive_count != alive_writers_auto || lstatus.not_alive_count != alive_writers_man);
|
||||||
|
|
||||||
/* cleanup remaining writers */
|
/* cleanup remaining writers */
|
||||||
for (n = 0; n < wr_cnt; n++)
|
for (n = 0; n < MAX_WRITERS; n++)
|
||||||
{
|
{
|
||||||
if (n % 3 != 2)
|
if (n % 3 != 2)
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_delete(writers[n]), DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(dds_delete(writers[n]), DDS_RETCODE_OK);
|
||||||
}
|
}
|
||||||
|
/* wait for alive_count and not_alive_count to become 0 */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
CU_ASSERT_EQUAL_FATAL(dds_get_liveliness_changed_status (reader, &lstatus), DDS_RETCODE_OK);
|
||||||
|
printf("alive: %d, not: %d\n", lstatus.alive_count, lstatus.not_alive_count);
|
||||||
|
dds_sleepfor (DDS_MSECS(50));
|
||||||
|
}
|
||||||
|
while (lstatus.alive_count > 0 || lstatus.not_alive_count > 0);
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_waitset_detach(waitset, reader), DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(dds_waitset_detach(waitset, reader), DDS_RETCODE_OK);
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_delete(waitset), DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(dds_delete(waitset), DDS_RETCODE_OK);
|
||||||
CU_ASSERT_EQUAL_FATAL(dds_delete(reader), DDS_RETCODE_OK);
|
CU_ASSERT_EQUAL_FATAL(dds_delete(reader), DDS_RETCODE_OK);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue