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 }
bool handleRestartRequest(uavcan::NodeID request_source)
uint8_t get() const
Definition: transfer.hpp:132
int call(uavcan::NodeID node_id, const typename DataType::Request &request)
TEST(RestartRequestServer, Basic)
static GlobalDataTypeRegistry & instance()
void setHandler(IRestartRequestHandler *handler)
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
int spinBoth(uavcan::MonotonicDuration duration)
Definition: test_node.hpp:176
int
Definition: libstubs.cpp:120


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:39