Ejemplo n.º 1
0
int main ( int argc, const char **argv )
{
    int r = 1;
    if ( argc < 3 )
    {
        fprintf ( stderr, "usage:\n\t%s multicast_address multicast_service (interface)\n", argv[0] );
        fprintf ( stderr, "example:\n\t%s ff31::8000:1234 30001\n", argv[0] );
        exit ( 1 );
    }
    if ( us_testutil_start ( 4096, 4096, argc, argv ) )
    {
        const char *multicast_address = argv[1];
        const char *multicast_service = argv[2];
        const char *interface = "";
        if ( argc > 3 )
            interface = argv[3];
#if US_ENABLE_LOGGING
        us_logger_printer_start ( us_testutil_printer_stdout, us_testutil_printer_stderr );
#endif
        us_log_set_level ( US_LOG_LEVEL_DEBUG );
        us_log_info ( "Hello world from %s compiled on %s", __FILE__, __DATE__ );
        if ( us_example_mudp_rx ( multicast_address, multicast_service, interface ) )
            r = 0;
        us_log_info ( "Finishing %s", argv[0] );
        us_logger_finish();
        us_testutil_finish();
    }
    return r;
}
Ejemplo n.º 2
0
bool us_test_getopt( int US_UNUSED( argc ), const char **argv )
{
    bool r = false;
    us_allocator_t *allocator = us_testutil_sys_allocator;
    if ( us_getopt_init( &opt, allocator ) )
    {
        r = true;
        r &= us_getopt_add_list( &opt, log_options, "log", "Logging options" );
        r &= us_getopt_add_list( &opt, control_options, "control", "Control Options" );
        r &= us_getopt_fill_defaults( &opt );
        if ( r )
        {
            if ( !us_getopt_parse_args( &opt, argv + 1 ) )
            {
                us_getopt_print( &opt, us_testutil_printer_stdout );
            }
        }
        us_log_info( "Log Level is %d", log_level );
        us_log_info( "Greeting is %s", control_greeting );
        us_log_info( "Name is %s", control_name );
        us_log_info( "Mac addr is %02x:%02x:%02x:%02x:%02x:%02x",
                     mac_addr[0],
                     mac_addr[1],
                     mac_addr[2],
                     mac_addr[3],
                     mac_addr[4],
                     mac_addr[5] );
        us_getopt_destroy( &opt );
    }
    return r;
}
static bool us_test_packet_queue(us_allocator_t *a) {
    bool r = false;
    us_packet_queue_t *q = us_packet_queue_create(a, 8, 512);
    if (q) {
        us_packet_t *p;
        const us_packet_t *p1;
        int k;

        for (k = 0; k < 10; ++k) {
            int i;
            FAIL_IF(!us_packet_queue_is_empty(q));
            FAIL_IF(!us_packet_queue_can_write(q));
            FAIL_IF(us_packet_queue_can_read(q));
            for (i = 0; i < 6; ++i) {
                us_log_info("w%d in:%d out:%d", i, q->m_next_in, q->m_next_out);
                p = us_packet_queue_get_next_in(q);
                FAIL_IF(p == 0);
                p->m_data[0] = i;
                us_packet_queue_next_in(q);
                FAIL_IF(us_packet_queue_is_empty(q));
                FAIL_IF(!us_packet_queue_can_write(q));
                FAIL_IF(!us_packet_queue_can_read(q));
            }
            us_log_info("w%d in:%d out:%d", 6, q->m_next_in, q->m_next_out);
            p = us_packet_queue_get_next_in(q);
            FAIL_IF(p == 0);
            p->m_data[0] = 6;
            us_packet_queue_next_in(q);
            FAIL_IF(us_packet_queue_is_empty(q));
            FAIL_IF(us_packet_queue_can_write(q));
            FAIL_IF(!us_packet_queue_can_read(q));

            for (i = 0; i < 6; ++i) {
                us_log_info("r%d in:%d out:%d", i, q->m_next_in, q->m_next_out);
                p1 = us_packet_queue_get_next_out(q);
                FAIL_IF(p1 == 0);
                FAIL_IF(p1->m_data[0] != i);
                us_packet_queue_next_out(q);
                FAIL_IF(us_packet_queue_is_empty(q));
                FAIL_IF(!us_packet_queue_can_write(q));
                FAIL_IF(!us_packet_queue_can_read(q));
            }
            us_log_info("r%d in:%d out:%d", 6, q->m_next_in, q->m_next_out);
            p1 = us_packet_queue_get_next_out(q);
            FAIL_IF(p1 == 0);
            FAIL_IF(p1->m_data[0] != 6);
            us_packet_queue_next_out(q);
            FAIL_IF(!us_packet_queue_is_empty(q));
            FAIL_IF(!us_packet_queue_can_write(q));
            FAIL_IF(us_packet_queue_can_read(q));
        }

        r = true;
    }
error:
    return r;
}
Ejemplo n.º 4
0
static bool
us_test_trie_schema_dispatch(us_trie_t *trie, const char *address, const char *types, void *value1, void *US_UNUSED(value2)) {
    bool r = false;
    us_trie_node_flags_t flags;
    int16_t match_len;
    us_trie_node_id_t match_item;
    if (us_trie_find(trie, (us_trie_node_value_t *)address, strlen(address), &flags, &match_len, &match_item, 0, 0)) {
        us_test_trie_schema_entry_t *entry = &us_test_trie_schema[flags];
        if (types[0] == '\0') {
            us_test_trie_schema_value_t *param = entry->m_params[0];
            if (entry->read_proc) {
                r = entry->read_proc(entry);
            }
            if (param && param->m_type == 's' && param->m_data != 0) {
                us_log_info("Read type s, value: %s", param->m_data);
            }
        }
        if (types[0] == 's') {
            us_test_trie_schema_value_t *param = entry->m_params[0];
            if (param && param->m_rw == US_RW && param->m_type == 's' && param->m_data != 0) {
                if ((int)strlen((const char *)value1) < (int)(param->m_data_len - 1)) {
                    strcpy((char *)param->m_data, (const char *)value1);
                    if (entry->write_proc) {
                        r = entry->write_proc(entry);
                    }
                }
            }
        }
    }
    return r;
}
Ejemplo n.º 5
0
static bool us_test_trie_2(void) {
    bool r = false;
    us_trie_dyn_t *trie;
    us_log_info("us_test_trie_2");
    trie = us_trie_dyn_create(us_testutil_sys_allocator,
                              128,
                              us_trie_basic_ignorer,
                              us_trie_basic_ignorer,
                              us_trie_basic_db_skip,
                              us_trie_basic_comparator);
    if (trie) {
        int item = 0;
        us_test_trie_schema_entry_t *cur = &us_test_trie_schema[0];
        while (cur && cur->m_address != 0) {
            us_trie_add(
                &trie->m_base, (us_trie_node_value_t *)cur->m_address, strlen(cur->m_address), (us_trie_node_flags_t)item);
            item++;
            cur++;
        }
        r = true;
        r &= us_test_trie_schema_dispatch(&trie->m_base, "/device/name", "", 0, 0);
        r &= us_test_trie_schema_dispatch(&trie->m_base, "/device/system", "s", (void *)"new system name", 0);
        r &= us_test_trie_schema_dispatch(&trie->m_base, "/device/name", "s", (void *)"new device name", 0);
        r &= us_test_trie_schema_dispatch(&trie->m_base, "/device/system", "", 0, 0);
        trie->destroy(trie);
    }
    return r;
}
int us_test_packet_queue_main(int argc, const char **argv) {
    int r = 1;
    if (us_testutil_start(20480, 20480, argc, argv)) {
#if US_ENABLE_LOGGING
        us_logger_printer_start(us_testutil_printer_stdout, us_testutil_printer_stderr);
#endif
        us_log_set_level(US_LOG_LEVEL_DEBUG);
        us_log_info("Hello world from %s compiled on %s", __FILE__, __DATE__);
        if (us_test_packet_queue(us_testutil_sys_allocator))
            r = 0;
        us_log_info("Finishing us_test_packet_queue");
        us_logger_finish();
        us_testutil_finish();
    }
    return r;
}
static bool us_test_osc_dispatch_test1_setup( us_allocator_t *allocator, us_osc_dispatch_t *osc_dispatch )
{
    bool r = false;
    if ( us_osc_dispatch_init( osc_dispatch, allocator, 1024, 8192 ) )
    {
        char s[64];
        int mt, ch;
        us_osc_dispatch_index_t index;
        us_osc_dispatch_index_init( &index );
        r = true;
        for ( mt = 0; mt < 2 && r == true; ++mt )
        {
            index.axis[0] = mt;
            for ( ch = 0; ch < 64 && r == true; ++ch )
            {
                index.axis[1] = ch;
                sprintf( s, "/media/%s/%d", media_type[index.axis[0]], ch + 1 );
                us_testutil_printer_stdout->printf( us_testutil_printer_stdout, "Adding address '%s'\n", s );
                r &= us_osc_dispatch_add_table( osc_dispatch, s, us_test_osc_dispatch_media_table, &index );
            }
        }
        us_log_info( "trie uses %d nodes", osc_dispatch->trie->m_base.m_num_nodes );
    }
    if ( !r )
    {
        osc_dispatch->destroy( osc_dispatch );
    }
    return r;
}
Ejemplo n.º 8
0
bool us_example_mudp_rx (
    const char *multicast_address,
    const char *multicast_service,
    const char *interface
)
{
    int fd;
    bool r = false;
    struct addrinfo *multicastgroup;
    multicastgroup = us_net_get_addrinfo ( multicast_address, multicast_service, SOCK_DGRAM, true );
    {
        char multicastgroup_name[1024];
        char multicastgroup_serv[256];
        if ( us_net_get_nameinfo ( multicastgroup, multicastgroup_name, sizeof ( multicastgroup_name ) - 1, multicastgroup_serv, sizeof ( multicastgroup_serv ) - 1 ) )
        {
            us_log_info ( "multicastgroup: %s port %s", multicastgroup_name, multicastgroup_serv );
        }
        else
        {
            perror ( "getnameinfo:" );
        }
    }
    fd = us_net_create_multicast_rx_udp_socket ( 0, multicastgroup, interface );
    if ( fd > 0 )
    {
        while ( 1 )
        {
            struct sockaddr_storage remote_addr;
            socklen_t remote_addr_len = sizeof ( remote_addr );
            char buf[2048];
            int len;
            len = recvfrom ( fd, buf, sizeof ( buf ), 0, ( struct sockaddr * ) &remote_addr, &remote_addr_len );
            if ( len > 0 )
            {
                us_log_info ( "got packet %d bytes", len );
            }
            else
            {
                perror ( "recvfrom:" );
                break;
            }
        }
    }
    return r;
}
Ejemplo n.º 9
0
int us_test_getopt_main( int argc, const char **argv )
{
    int r = 1;
    if ( us_testutil_start( 4096, 4096, argc, argv ) )
    {
#if US_ENABLE_LOGGING
        us_logger_printer_start( us_testutil_printer_stdout, us_testutil_printer_stderr );
#endif
        us_log_set_level( US_LOG_LEVEL_DEBUG );
        us_log_info( "Hello world from %s compiled on %s", __FILE__, __DATE__ );
        if ( us_test_getopt( argc, argv ) )
            r = 0;
        us_log_info( "Finishing us_test_getopt" );
        us_logger_finish();
        us_testutil_finish();
    }
    return r;
}
Ejemplo n.º 10
0
int us_test_trie_main(int argc, const char **argv) {
    int r = 1;
    if (us_testutil_start(8192, 8192, argc, argv)) {
#if US_ENABLE_LOGGING
        us_logger_printer_start(us_testutil_printer_stdout, us_testutil_printer_stderr);
#endif
        us_log_set_level(US_LOG_LEVEL_DEBUG);
        us_log_info("Hello world from %s compiled on %s", __FILE__, __DATE__);
        if (us_test_trie_1() && us_test_trie_2())
            r = 0;
        if (r != 0)
            us_log_error("Failed");
        us_log_info("Finishing %s", argv[0]);
        us_logger_finish();
        us_testutil_finish();
    }
    return r;
}
Ejemplo n.º 11
0
int us_test_allocator_main( int argc, const char **argv )
{
    int r = 1;
    if ( us_testutil_start( 2048, 2048, argc, argv ) )
    {
        char *b;
#if US_ENABLE_LOGGING
        us_logger_printer_start( us_testutil_printer_stdout, us_testutil_printer_stderr );
#endif
        us_log_set_level( US_LOG_LEVEL_DEBUG );
        us_log_info( "Hello world from %s compiled on %s", __FILE__, __DATE__ );
        b = (char *)us_testutil_sys_allocator->alloc( us_testutil_sys_allocator, 512, 1 );
        us_log_debug( "result from alloc of 512 bytes: %p", b );
        us_log_info( "Finishing us_test_allocator" );
        us_logger_finish();
        us_testutil_finish();
        r = 0;
    }
    return r;
}
Ejemplo n.º 12
0
static bool us_test_osc_dispatch_test1( void )
{
    bool r = false;
    us_osc_dispatch_t osc_dispatch;
    us_log_info( "us_test_osc_dispatch_test1 init" );
    if ( us_test_osc_dispatch_test1_setup( us_testutil_sys_allocator, &osc_dispatch ) )
    {
        r = us_test_osc_dispatch_test1_feed( us_testutil_session_allocator, &osc_dispatch );
        osc_dispatch.destroy( &osc_dispatch );
    }
    return r;
}
Ejemplo n.º 13
0
static bool us_test_trie_1(void) {
    bool r = true;
    us_trie_dyn_t *trie;
    us_log_info("us_test_trie_1");
    trie = us_trie_dyn_create(us_testutil_sys_allocator,
                              128,
                              us_trie_basic_ignorer,
                              us_trie_basic_ignorer,
                              us_trie_basic_db_skip,
                              us_trie_basic_comparator);
    if (trie) {
        const char *s;
        s = "/input/level/";
        us_trie_add(&trie->m_base, (us_trie_node_value_t *)s, strlen(s), (us_trie_node_flags_t)1);
        s = "/output/level/";
        us_trie_add(&trie->m_base, (us_trie_node_value_t *)s, strlen(s), (us_trie_node_flags_t)2);
        {
            us_trie_node_flags_t flags;
            int16_t match_len;
            us_trie_node_id_t match_item;
            s = "/output/level/";
            if (us_trie_find(&trie->m_base, (us_trie_node_value_t *)s, strlen(s), &flags, &match_len, &match_item, 0, 0)) {
                us_log_info("found '%s' len %d flags %d", s, match_len, flags);
            } else {
                us_log_info("did not find '%s'", s);
                r = false;
            }
            s = "/input/level/";
            if (us_trie_find(&trie->m_base, (us_trie_node_value_t *)s, strlen(s), &flags, &match_len, &match_item, 0, 0)) {
                us_log_info("found '%s' len %d flags %d", s, match_len, flags);
            } else {
                us_log_info("did not find '%s'", s);
                r = false;
            }
        }
        trie->destroy(trie);
    }
    return r;
}
Ejemplo n.º 14
0
int us_test_osc_dispatch_main( int argc, const char **argv )
{
    bool r = true;
    r = us_testutil_start( 81920, 8192, argc, argv );
    if ( r )
    {
#if US_ENABLE_LOGGING
        us_logger_printer_start( us_testutil_printer_stdout, us_testutil_printer_stderr );
#endif
        us_log_info( "Hello world from %s compiled on %s", __FILE__, __DATE__ );
        r &= us_test_osc_dispatch_test1();
        us_logger_finish();
        us_testutil_finish();
    }
    return r ? 0 : 1;
}
Ejemplo n.º 15
0
void us_allocator_heap_report( us_allocator_heap_t *self )
{
    uint32_t free_chunks = 0;
    uint32_t used_chunks = 0;
    ssize_t largest_free = 0;
    ssize_t largest_used = 0;
    size_t free_mem = 0;
    size_t used_mem = 0;
    us_allocator_heap_block_t *cur = self->m_first;
    us_log_info( "us_allocator_heap_t dump" );
    while ( cur != NULL )
    {
        ssize_t sz = cur->m_size;
        us_log_info( "heap block %p : next=%p, prev=%p, size=%d", cur, cur->m_next, cur->m_prev, cur->m_size );
        if ( sz < 0 )
        {
            free_mem += -sz;
            ++free_chunks;
            if ( -sz > largest_free )
                largest_free = -sz;
        }
        else
        {
            used_mem += sz;
            ++used_chunks;
            if ( sz > largest_used )
                largest_used = sz;
        }
        cur = cur->m_next;
    }
    us_log_info( "size of largest free chunk: %d", largest_free );
    us_log_info( "size of largest used chunk: %d ", largest_used );
    us_log_info( "total free mem: %d ", free_mem );
    us_log_info( "total used mem: %d", used_mem );
    us_log_info( "free chunk count: %d", free_chunks );
    us_log_info( "used chunk count: %d", used_chunks );
}
Ejemplo n.º 16
0
static bool us_tool_send_osc(
    const char *protocol,
    const char *src_host,
    const char *src_port,
    const char *dest_host,
    const char *dest_port,
    const char *osc_address,
    const char *osc_typetags,
    const char **osc_values
)
{
    bool r=false;
    const char **v;
    const char *t=osc_typetags;
    us_allocator_t *allocator = us_testutil_sys_allocator;
    int sock_type=SOCK_DGRAM;
    struct addrinfo *src_addr;
    struct addrinfo *dest_addr;
    if ( strcmp( protocol, "udp" )==0 )
    {
        sock_type = SOCK_DGRAM;
    }
    else if (strcmp( protocol, "tcp" )==0 || strcmp( protocol, "tcpslip" )==0 )
    {
        sock_type = SOCK_STREAM;
    }
    else
    {
        us_stderr->printf( us_stderr, "unknown protocol '%s', use 'tcp', 'tcpslip' or 'udp'\n", protocol );
        return false;
    }
    src_addr = us_net_get_addrinfo(src_host, src_port, sock_type, true);
    if ( !src_addr )
    {
        us_stderr->printf( us_stderr, "unable to get src address for '[%s]:%s'\n", dest_host, dest_port );
        return false;
    }
    dest_addr = us_net_get_addrinfo(dest_host, dest_port, sock_type, false);
    if ( !dest_addr )
    {
        us_stderr->printf( us_stderr, "unable to get dest address for '[%s]:%s'\n", dest_host, dest_port );
        freeaddrinfo(src_addr);
        return false;
    }
    us_buffer_t *buf = us_buffer_create(allocator, 4096);
    if ( buf )
    {
        us_log_info( "Sending '%s' to '[%s]:%s' osc address '%s' types ',%s' ", protocol, dest_host, dest_port, osc_address, osc_typetags );
        if ( osc_values )
        {
            for ( v=osc_values; *v!=0 && t!=0; v++,t++ )
            {
                us_log_info( "Type '%c' Value: '%s'", *t, *v );
            }
        }
        r=us_tool_gen_flattened_osc( us_testutil_sys_allocator, buf, osc_address, osc_typetags, osc_values );
        if ( r )
        {
            us_buffer_print( buf, us_stdout );
            if ( sock_type==SOCK_DGRAM )
            {
                r=us_tool_send_osc_udp( src_addr, dest_addr, buf );
            }
            else if ( sock_type == SOCK_STREAM )
            {
                if ( strcmp(protocol, "tcpslip" )==0 )
                {
                    r=us_tool_send_osc_tcpslip( dest_addr, buf );
                }
                else
                {
                    r=us_tool_send_osc_tcp(dest_addr, buf);
                }
            }
        }
        buf->destroy( buf );
    }
    freeaddrinfo(dest_addr);
    return r;
}
Ejemplo n.º 17
0
static bool system_name_write(us_test_trie_schema_entry_t *US_UNUSED(self)) {
    us_log_debug("%s: ", __FUNCTION__);
    us_log_info("new system name: %s ", device_name);
    return true;
}