apps/system/uorb: c unit testcases
testcases: 1. test_single(): single instance, advertise then subscribe. 2. test_multi_inst10(): 10 instance, each 1 subscriber. 3. test_multi(): 2 instances, 2 advertisers, 2 subscribers. 4. test_multi_reversed(): same as test_multi(), but subsribe before advertise. 5. test_unadvertise(): unadvertise upper 4 advertisers. 6. test_multi2(): same as tset_multi(). but multi-thread. 7, test_queue(): topic queue_size = 16. Signed-off-by: jihandong <jihandong@xiaomi.com> Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
parent
3528b5515f
commit
d8d1e1e761
@ -10,6 +10,14 @@ menuconfig UORB
|
||||
|
||||
if UORB
|
||||
|
||||
config UORB_PRIORITY
|
||||
int "task priority"
|
||||
default 100
|
||||
|
||||
config UORB_STACKSIZE
|
||||
int "stack size"
|
||||
default DEFAULT_TASK_STACKSIZE
|
||||
|
||||
config DEBUG_UORB
|
||||
bool "uorb debug output"
|
||||
default n
|
||||
@ -38,4 +46,16 @@ config UORB_INFO
|
||||
|
||||
endif # DEBUG_UORB
|
||||
|
||||
config UORB_TESTS
|
||||
bool "uorb unit tests"
|
||||
default n
|
||||
|
||||
if UORB_TESTS
|
||||
|
||||
config UORB_SRORAGE_DIR
|
||||
string "uorb test result storage dir"
|
||||
default "/data/"
|
||||
|
||||
endif # UORB_TESTS
|
||||
|
||||
endif # UORB
|
||||
|
@ -20,6 +20,16 @@
|
||||
|
||||
include $(APPDIR)/Make.defs
|
||||
|
||||
CSRCS += uORB/uORB.c
|
||||
CSRCS += uORB/uORB.c
|
||||
|
||||
ifneq ($(CONFIG_UORB_TESTS),)
|
||||
CSRCS += test/utility.c
|
||||
MAINSRC = test/unit_test.c
|
||||
PROGNAME = uorb_unit_test
|
||||
endif
|
||||
|
||||
PRIORITY = $(CONFIG_UORB_PRIORITY)
|
||||
STACKSIZE = $(CONFIG_UORB_STACKSIZE)
|
||||
MODULE = $(CONFIG_UORB)
|
||||
|
||||
include $(APPDIR)/Application.mk
|
||||
|
1076
system/uorb/test/unit_test.c
Normal file
1076
system/uorb/test/unit_test.c
Normal file
File diff suppressed because it is too large
Load Diff
122
system/uorb/test/utility.c
Normal file
122
system/uorb/test/utility.c
Normal file
@ -0,0 +1,122 @@
|
||||
/****************************************************************************
|
||||
* apps/system/uorb/test/utility.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "utility.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_DEBUG_UORB
|
||||
static void print_orb_test_msg(FAR const struct orb_metadata *meta,
|
||||
FAR const void *buffer)
|
||||
{
|
||||
FAR const struct orb_test_s *message = buffer;
|
||||
const orb_abstime now = orb_absolute_time();
|
||||
|
||||
uorbinfo_raw("%s:\ttimestamp: %"PRIu64" (%"PRIu64" us ago) val: %"PRId32"",
|
||||
meta->o_name, message->timestamp, now - message->timestamp,
|
||||
message->val);
|
||||
}
|
||||
|
||||
static void print_orb_test_medium_msg(FAR const struct orb_metadata *meta,
|
||||
FAR const void *buffer)
|
||||
{
|
||||
FAR const struct orb_test_medium_s *message = buffer;
|
||||
const orb_abstime now = orb_absolute_time();
|
||||
|
||||
uorbinfo_raw("%s:\ttimestamp: %"PRIu64" (%"PRIu64" us ago) val: %"PRId32"",
|
||||
meta->o_name, message->timestamp, now - message->timestamp,
|
||||
message->val);
|
||||
}
|
||||
|
||||
static void print_orb_test_large_msg(FAR const struct orb_metadata *meta,
|
||||
FAR const void *buffer)
|
||||
{
|
||||
FAR const struct orb_test_large_s *message = buffer;
|
||||
const orb_abstime now = orb_absolute_time();
|
||||
|
||||
uorbinfo_raw("%s:\ttimestamp: %"PRIu64" (%"PRIu64" us ago) val: %"PRId32"",
|
||||
meta->o_name, message->timestamp, now - message->timestamp,
|
||||
message->val);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
ORB_DEFINE(orb_test, struct orb_test_s, print_orb_test_msg);
|
||||
ORB_DEFINE(orb_multitest, struct orb_test_s, print_orb_test_msg);
|
||||
ORB_DEFINE(orb_test_medium, struct orb_test_medium_s,
|
||||
print_orb_test_medium_msg);
|
||||
ORB_DEFINE(orb_test_medium_multi, struct orb_test_medium_s,
|
||||
print_orb_test_medium_msg);
|
||||
ORB_DEFINE(orb_test_medium_wrap_around, struct orb_test_medium_s,
|
||||
print_orb_test_medium_msg);
|
||||
ORB_DEFINE(orb_test_medium_queue, struct orb_test_medium_s,
|
||||
print_orb_test_medium_msg);
|
||||
ORB_DEFINE(orb_test_medium_queue_poll, struct orb_test_medium_s,
|
||||
print_orb_test_medium_msg);
|
||||
ORB_DEFINE(orb_test_large, struct orb_test_large_s,
|
||||
print_orb_test_large_msg);
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
int test_note(FAR const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr, "uORB note: ");
|
||||
va_start(ap, fmt);
|
||||
vfprintf(stderr, fmt, ap);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
fprintf(stderr, "\n");
|
||||
fflush(stderr);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int test_fail(FAR const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr, "uORB fail: ");
|
||||
va_start(ap, fmt);
|
||||
vfprintf(stderr, fmt, ap);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
fprintf(stderr, "\n");
|
||||
fflush(stderr);
|
||||
|
||||
return ERROR;
|
||||
}
|
74
system/uorb/test/utility.h
Normal file
74
system/uorb/test/utility.h
Normal file
@ -0,0 +1,74 @@
|
||||
/****************************************************************************
|
||||
* apps/system/uorb/test/utility.h
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __APP_SYSTEM_UORB_UORB_TEST_UTILITY_H
|
||||
#define __APP_SYSTEM_UORB_UORB_TEST_UTILITY_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include "uORB/uORB.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
struct orb_test_s
|
||||
{
|
||||
uint64_t timestamp;
|
||||
int32_t val;
|
||||
};
|
||||
|
||||
struct orb_test_medium_s
|
||||
{
|
||||
uint64_t timestamp;
|
||||
int32_t val;
|
||||
};
|
||||
|
||||
struct orb_test_large_s
|
||||
{
|
||||
uint64_t timestamp;
|
||||
int32_t val;
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/* register this as object request broker structure */
|
||||
|
||||
ORB_DECLARE(orb_test);
|
||||
ORB_DECLARE(orb_multitest);
|
||||
ORB_DECLARE(orb_test_large);
|
||||
ORB_DECLARE(orb_test_medium);
|
||||
ORB_DECLARE(orb_test_medium_multi);
|
||||
ORB_DECLARE(orb_test_medium_wrap_around);
|
||||
ORB_DECLARE(orb_test_medium_queue);
|
||||
ORB_DECLARE(orb_test_medium_queue_poll);
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
int test_note(FAR const char *fmt, ...);
|
||||
int test_fail(FAR const char *fmt, ...);
|
||||
|
||||
#endif /* __APP_SYSTEM_UORB_TEST_UTILITY_H */
|
Loading…
x
Reference in New Issue
Block a user