restart_request_server.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #include <gtest/gtest.h>
7 #include "helpers.hpp"
8 
9 
11 {
12  bool accept;
13 
14  bool handleRestartRequest(uavcan::NodeID request_source)
15  {
16  std::cout << "Restart request from " << int(request_source.get()) << " will be "
17  << (accept ? "accepted" : "rejected") << std::endl;
18  return accept;
19  }
20 };
21 
22 
23 TEST(RestartRequestServer, Basic)
24 {
26 
28 
30 
33 
34  ASSERT_LE(0, rrs.start());
35 
36  uavcan::protocol::RestartNode::Request request;
37  request.magic_number = uavcan::protocol::RestartNode::Request::MAGIC_NUMBER;
38 
39  /*
40  * Rejected - handler was not set
41  */
42  ASSERT_LE(0, rrs_cln.call(1, request));
44 
45  ASSERT_TRUE(rrs_cln.collector.result.get());
46  ASSERT_TRUE(rrs_cln.collector.result->isSuccessful());
47  ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok);
48 
49  /*
50  * Accepted
51  */
52  RestartHandler handler;
53  handler.accept = true;
54  rrs.setHandler(&handler);
55 
56  ASSERT_LE(0, rrs_cln.call(1, request));
58 
59  ASSERT_TRUE(rrs_cln.collector.result->isSuccessful());
60  ASSERT_TRUE(rrs_cln.collector.result->getResponse().ok);
61 
62  /*
63  * Rejected by handler
64  */
65  handler.accept = false;
66 
67  ASSERT_LE(0, rrs_cln.call(1, request));
69 
70  ASSERT_TRUE(rrs_cln.collector.result->isSuccessful());
71  ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok);
72 
73  /*
74  * Rejected because of invalid magic number
75  */
76  handler.accept = true;
77 
78  ASSERT_LE(0, rrs_cln.call(1, uavcan::protocol::RestartNode::Request()));
80 
81  ASSERT_TRUE(rrs_cln.collector.result->isSuccessful());
82  ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok);
83 }
RestartHandler::accept
bool accept
Definition: restart_request_server.cpp:12
uavcan::DefaultDataTypeRegistrator
Definition: global_data_type_registry.hpp:186
uavcan::NodeID::get
uint8_t get() const
Definition: transfer.hpp:132
uavcan::NodeID
Definition: transfer.hpp:112
uavcan::RestartRequestServer
Definition: restart_request_server.hpp:38
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
uavcan::RestartRequestServer::start
int start()
Definition: restart_request_server.hpp:84
uavcan::RestartRequestServer::setHandler
void setHandler(IRestartRequestHandler *handler)
Definition: restart_request_server.hpp:78
ServiceClientWithCollector::call
int call(uavcan::NodeID node_id, const typename DataType::Request &request)
Definition: libuavcan/libuavcan/test/protocol/helpers.hpp:111
RestartHandler
Definition: restart_request_server.cpp:10
ServiceClientWithCollector
Definition: libuavcan/libuavcan/test/protocol/helpers.hpp:99
ServiceCallResultCollector::result
std::unique_ptr< Result > result
Definition: libuavcan/libuavcan/test/protocol/helpers.hpp:88
TEST
TEST(RestartRequestServer, Basic)
Definition: restart_request_server.cpp:23
helpers.hpp
InterlinkedTestNodes
Definition: test_node.hpp:149
uavcan::IRestartRequestHandler
Definition: restart_request_server.hpp:18
int
int
Definition: libstubs.cpp:120
RestartHandler::handleRestartRequest
bool handleRestartRequest(uavcan::NodeID request_source)
Definition: restart_request_server.cpp:14
InterlinkedTestNodes::a
TestNode a
Definition: test_node.hpp:155
InterlinkedTestNodes::spinBoth
int spinBoth(uavcan::MonotonicDuration duration)
Definition: test_node.hpp:176
uavcan::GlobalDataTypeRegistry::instance
static GlobalDataTypeRegistry & instance()
Definition: uc_global_data_type_registry.cpp:128
restart_request_server.hpp
InterlinkedTestNodes::b
TestNode b
Definition: test_node.hpp:156
ServiceClientWithCollector::collector
Collector collector
Definition: libuavcan/libuavcan/test/protocol/helpers.hpp:104


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:03