osmux: Test cid allocation and de-allocation
* Test that one can get an id * That they are assigned predicatble right now * That returning them will make the number of used ones go down * That allocating more will fail
This commit is contained in:
parent
2aedfbdfe1
commit
641d387409
|
@ -22,6 +22,7 @@ int osmux_send_dummy(struct mgcp_endpoint *endp);
|
|||
|
||||
int osmux_get_cid(void);
|
||||
void osmux_put_cid(uint8_t osmux_cid);
|
||||
int osmux_used_cid(void);
|
||||
|
||||
enum osmux_state {
|
||||
OSMUX_STATE_DISABLED = 0,
|
||||
|
|
|
@ -532,6 +532,20 @@ int osmux_send_dummy(struct mgcp_endpoint *endp)
|
|||
/* bsc-nat allocates/releases the Osmux circuit ID */
|
||||
static uint8_t osmux_cid_bitmap[16];
|
||||
|
||||
int osmux_used_cid(void)
|
||||
{
|
||||
int i, j, used = 0;
|
||||
|
||||
for (i = 0; i < sizeof(osmux_cid_bitmap) / 8; i++) {
|
||||
for (j = 0; j < 8; j++) {
|
||||
if (osmux_cid_bitmap[i] & (1 << j))
|
||||
used += 1;
|
||||
}
|
||||
}
|
||||
|
||||
return used;
|
||||
}
|
||||
|
||||
int osmux_get_cid(void)
|
||||
{
|
||||
int i, j;
|
||||
|
|
|
@ -1175,6 +1175,31 @@ static void test_no_name(void)
|
|||
talloc_free(cfg);
|
||||
}
|
||||
|
||||
static void test_osmux_cid(void)
|
||||
{
|
||||
int id, i;
|
||||
|
||||
OSMO_ASSERT(osmux_used_cid() == 0);
|
||||
id = osmux_get_cid();
|
||||
OSMO_ASSERT(id == 0);
|
||||
OSMO_ASSERT(osmux_used_cid() == 1);
|
||||
osmux_put_cid(id);
|
||||
OSMO_ASSERT(osmux_used_cid() == 0);
|
||||
|
||||
for (i = 0; i < 16; ++i) {
|
||||
id = osmux_get_cid();
|
||||
OSMO_ASSERT(id == i);
|
||||
OSMO_ASSERT(osmux_used_cid() == i + 1);
|
||||
}
|
||||
|
||||
id = osmux_get_cid();
|
||||
OSMO_ASSERT(id == -1);
|
||||
|
||||
for (i = 0; i < 256; ++i)
|
||||
osmux_put_cid(i);
|
||||
OSMO_ASSERT(osmux_used_cid() == 0);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
osmo_init_logging(&log_info);
|
||||
|
@ -1193,6 +1218,7 @@ int main(int argc, char **argv)
|
|||
test_multilple_codec();
|
||||
test_no_cycle();
|
||||
test_no_name();
|
||||
test_osmux_cid();
|
||||
|
||||
printf("Done\n");
|
||||
return EXIT_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue