forked from Archive/PX4-Autopilot
uORB: fixed copyright on unit tests
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
parent
f99ed68701
commit
68c9f88f2c
|
@ -1,30 +1,35 @@
|
|||
//=============================================================================
|
||||
// File: uORB_test.cpp
|
||||
//
|
||||
// @@-COPYRIGHT-START-@@
|
||||
//
|
||||
// Copyright 2014 Qualcomm Technologies, Inc. All rights reserved.
|
||||
// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI")
|
||||
//
|
||||
// The party receiving this software directly from QTI (the "Recipient")
|
||||
// may use this software as reasonably necessary solely for the purposes
|
||||
// set forth in the agreement between the Recipient and QTI (the
|
||||
// "Agreement"). The software may be used in source code form solely by
|
||||
// the Recipient's employees (if any) authorized by the Agreement. Unless
|
||||
// expressly authorized in the Agreement, the Recipient may not sublicense,
|
||||
// assign, transfer or otherwise provide the source code to any third
|
||||
// party. Qualcomm Technologies, Inc. retains all ownership rights in and
|
||||
// to the software
|
||||
//
|
||||
// This notice supersedes any other QTI notices contained within the software
|
||||
// except copyright notices indicating different years of publication for
|
||||
// different portions of the software. This notice does not supersede the
|
||||
// application of any third party copyright notice to that third party's
|
||||
// code.
|
||||
//
|
||||
// @@-COPYRIGHT-END-@@
|
||||
//
|
||||
//=============================================================================
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2015 Mark Charlebois. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "uORBCommunicatorMock.hpp"
|
||||
#include "uORB/uORB.h"
|
||||
|
|
|
@ -1,30 +1,35 @@
|
|||
//=============================================================================
|
||||
// File: uORB_test.cpp
|
||||
//
|
||||
// @@-COPYRIGHT-START-@@
|
||||
//
|
||||
// Copyright 2014 Qualcomm Technologies, Inc. All rights reserved.
|
||||
// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI")
|
||||
//
|
||||
// The party receiving this software directly from QTI (the "Recipient")
|
||||
// may use this software as reasonably necessary solely for the purposes
|
||||
// set forth in the agreement between the Recipient and QTI (the
|
||||
// "Agreement"). The software may be used in source code form solely by
|
||||
// the Recipient's employees (if any) authorized by the Agreement. Unless
|
||||
// expressly authorized in the Agreement, the Recipient may not sublicense,
|
||||
// assign, transfer or otherwise provide the source code to any third
|
||||
// party. Qualcomm Technologies, Inc. retains all ownership rights in and
|
||||
// to the software
|
||||
//
|
||||
// This notice supersedes any other QTI notices contained within the software
|
||||
// except copyright notices indicating different years of publication for
|
||||
// different portions of the software. This notice does not supersede the
|
||||
// application of any third party copyright notice to that third party's
|
||||
// code.
|
||||
//
|
||||
// @@-COPYRIGHT-END-@@
|
||||
//
|
||||
//=============================================================================
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2015 Mark Charlebois. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "uORBCommunicatorMockLoopback.hpp"
|
||||
#include "uORB/uORB.h"
|
||||
|
|
|
@ -1,30 +1,35 @@
|
|||
//=============================================================================
|
||||
// File: uORB_test.cpp
|
||||
//
|
||||
// @@-COPYRIGHT-START-@@
|
||||
//
|
||||
// Copyright 2014 Qualcomm Technologies, Inc. All rights reserved.
|
||||
// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI")
|
||||
//
|
||||
// The party receiving this software directly from QTI (the "Recipient")
|
||||
// may use this software as reasonably necessary solely for the purposes
|
||||
// set forth in the agreement between the Recipient and QTI (the
|
||||
// "Agreement"). The software may be used in source code form solely by
|
||||
// the Recipient's employees (if any) authorized by the Agreement. Unless
|
||||
// expressly authorized in the Agreement, the Recipient may not sublicense,
|
||||
// assign, transfer or otherwise provide the source code to any third
|
||||
// party. Qualcomm Technologies, Inc. retains all ownership rights in and
|
||||
// to the software
|
||||
//
|
||||
// This notice supersedes any other QTI notices contained within the software
|
||||
// except copyright notices indicating different years of publication for
|
||||
// different portions of the software. This notice does not supersede the
|
||||
// application of any third party copyright notice to that third party's
|
||||
// code.
|
||||
//
|
||||
// @@-COPYRIGHT-END-@@
|
||||
//
|
||||
//=============================================================================
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2015 Mark Charlebois. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _uORBCommunicatorMockLoopback_hpp_
|
||||
#define _uORBCommunicatorMockLoopback_hpp_
|
||||
|
|
|
@ -1,30 +1,35 @@
|
|||
//=============================================================================
|
||||
// File: uORB_test.cpp
|
||||
//
|
||||
// @@-COPYRIGHT-START-@@
|
||||
//
|
||||
// Copyright 2014 Qualcomm Technologies, Inc. All rights reserved.
|
||||
// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI")
|
||||
//
|
||||
// The party receiving this software directly from QTI (the "Recipient")
|
||||
// may use this software as reasonably necessary solely for the purposes
|
||||
// set forth in the agreement between the Recipient and QTI (the
|
||||
// "Agreement"). The software may be used in source code form solely by
|
||||
// the Recipient's employees (if any) authorized by the Agreement. Unless
|
||||
// expressly authorized in the Agreement, the Recipient may not sublicense,
|
||||
// assign, transfer or otherwise provide the source code to any third
|
||||
// party. Qualcomm Technologies, Inc. retains all ownership rights in and
|
||||
// to the software
|
||||
//
|
||||
// This notice supersedes any other QTI notices contained within the software
|
||||
// except copyright notices indicating different years of publication for
|
||||
// different portions of the software. This notice does not supersede the
|
||||
// application of any third party copyright notice to that third party's
|
||||
// code.
|
||||
//
|
||||
// @@-COPYRIGHT-END-@@
|
||||
//
|
||||
//=============================================================================
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2015 Mark Charlebois. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _uORBGtestTopics_hpp_
|
||||
#define _uORBGtestTopics_hpp_
|
||||
|
|
|
@ -1,206 +0,0 @@
|
|||
//=============================================================================
|
||||
// File: uORB_test.cpp
|
||||
//
|
||||
// @@-COPYRIGHT-START-@@
|
||||
//
|
||||
// Copyright 2014 Qualcomm Technologies, Inc. All rights reserved.
|
||||
// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI")
|
||||
//
|
||||
// The party receiving this software directly from QTI (the "Recipient")
|
||||
// may use this software as reasonably necessary solely for the purposes
|
||||
// set forth in the agreement between the Recipient and QTI (the
|
||||
// "Agreement"). The software may be used in source code form solely by
|
||||
// the Recipient's employees (if any) authorized by the Agreement. Unless
|
||||
// expressly authorized in the Agreement, the Recipient may not sublicense,
|
||||
// assign, transfer or otherwise provide the source code to any third
|
||||
// party. Qualcomm Technologies, Inc. retains all ownership rights in and
|
||||
// to the software
|
||||
//
|
||||
// This notice supersedes any other QTI notices contained within the software
|
||||
// except copyright notices indicating different years of publication for
|
||||
// different portions of the software. This notice does not supersede the
|
||||
// application of any third party copyright notice to that third party's
|
||||
// code.
|
||||
//
|
||||
// @@-COPYRIGHT-END-@@
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
#include <assert.h>
|
||||
#include <string>
|
||||
#include <palSemaphore.hpp>
|
||||
#include <palThread.hpp>
|
||||
#include <errno.h>
|
||||
#include "uORB/uORB.h"
|
||||
#include "utils/general.h"
|
||||
#include "utils/logging.h"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#define LOG_TAG "uORB_test.cpp"
|
||||
|
||||
//#ifdef INCLUDE_ANDROID_UNIT_TEST_UORB
|
||||
namespace uORB_test
|
||||
{
|
||||
|
||||
struct orb_test
|
||||
{
|
||||
int val;
|
||||
};
|
||||
ORB_DEFINE(orb_test, struct orb_test);
|
||||
|
||||
pal::Semaphore sub_semaphore;
|
||||
static int pfd, sfd;
|
||||
static struct orb_test t;
|
||||
bool threadTestPassed = false;
|
||||
|
||||
TEST( uORBTest, pub_sub_initialization )
|
||||
{
|
||||
struct orb_test u;
|
||||
bool updated;
|
||||
|
||||
t.val = 0;
|
||||
ASSERT_NE( ( pfd = orb_advertise(ORB_ID(orb_test), &t) ), 0 ) << "Failed to advertize uORB Topic orb_test: errno: " << errno;
|
||||
IPRINTF( "publist handle: 0x%08x", pfd );
|
||||
|
||||
|
||||
ASSERT_NE( ( sfd = orb_subscribe(ORB_ID(orb_test), (void *)&sub_semaphore) ), 0 ) << "Subscribe failed: %d" << errno;
|
||||
IPRINTF( "subscribe fd: %d", sfd );
|
||||
|
||||
u.val = 1;
|
||||
|
||||
ASSERT_EQ( orb_copy(ORB_ID(orb_test), sfd, &u), OK ) << "copy(1) failed: " << errno;
|
||||
|
||||
ASSERT_EQ( u.val, t.val ) << "copy(1) mismatch: " << u.val << " expected " << t.val;
|
||||
|
||||
ASSERT_EQ(orb_check(sfd, &updated), OK ) << "check(1) failed";
|
||||
|
||||
ASSERT_FALSE( updated ) << "spurious updated flag";
|
||||
|
||||
ASSERT_EQ(orb_unsubscribe(sfd), OK );
|
||||
close(pfd);
|
||||
}
|
||||
|
||||
|
||||
void test_subscriber_thread(void *this_ptr)
|
||||
{
|
||||
struct orb_test u;
|
||||
bool updated;
|
||||
pal::Semaphore *sub_semaphore = (pal::Semaphore *)this_ptr;
|
||||
assert(sub_semaphore != nullptr);
|
||||
|
||||
IPRINTF( "waiting for new subscriber data");
|
||||
sub_semaphore->wait();
|
||||
|
||||
if (OK != orb_check(sfd, &updated))
|
||||
{
|
||||
EPRINTF("check(2) failed");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!updated)
|
||||
{
|
||||
EPRINTF("missing updated flag");
|
||||
return;
|
||||
}
|
||||
|
||||
if (OK != orb_copy(ORB_ID(orb_test), sfd, &u))
|
||||
{
|
||||
EPRINTF("copy(2) failed: %d", errno);
|
||||
return;
|
||||
}
|
||||
|
||||
if (u.val != t.val)
|
||||
{
|
||||
EPRINTF("copy(2) mismatch: %d expected %d", u.val, t.val);
|
||||
return;
|
||||
}
|
||||
threadTestPassed = true;
|
||||
}
|
||||
|
||||
|
||||
TEST( uORB, pub_sub_withThread )
|
||||
{
|
||||
pal::Thread sub_thread;
|
||||
|
||||
threadTestPassed = false;
|
||||
|
||||
// advertize the topic first if it is not created.
|
||||
t.val = 1;
|
||||
ASSERT_NE( (pfd = orb_advertise(ORB_ID(orb_test), &t) ), 0 ) << "Failed to advertize uORB Topic orb_test: errno: " << errno;
|
||||
IPRINTF( "publist handle: 0x%08x", pfd );
|
||||
|
||||
ASSERT_NE( ( sfd = orb_subscribe(ORB_ID(orb_test), (void *)&sub_semaphore) ), 0 ) << "Subscribe failed: %d" << errno;
|
||||
IPRINTF( "subscribe fd: %d", sfd );
|
||||
|
||||
sub_thread.create(test_subscriber_thread, (void *)&sub_semaphore);
|
||||
|
||||
t.val = 2;
|
||||
IPRINTF("try publish, creating new thread to await the results");
|
||||
|
||||
ASSERT_EQ(orb_publish(ORB_ID(orb_test), pfd, &t), OK) << "publish failed";
|
||||
|
||||
ASSERT_EQ( t.val, 2 );
|
||||
|
||||
IPRINTF("waiting for the subscriber thread to exit");
|
||||
sub_thread.wait();
|
||||
|
||||
ASSERT_TRUE( threadTestPassed );
|
||||
|
||||
ASSERT_EQ(orb_unsubscribe(sfd), OK );
|
||||
close(pfd);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
/* this is a hacky test that exploits the sensors app to test rate-limiting */
|
||||
|
||||
sfd = orb_subscribe(ORB_ID(sensor_combined));
|
||||
|
||||
hrt_abstime start, end;
|
||||
unsigned count;
|
||||
|
||||
start = hrt_absolute_time();
|
||||
count = 0;
|
||||
|
||||
do
|
||||
{
|
||||
orb_check(sfd, &updated);
|
||||
|
||||
if (updated)
|
||||
{
|
||||
orb_copy(ORB_ID(sensor_combined), sfd, nullptr);
|
||||
count++;
|
||||
}
|
||||
}while (count < 100);
|
||||
|
||||
end = hrt_absolute_time();
|
||||
test_note("full-speed, 100 updates in %llu", end - start);
|
||||
|
||||
orb_set_interval(sfd, 10);
|
||||
|
||||
start = hrt_absolute_time();
|
||||
count = 0;
|
||||
|
||||
do
|
||||
{
|
||||
orb_check(sfd, &updated);
|
||||
|
||||
if (updated)
|
||||
{
|
||||
orb_copy(ORB_ID(sensor_combined), sfd, nullptr);
|
||||
count++;
|
||||
}
|
||||
}while (count < 100);
|
||||
|
||||
end = hrt_absolute_time();
|
||||
test_note("100Hz, 100 updates in %llu", end - start);
|
||||
|
||||
orb_unsubscribe(sfd);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue