docs: Prepare release of version 2.1
Change-Id: I3694a8791b9540fc1b926a83ff55421b47e0f1b1
Refs: #3151
diff --git a/.jenkins.d/00-prepare.sh b/.jenkins.d/00-prepare.sh
index 67e579f..57ddf70 100755
--- a/.jenkins.d/00-prepare.sh
+++ b/.jenkins.d/00-prepare.sh
@@ -4,7 +4,7 @@
git rm -qrf .
git clone --depth=1 https://github.com/named-data-ndnSIM/ns-3-dev ns-3
-git clone --depth=1 https://github.com/named-data-ndnSIM/pybindgen.git pybindgen
+git clone https://github.com/named-data-ndnSIM/pybindgen.git pybindgen
mkdir -p ns-3/src/ndnSIM
mv .git ns-3/src/ndnSIM/
(cd ns-3/src/ndnSIM/ && git reset -q && git checkout . && git submodule update --init)
diff --git a/.jenkins.d/01-deps.sh b/.jenkins.d/01-deps.sh
index d05e767..9d49b08 100755
--- a/.jenkins.d/01-deps.sh
+++ b/.jenkins.d/01-deps.sh
@@ -29,7 +29,7 @@
sudo apt-get install -qq -y libboost-all-dev
fi
- sudo apt-get install -qq -y python-dev python-pygraphviz python-kiwi
+ sudo apt-get install -qq -y python-setuptools python-dev python-pygraphviz python-kiwi
sudo apt-get install -qq -y python-pygoocanvas python-gnome2
sudo apt-get install -qq -y python-rsvg ipython
fi
diff --git a/AUTHORS b/AUTHORS
index afa667d..3126cf4 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -15,3 +15,5 @@
* Hovaidi Ardestani Mohammad <mohammad.hovaidi.ardestani@aalto.fi>
* Michael Sweatt <https://www.linkedin.com/in/michaelsweatt>
* Wentao Shang <http://irl.cs.ucla.edu/~wentao/>
+ * Christian Kreuzberger <christian.kreuzberger@itec.aau.at>
+ * Yuanzhi Gao <billmaxwell@ucla.edu>
diff --git a/docs/Doxyfile b/docs/Doxyfile
index b8d1823..0ffcccf 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -1966,6 +1966,7 @@
NS_LOG_COMPONENT_DEFINE \
NFD_LOG_INIT \
BOOST_CONCEPT_ASSERT \
+ BOOST_CONCEPT_REQUIRES \
PUBLIC_WITH_TESTS_ELSE_PROTECTED=protected \
PUBLIC_WITH_TESTS_ELSE_PRIVATE=private \
PROTECTED_WITH_TESTS_ELSE_PRIVATE=private \
@@ -1973,7 +1974,11 @@
DECL_OVERRIDE \
ATTRIBUTE_HELPER_CPP \
NDN_CXX_KEYCHAIN_REGISTER_PIB \
- NDN_CXX_KEYCHAIN_REGISTER_TPM
+ NDN_CXX_KEYCHAIN_REGISTER_TPM \
+ NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE \
+ NFD_LOG_INCLASS_2TEMPLATE_SPECIALIZATION_DEFINE \
+ NDN_CXX_DECL_OVERRIDE=override \
+ NDN_CXX_DECL_FINAL=final
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
diff --git a/docs/redmine_issue.py b/docs/redmine_issue.py
new file mode 100644
index 0000000..35c3b12
--- /dev/null
+++ b/docs/redmine_issue.py
@@ -0,0 +1,70 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+# Based on http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html
+
+"""Integration of Sphinx with Redmine.
+"""
+
+from docutils import nodes, utils
+from docutils.parsers.rst.roles import set_classes
+
+def redmine_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
+ """Link to a Redmine issue.
+
+ Returns 2 part tuple containing list of nodes to insert into the
+ document and a list of system messages. Both are allowed to be
+ empty.
+
+ :param name: The role name used in the document.
+ :param rawtext: The entire markup snippet, with role.
+ :param text: The text marked with the role.
+ :param lineno: The line number where rawtext appears in the input.
+ :param inliner: The inliner instance that called us.
+ :param options: Directive options for customization.
+ :param content: The directive content for customization.
+ """
+ try:
+ issue_num = int(text)
+ if issue_num <= 0:
+ raise ValueError
+ except ValueError:
+ msg = inliner.reporter.error(
+ 'Redmine issue number must be a number greater than or equal to 1; '
+ '"%s" is invalid.' % text, line=lineno)
+ prb = inliner.problematic(rawtext, rawtext, msg)
+ return [prb], [msg]
+ app = inliner.document.settings.env.app
+ node = make_link_node(rawtext, app, 'issues', str(issue_num), options)
+ return [node], []
+
+def make_link_node(rawtext, app, type, slug, options):
+ """Create a link to a Redmine resource.
+
+ :param rawtext: Text being replaced with link node.
+ :param app: Sphinx application context
+ :param type: Link type (issue, changeset, etc.)
+ :param slug: ID of the thing to link to
+ :param options: Options dictionary passed to role func.
+ """
+ #
+ try:
+ base = app.config.redmine_project_url
+ if not base:
+ raise AttributeError
+ except AttributeError, err:
+ raise ValueError('redmine_project_url configuration value is not set (%s)' % str(err))
+ #
+ slash = '/' if base[-1] != '/' else ''
+ ref = base + slash + type + '/' + slug + '/'
+ set_classes(options)
+ node = nodes.reference(rawtext, 'Issue #' + utils.unescape(slug), refuri=ref,
+ **options)
+ return node
+
+def setup(app):
+ """Install the plugin.
+
+ :param app: Sphinx application context.
+ """
+ app.add_role('issue', redmine_role)
+ app.add_config_value('redmine_project_url', None, 'env')
+ return
diff --git a/docs/source/RELEASE_NOTES.rst b/docs/source/RELEASE_NOTES.rst
index 3b33d33..babf221 100644
--- a/docs/source/RELEASE_NOTES.rst
+++ b/docs/source/RELEASE_NOTES.rst
@@ -5,8 +5,150 @@
All of the ndnSIM documentation is accessible from the `ndnSIM website <http://ndnsim.net>`__.
-Release 2.0
------------
+Release 2.1 (Changes since release 2.0)
+---------------------------------------
+
+Release date: September 4, 2015
+
+Overview
+~~~~~~~~
+
+- Integration with ndn-cxx and NFD codebases has been refactored to include ndn-cxx and
+ NFD repositories as git submodules within ndnSIM repository (:issue:`3138`).
+
+ This refactoring simplifies upgrading ndn-cxx and NFD to new versions and prevents old
+ simulation code to break because of API changes in newer versions of ndn-cxx library.
+
+ .. note::
+ In order to retrieve the marked versions of ndn-cxx and NFD, use ``--recursive``
+ option to the git clone command or run ``git submodule update --init`` after clone,
+ pull, or merge.
+
+- The official home for ndnSIM codebase has been moved to `GitHub named-data-ndnSIM
+ organization <https://github.com/named-data-ndnSIM>`__ (:issue:`3123`):
+
+ * `ndnSIM codebase <https://github.com/named-data-ndnSIM/ndnSIM>`__
+ * `Modified version of ndn-cxx <https://github.com/named-data-ndnSIM/ndn-cxx>`__
+ * `Modified version of NFD <https://github.com/named-data-ndnSIM/NFD>`__
+ * `Modified version of NS-3 <https://github.com/named-data-ndnSIM/ns-3-dev>`__
+ * `Modified version of python bindings generator <https://github.com/named-data-ndnSIM/pybindgen>`__
+
+- Modified version of NS-3 was updated to (rebased on top of) version 2.23-dev, with
+ ndnSIM codebase adjusted to reflect API changes (:issue:`3122`)
+
+- NFD and ndn-cxx has been upgraded to version 0.3.4 (:issue:`3125`)
+
+New features
+~~~~~~~~~~~~
+
+- ndnSIM-specific version of :ndnsim:`ndn::Face` (:issue:`2370`)
+
+ The updated version of :ndnsim:`ndn::Face` specially designed to allow writing
+ simulation applications in the same way as real applications. It is also possible to
+ directly use codebase of the existing applications to drive simulations, provided that
+ the codebase meets or can be adjusted to meet the requirements listed in
+ :doc:`guide-to-simulate-real-apps`.
+
+- Full support for NFD'S RIB manager (:issue:`2370`)
+
+ .. note::
+ RIB manager support is currently available only for applications based on ndn-cxx.
+ :ndnsim:`FibHelper::AddRoute` and :ndnsim:`FibHelper::RemoveRoute` used by
+ :ndnsim:`ndn::Producer` and :ndnsim:`ndn::GlobalRoutingHelper` are currently
+ interacting directly with NFD's FIB manager. This issue will be resolved in the next
+ release of ndnSIM (:issue:`3121`)
+
+- Tutorial and example on how to speed up simulations with MPI module of NS-3:
+ `<http://ndnsim.net/2.0/parallel-simulations.html>`__
+
+- Two new helpers to simplify writing basic simulation scenarios:
+
+ - :ndnsim:`ScenarioHelper` leverages C++11 constructs to write scenarios. Example:
+
+ .. code-block:: c++
+
+ ScenarioHelper helper;
+ helper.createTopology({
+ {"1", "2"},
+ {"2", "3"}
+ });
+
+ helper.addRoutes({
+ {"1", "2", "/prefix", 1},
+ {"2", "3", "/prefix", 1}
+ });
+
+ helper.addApps({
+ {"1", "ns3::ndn::ConsumerCbr",
+ {{"Prefix", "/prefix"}, {"Frequency", "1"}},
+ "0s", "100s"},
+ {"3", "ns3::ndn::Producer",
+ {{"Prefix", "/prefix"}, {"PayloadSize", "1024"}},
+ "0s", "100s"}
+ });
+
+
+ - :ndnsim:`FactoryCallbackApp` simplifies creation of basic apps without creating a
+ separate class that is derived from ``ns3::Applications``. Example:
+
+ .. code-block:: c++
+
+ class SomeApp
+ {
+ public:
+ SomeApp(size_t initParameter);
+ ...
+ };
+
+ FactoryCallbackApp::Install(node, [] () -> shared_ptr<void> {
+ return make_shared<SomeApp>(42);
+ })
+ .Start(Seconds(1.01));
+
+Improvements and bug fixes
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Updates of ndnSIM documentation
+
+ * Updated the structure for the `ndnSIM website index page <http://ndnsim.net>`__
+ * Updated installation instructions to reflect refactoring and relocation of ndnSIM codebase
+ * API documentation (doxygen) improvements
+ * Updated list of ndnSIM research papers
+
+- The NDN stack can now be updated to handle any simulation topology changes after
+ its initial installation on a node (:issue:`2717`)
+
+- Application ID that appears in :ndnsim:`ndn::AppDelayTracer` output is now ID of the
+ application on the node, not ID of the application face that was used previously.
+
+- FibHelper has been extended to support route removals (:issue:`2358`)
+
+- ndnSIM codebase now partially covered with unit-tests (:issue:`2369`, :issue:`3059`,
+ :issue:`2783`)
+
+- Bugfixes:
+
+ * In :ndnsim:`ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes` that caused crash in
+ some cases (:issue:`2535`)
+
+ * In FailLink and Uplink methods of :ndnsim:`ndn::LinkControlHelper` class that affected
+ more links than requested (:issue:`2783`)
+
+ * With hop count of data packets retrieved from the Contest Store of NFD (:issue:`2764`)
+
+ * In :ndnsim:`ndn::Producer` application that caused a wrong dummy signature to be added
+ to the constructed data packets (:issue:`2927`)
+
+
+
+********************************************************************************
+
+
+
+Release 2.0 (Changes since release 1.0)
+---------------------------------------
+
+Release date: January 13, 2015
Overview
~~~~~~~~
@@ -36,7 +178,7 @@
New Features
~~~~~~~~~~~~
-- Integration with NFD codebase:
+- Integration with NFD codebase.
- A realistic behavior is added to the simulations.
- Forwarding plane extensions can be used in both ndnSIM simulations and real NFD deployment.
- Per namespace forwarding strategies for different namespaces (one strategy per namespace).
diff --git a/docs/source/_templates/indexcontent.html b/docs/source/_templates/indexcontent.html
index 55a4b08..0a9cfbb 100644
--- a/docs/source/_templates/indexcontent.html
+++ b/docs/source/_templates/indexcontent.html
@@ -93,6 +93,7 @@
<p class="biglink"><a class="biglink" href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">ndnSIM mailing list</a><br/>
<span class="linkdescr"><a href="http://www.lists.cs.ucla.edu/pipermail/ndnsim/" target="_blank">mailing list archives</a></span></p>
+ <p class="biglink"><a class="biglink" href="{{ pathto("meta/authors") }}">ndnSIM Team</a></p>
<p class="biglink"><a class="biglink" href="{{ pathto("meta/copying") }}">Copyright and License</a></p>
</div>
</td>
diff --git a/docs/source/conf.py b/docs/source/conf.py
index c648be3..8a5d508 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -11,12 +11,12 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
-import sys, os
+import sys, os, re
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+sys.path.insert(0, os.path.abspath('..'))
# -- General configuration -----------------------------------------------------
@@ -25,8 +25,32 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = [ "sphinx.ext.autodoc", "sphinx.ext.mathjax", "sphinxcontrib.doxylink", "sphinxcontrib.aafig", "sphinxcontrib.googleanalytics", "sphinxcontrib.bibtex" ]
+extensions = [
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.mathjax',
+ 'sphinxcontrib.doxylink',
+ 'sphinxcontrib.aafig',
+ 'sphinxcontrib.googleanalytics',
+ 'sphinxcontrib.bibtex',
+ 'redmine_issue'
+]
+# def addExtensionIfExists(extension):
+# try:
+# __import__(extension)
+# extensions.append(extension)
+# except ImportError:
+# sys.stderr.write("Extension '%s' in not available. "
+# "Some documentation may not build correctly.\n" % extension)
+# sys.stderr.write("To install, use \n"
+# " sudo pip install %s\n" % extension.replace('.', '-'))
+
+# addExtensionIfExists('sphinxcontrib.doxylink')
+
+# if os.getenv('GOOGLE_ANALYTICS', None):
+# addExtensionIfExists('sphinxcontrib.googleanalytics')
+
+
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -255,3 +279,5 @@
aafig_format = {'latex': 'pdf', 'html': 'svg', 'text': None}
# aafig_default_options = dict(Fixed=True)
+
+redmine_project_url = "http://redmine.named-data.net/"
diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index 4c4c981..f976b8d 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -49,7 +49,7 @@
Specifically, the simulator directly uses NFD implementations of :nfd:`pending Interest
table (PIT) <nfd::Pit>`, :nfd:`forwarding information base (FIB) <nfd::Fib>`, and
-:nfd:`content store <nfd::Cs>` data structures. In addition to that, ndnSIM allows
+:nfd:`content store <nfd::cs::Cs>` data structures. In addition to that, ndnSIM allows
experimentation with :ndnSIM:`ndnSIM-specific content store <ndn::ContentStore>` along
with its cache replacement policies ported from the previous version of ndnSIM.
diff --git a/docs/source/meta/authors.rst b/docs/source/meta/authors.rst
new file mode 100644
index 0000000..875d98f
--- /dev/null
+++ b/docs/source/meta/authors.rst
@@ -0,0 +1,4 @@
+ndnSIM Team
+===========
+
+.. include:: ../../../AUTHORS