blob: 0aabbe91c3ba668c6f825c28d5ae587a295f1a65 [file] [log] [blame]
Wentao Shang77949212014-02-01 23:42:24 -08001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -08002/**
3 * Copyright (C) 2013 Regents of the University of California.
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -08004 * See COPYING for copyright and distribution information.
5 */
6
Alexander Afanasyeve289b532014-02-09 22:14:44 -08007#include "management/nfd-control-response.hpp"
8#include "management/nfd-fib-management-options.hpp"
Yingdi Yud3370492014-02-12 17:17:11 -08009#include "management/nfd-face-management-options.hpp"
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080010
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070011#include "boost-test.hpp"
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080012
13namespace ndn {
Alexander Afanasyeve289b532014-02-09 22:14:44 -080014namespace nfd {
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080015
16BOOST_AUTO_TEST_SUITE(TestNfdControl)
17
Alexander Afanasyev4b456282014-02-13 00:34:34 -080018const uint8_t TestControlResponse[] = {0x65, 0x17,
19 0x66, 0x02, 0x01, 0x94, 0x67, 0x11, 0x4e, 0x6f, 0x74,
20 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x6f, 0x74, 0x20,
21 0x66, 0x6f, 0x75, 0x6e, 0x64};
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080022
Wentao Shang4d5e1de2014-01-28 21:00:03 -080023const uint8_t TestFibManagementOptions[] = {
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080024 0x68, 0x49, 0x07, 0x16, 0x08, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080025 0x6f, 0x73, 0x74, 0x08, 0x03, 0x72, 0x65, 0x67, 0x08, 0x04, 0x74, 0x65,
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080026 0x73, 0x74, 0x69, 0x01, 0x00, 0x6a, 0x01, 0x01, 0x6b, 0x29, 0x07, 0x27,
27 0x08, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x08,
28 0x03, 0x6e, 0x66, 0x64, 0x08, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
29 0x67, 0x79, 0x08, 0x0b, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2d, 0x77, 0x6f,
30 0x72, 0x6c, 0x64
Wentao Shang4d5e1de2014-01-28 21:00:03 -080031};
32
Yingdi Yud3370492014-02-12 17:17:11 -080033const uint8_t TestFaceManagementOptions[] = {
Junxiao Shibc19b372014-03-23 16:59:25 -070034 0x68, 0x1e, 0x69, 0x01, 0x0a, 0x72, 0x19, 0x74, 0x63, 0x70, 0x3a, 0x2f,
Yingdi Yud3370492014-02-12 17:17:11 -080035 0x2f, 0x31, 0x2e, 0x31, 0x2e, 0x31, 0x2e, 0x31, 0x2f, 0x68, 0x65, 0x6c,
36 0x6c, 0x6f, 0x2f, 0x77, 0x6f, 0x72, 0x6c, 0x64
37};
38
Wentao Shang4d5e1de2014-01-28 21:00:03 -080039// ControlResponse
40
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080041BOOST_AUTO_TEST_CASE(ControlResponseEncode)
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080042{
Alexander Afanasyeve289b532014-02-09 22:14:44 -080043 ControlResponse controlResponse(404, "Nothing not found");
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080044 const Block &wire = controlResponse.wireEncode();
45
46 BOOST_REQUIRE_EQUAL_COLLECTIONS(TestControlResponse, TestControlResponse+sizeof(TestControlResponse),
47 wire.begin(), wire.end());
48}
49
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080050BOOST_AUTO_TEST_CASE(ControlResponseDecode)
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080051{
Alexander Afanasyeve289b532014-02-09 22:14:44 -080052 ControlResponse controlResponse;
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080053
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -080054 BOOST_REQUIRE_NO_THROW(controlResponse.wireDecode(Block(TestControlResponse, sizeof(TestControlResponse))));
55
56 BOOST_REQUIRE_EQUAL(controlResponse.getCode(), 404);
57 BOOST_REQUIRE_EQUAL(controlResponse.getText(), "Nothing not found");
58}
59
Wentao Shang4d5e1de2014-01-28 21:00:03 -080060// FibManagementOptions
61
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080062BOOST_AUTO_TEST_CASE(FibManagementOptionsEncoding)
Wentao Shang4d5e1de2014-01-28 21:00:03 -080063{
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080064 Name n("/localhost/reg/test");
Wentao Shang4d5e1de2014-01-28 21:00:03 -080065 FibManagementOptions opt;
66
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080067 opt.setName(n);
68 opt.setFaceId(0);
69 opt.setCost(1);
70 opt.setStrategy("/localhost/nfd/strategy/hello-world");
Wentao Shang4d5e1de2014-01-28 21:00:03 -080071
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080072 const Block& blk = opt.wireEncode();
Wentao Shang4d5e1de2014-01-28 21:00:03 -080073
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080074 BOOST_REQUIRE_EQUAL_COLLECTIONS(TestFibManagementOptions,
75 TestFibManagementOptions + sizeof(TestFibManagementOptions),
76 blk.begin(), blk.end());
Wentao Shang4d5e1de2014-01-28 21:00:03 -080077}
78
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080079BOOST_AUTO_TEST_CASE(FibManagementOptionsFastEncoding)
Wentao Shang77949212014-02-01 23:42:24 -080080{
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080081 Name n("/localhost/reg/test");
Wentao Shang77949212014-02-01 23:42:24 -080082 FibManagementOptions opt;
83
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080084 opt.setName(n);
85 opt.setFaceId(0);
86 opt.setCost(1);
87 opt.setStrategy("/localhost/nfd/strategy/hello-world");
Wentao Shang77949212014-02-01 23:42:24 -080088
89 EncodingBuffer blk;
90
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080091 BOOST_REQUIRE_NO_THROW(opt.wireEncode(blk));
Wentao Shang77949212014-02-01 23:42:24 -080092
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080093 BOOST_REQUIRE_EQUAL_COLLECTIONS(TestFibManagementOptions,
94 TestFibManagementOptions + sizeof(TestFibManagementOptions),
95 blk.begin(), blk.end());
Wentao Shang77949212014-02-01 23:42:24 -080096
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080097 EncodingBuffer blk2(4);
Wentao Shang77949212014-02-01 23:42:24 -080098
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -080099 BOOST_REQUIRE_NO_THROW(opt.wireEncode(blk2));
Wentao Shang77949212014-02-01 23:42:24 -0800100
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800101 BOOST_REQUIRE_EQUAL_COLLECTIONS(TestFibManagementOptions,
102 TestFibManagementOptions + sizeof(TestFibManagementOptions),
103 blk2.begin(), blk2.end());
Wentao Shang77949212014-02-01 23:42:24 -0800104}
105
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800106BOOST_AUTO_TEST_CASE(FibManagementOptionsDecoding)
Wentao Shang4d5e1de2014-01-28 21:00:03 -0800107{
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800108 Block blk(TestFibManagementOptions, sizeof(TestFibManagementOptions));
109 Name n("/localhost/reg/test");
Wentao Shang4d5e1de2014-01-28 21:00:03 -0800110 FibManagementOptions opt;
111
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800112 BOOST_REQUIRE_NO_THROW(opt.wireDecode(blk));
113
114 BOOST_CHECK_EQUAL(opt.getName(), n);
115 BOOST_CHECK_EQUAL(opt.getFaceId(), 0);
116 BOOST_CHECK_EQUAL(opt.getCost(), 1);
117 BOOST_CHECK_EQUAL(opt.getStrategy().toUri(), "/localhost/nfd/strategy/hello-world");
Wentao Shang4d5e1de2014-01-28 21:00:03 -0800118}
119
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800120BOOST_AUTO_TEST_CASE(FaceManagementOptionsFastEncoding)
Yingdi Yud3370492014-02-12 17:17:11 -0800121{
122 FaceManagementOptions opt;
123
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800124 opt.setFaceId(10);
125 opt.setUri("tcp://1.1.1.1/hello/world");
Yingdi Yud3370492014-02-12 17:17:11 -0800126
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800127 BOOST_REQUIRE_NO_THROW(opt.wireEncode ());
Yingdi Yud3370492014-02-12 17:17:11 -0800128
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800129 BOOST_REQUIRE_EQUAL_COLLECTIONS(TestFaceManagementOptions,
130 TestFaceManagementOptions + sizeof(TestFaceManagementOptions),
131 opt.wireEncode().begin(), opt.wireEncode().end());
Yingdi Yud3370492014-02-12 17:17:11 -0800132}
133
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800134BOOST_AUTO_TEST_CASE(FaceManagementOptionsDecoding)
Yingdi Yud3370492014-02-12 17:17:11 -0800135{
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800136 Block blk(TestFaceManagementOptions, sizeof(TestFaceManagementOptions));
Yingdi Yud3370492014-02-12 17:17:11 -0800137 FaceManagementOptions opt;
138
Alexander Afanasyev44b438a2014-03-19 12:51:49 -0700139 BOOST_REQUIRE_NO_THROW(opt.wireDecode(blk));
Alexander Afanasyevc5ad1192014-02-25 14:17:47 -0800140
141 BOOST_CHECK_EQUAL(opt.getFaceId(), 10);
142 BOOST_CHECK_EQUAL(opt.getUri(), "tcp://1.1.1.1/hello/world");
Yingdi Yud3370492014-02-12 17:17:11 -0800143}
Wentao Shang4d5e1de2014-01-28 21:00:03 -0800144
Alexander Afanasyev44b438a2014-03-19 12:51:49 -0700145
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -0800146BOOST_AUTO_TEST_SUITE_END()
147
Alexander Afanasyeve289b532014-02-09 22:14:44 -0800148} // namespace nfd
Alexander Afanasyeveaf105c2014-01-30 17:40:24 -0800149} // namespace ndn