blob: 4ed2bdae5efa1384ec56f8194ea4a2bb8a0f5476 [file] [log] [blame]
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -07001/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2011 University of California, Los Angeles
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
Alexander Afanasyevcf6dc922012-08-10 16:55:27 -070018 * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
19 * Ilya Moiseenko <iliamo@cs.ucla.edu>
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070020 */
21
22#include "ns3/core-module.h"
23#include "ns3/ndnSIM-module.h"
24#include "ndnSIM-serialization.h"
25
26#include <boost/lexical_cast.hpp>
Alexander Afanasyevee762552013-07-10 22:29:22 -070027#include "ns3/ndnSIM/model/wire/ndnsim.h"
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070028
29using namespace std;
30
Alexander Afanasyevcf6dc922012-08-10 16:55:27 -070031namespace ns3 {
32
33using namespace ndn;
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070034
Alexander Afanasyev2b4c9472012-08-09 15:00:38 -070035NS_LOG_COMPONENT_DEFINE ("ndn.Serialization");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070036
37void
38InterestSerializationTest::DoRun ()
39{
Alexander Afanasyevee762552013-07-10 22:29:22 -070040 Ptr<Interest> source = Create<Interest> ();
Alexander Afanasyevbd9c18e2012-11-19 15:23:41 -080041
Alexander Afanasyevee762552013-07-10 22:29:22 -070042 source->SetName (Create<Name> (boost::lexical_cast<Name> ("/test/test2")));
43 NS_TEST_ASSERT_MSG_EQ (source->GetName (), boost::lexical_cast<Name> ("/test/test2"), "set/get name failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070044
Alexander Afanasyevee762552013-07-10 22:29:22 -070045 source->SetScope (2);
46 NS_TEST_ASSERT_MSG_EQ (source->GetScope (), 2, "set/get scope failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070047
Alexander Afanasyevee762552013-07-10 22:29:22 -070048 source->SetInterestLifetime (Seconds (100));
49 NS_TEST_ASSERT_MSG_EQ (source->GetInterestLifetime (), Seconds (100), "set/get interest lifetime failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070050
Alexander Afanasyevee762552013-07-10 22:29:22 -070051 source->SetNonce (200);
52 NS_TEST_ASSERT_MSG_EQ (source->GetNonce (), 200, "set/get nonce failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070053
Alexander Afanasyevee762552013-07-10 22:29:22 -070054 source->SetNack (10);
55 NS_TEST_ASSERT_MSG_EQ (source->GetNack (), 10, "set/get NACK failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070056
Alexander Afanasyevee762552013-07-10 22:29:22 -070057 NS_TEST_ASSERT_MSG_EQ (source->GetWire (), 0, "Wire should be empty");
58 NS_TEST_ASSERT_MSG_NE (source->GetPayload (), 0, "Payload should not be empty");
59
60 Ptr<Packet> packet = wire::ndnSIM::Interest::ToWire (source);
61
62 NS_TEST_ASSERT_MSG_NE (source->GetWire (), 0, "Wire should not be empty now");
63
64 Ptr<Interest> target = wire::ndnSIM::Interest::FromWire (packet);
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070065
Alexander Afanasyevee762552013-07-10 22:29:22 -070066 NS_TEST_ASSERT_MSG_EQ (source->GetName () , target->GetName () , "source/target name failed");
67 NS_TEST_ASSERT_MSG_EQ (source->GetScope () , target->GetScope () , "source/target scope failed");
68 NS_TEST_ASSERT_MSG_EQ (source->GetInterestLifetime (), target->GetInterestLifetime (), "source/target interest lifetime failed");
69 NS_TEST_ASSERT_MSG_EQ (source->GetNonce () , target->GetNonce () , "source/target nonce failed");
70 NS_TEST_ASSERT_MSG_EQ (source->GetNack () , target->GetNack () , "source/target NACK failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -070071}
72
73void
74ContentObjectSerializationTest::DoRun ()
75{
Alexander Afanasyevee762552013-07-10 22:29:22 -070076 Ptr<ContentObject> source = Create<ContentObject> (Create<Packet> (1024));
Alexander Afanasyev11fdadd2012-11-19 15:43:17 -080077
Alexander Afanasyevee762552013-07-10 22:29:22 -070078 source->SetName (Create<Name> (boost::lexical_cast<Name> ("/test/test2/1")));
79 NS_TEST_ASSERT_MSG_EQ (source->GetName (), boost::lexical_cast<Name> ("/test/test2/1"), "set/get name failed");
Alexander Afanasyev11fdadd2012-11-19 15:43:17 -080080
Alexander Afanasyevee762552013-07-10 22:29:22 -070081 source->SetFreshness (Seconds (10));
82 NS_TEST_ASSERT_MSG_EQ (source->GetFreshness (), Seconds (10), "set/get freshness failed");
Alexander Afanasyev11fdadd2012-11-19 15:43:17 -080083
Alexander Afanasyevee762552013-07-10 22:29:22 -070084 source->SetTimestamp (Seconds (100));
85 NS_TEST_ASSERT_MSG_EQ (source->GetTimestamp (), Seconds (100), "set/get timestamp failed");
Alexander Afanasyev11fdadd2012-11-19 15:43:17 -080086
Alexander Afanasyevee762552013-07-10 22:29:22 -070087 NS_TEST_ASSERT_MSG_EQ (source->GetSignature (), 0, "initialization of signature failed");
Alexander Afanasyevd6e5c5f2013-03-30 19:09:56 -070088
Alexander Afanasyevee762552013-07-10 22:29:22 -070089 Ptr<Packet> packet = wire::ndnSIM::Data::ToWire (source);
90 int size = packet->GetSize ();
91
92 source->SetSignature (10);
93 NS_TEST_ASSERT_MSG_EQ (source->GetSignature (), 10, "set/get signature failed");
94
95 packet = wire::ndnSIM::Data::ToWire (source);
96 NS_TEST_ASSERT_MSG_EQ (packet->GetSize (), static_cast<unsigned int> (size + 4), "Signature size should have increased by 4");
97
98 Ptr<ContentObject> target = wire::ndnSIM::Data::FromWire (packet);
Alexander Afanasyevd6e5c5f2013-03-30 19:09:56 -070099
Alexander Afanasyevee762552013-07-10 22:29:22 -0700100 NS_TEST_ASSERT_MSG_EQ (source->GetName () , target->GetName () , "source/target name failed");
101 NS_TEST_ASSERT_MSG_EQ (source->GetFreshness (), target->GetFreshness (), "source/target freshness failed");
102 NS_TEST_ASSERT_MSG_EQ (source->GetTimestamp (), target->GetTimestamp (), "source/target timestamp failed");
103 NS_TEST_ASSERT_MSG_EQ (source->GetSignature (), target->GetSignature (), "source/target signature failed");
Alexander Afanasyevf1e013f2012-07-11 17:59:40 -0700104}
105
106}