--- a/doc/testing/source/testing-framework.rst Tue Apr 26 15:38:09 2011 -0400
+++ b/doc/testing/source/testing-framework.rst Tue Apr 26 12:53:50 2011 -0700
@@ -109,25 +109,31 @@
Options:
-h, --help show this help message and exit
+ -b BUILDPATH, --buildpath=BUILDPATH
+ specify the path where ns-3 was built (defaults to the
+ build directory for the current variant)
-c KIND, --constrain=KIND
constrain the test-runner by kind of test
-e EXAMPLE, --example=EXAMPLE
- specify a single example to run
+ specify a single example to run (with relative path)
-g, --grind run the test suites and examples using valgrind
-k, --kinds print the kinds of tests available
-l, --list print the list of known tests
-m, --multiple report multiple failures from test suites and test
cases
-n, --nowaf do not run waf before starting testing
+ -p PYEXAMPLE, --pyexample=PYEXAMPLE
+ specify a single python example to run (with relative
+ path)
+ -r, --retain retain all temporary files (which are normally
+ deleted)
-s TEST-SUITE, --suite=TEST-SUITE
specify a single test suite to run
+ -t TEXT-FILE, --text=TEXT-FILE
+ write detailed test results into TEXT-FILE.txt
-v, --verbose print progress and informational messages
-w HTML-FILE, --web=HTML-FILE, --html=HTML-FILE
write detailed test results into HTML-FILE.html
- -r, --retain retain all temporary files (which are normally
- deleted)
- -t TEXT-FILE, --text=TEXT-FILE
- write detailed test results into TEXT-FILE.txt
-x XML-FILE, --xml=XML-FILE
write detailed test results into XML-FILE.xml
@@ -271,18 +277,44 @@
Any of these listed suites can be selected to be run by itself using the
``--suite`` option as shown above.
-Similarly to test suites, one can run a single example program using the ``--example``
-option.
+Similarly to test suites, one can run a single C++ example program
+using the ``--example`` option. Note that the relative path for the
+example must be included and that the executables built for C++
+examples do not have extensions. Entering
::
- ./test.py --example=udp-echo
+ ./test.py --example=examples/udp/udp-echo
results in that single example being run.
::
- PASS: Example udp-echo
+ PASS: Example examples/udp/udp-echo
+
+You can specify the directory where ns-3 was built using the
+``--buildpath`` option as follows.
+
+::
+
+ ./test.py --buildpath=/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build/debug --example=examples/wireless/wifi-simple-adhoc
+
+One can run a single Python example program using the ``--pyexample``
+option. Note that the relative path for the example must be included
+and that Python examples do need their extensions. Entering
+
+::
+
+ ./test.py --pyexample=examples/tutorial/first.py
+
+results in that single example being run.
+
+::
+
+ PASS: Example examples/tutorial/first.py
+
+Because Python examples are not built, you do not need to specify the
+directory where ns-3 was built to run them.
Normally when example programs are executed, they write a large amount of trace
file data. This is normally saved to the base directory of the distribution
--- a/src/mpi/bindings/callbacks_list.py Tue Apr 26 15:38:09 2011 -0400
+++ b/src/mpi/bindings/callbacks_list.py Tue Apr 26 12:53:50 2011 -0700
@@ -1,2 +1,3 @@
callback_classes = [
+ ['void', 'ns3::Ptr<ns3::Packet>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
]
--- a/src/mpi/bindings/modulegen__gcc_ILP32.py Tue Apr 26 15:38:09 2011 -0400
+++ b/src/mpi/bindings/modulegen__gcc_ILP32.py Tue Apr 26 12:53:50 2011 -0700
@@ -44,8 +44,6 @@
module.add_class('LbtsMessage')
## mpi-interface.h (module 'mpi'): ns3::MpiInterface [class]
module.add_class('MpiInterface')
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice [class]
- module.add_class('MpiNetDevice', allow_subclassing=True)
## object-base.h (module 'core'): ns3::ObjectBase [class]
module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
## object.h (module 'core'): ns3::ObjectDeleter [struct]
@@ -144,6 +142,8 @@
module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
## event-impl.h (module 'core'): ns3::EventImpl [class]
module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver [class]
+ module.add_class('MpiReceiver', parent=root_module['ns3::Object'])
## nix-vector.h (module 'network'): ns3::NixVector [class]
module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
@@ -184,7 +184,6 @@
register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
register_Ns3LbtsMessage_methods(root_module, root_module['ns3::LbtsMessage'])
register_Ns3MpiInterface_methods(root_module, root_module['ns3::MpiInterface'])
- register_Ns3MpiNetDevice_methods(root_module, root_module['ns3::MpiNetDevice'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
@@ -230,6 +229,7 @@
register_Ns3DistributedSimulatorImpl_methods(root_module, root_module['ns3::DistributedSimulatorImpl'])
register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+ register_Ns3MpiReceiver_methods(root_module, root_module['ns3::MpiReceiver'])
register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
@@ -773,22 +773,6 @@
is_static=True)
return
-def register_Ns3MpiNetDevice_methods(root_module, cls):
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice() [constructor]
- cls.add_constructor([])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice(ns3::MpiNetDevice const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::MpiNetDevice const &', 'arg0')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::MpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('MpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::DoMpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('DoMpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')],
- is_pure_virtual=True, visibility='protected', is_virtual=True)
- return
-
def register_Ns3ObjectBase_methods(root_module, cls):
## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
cls.add_constructor([])
@@ -2401,6 +2385,26 @@
is_pure_virtual=True, visibility='protected', is_virtual=True)
return
+def register_Ns3MpiReceiver_methods(root_module, cls):
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver::MpiReceiver() [constructor]
+ cls.add_constructor([])
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver::MpiReceiver(ns3::MpiReceiver const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::MpiReceiver const &', 'arg0')])
+ ## mpi-receiver.h (module 'mpi'): static ns3::TypeId ns3::MpiReceiver::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## mpi-receiver.h (module 'mpi'): void ns3::MpiReceiver::Receive(ns3::Ptr<ns3::Packet> p) [member function]
+ cls.add_method('Receive',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet >', 'p')])
+ ## mpi-receiver.h (module 'mpi'): void ns3::MpiReceiver::SetReceiveCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+ cls.add_method('SetReceiveCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ return
+
def register_Ns3NixVector_methods(root_module, cls):
cls.add_output_stream_operator()
## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
--- a/src/mpi/bindings/modulegen__gcc_LP64.py Tue Apr 26 15:38:09 2011 -0400
+++ b/src/mpi/bindings/modulegen__gcc_LP64.py Tue Apr 26 12:53:50 2011 -0700
@@ -44,8 +44,6 @@
module.add_class('LbtsMessage')
## mpi-interface.h (module 'mpi'): ns3::MpiInterface [class]
module.add_class('MpiInterface')
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice [class]
- module.add_class('MpiNetDevice', allow_subclassing=True)
## object-base.h (module 'core'): ns3::ObjectBase [class]
module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
## object.h (module 'core'): ns3::ObjectDeleter [struct]
@@ -144,6 +142,8 @@
module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
## event-impl.h (module 'core'): ns3::EventImpl [class]
module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver [class]
+ module.add_class('MpiReceiver', parent=root_module['ns3::Object'])
## nix-vector.h (module 'network'): ns3::NixVector [class]
module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
@@ -184,7 +184,6 @@
register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
register_Ns3LbtsMessage_methods(root_module, root_module['ns3::LbtsMessage'])
register_Ns3MpiInterface_methods(root_module, root_module['ns3::MpiInterface'])
- register_Ns3MpiNetDevice_methods(root_module, root_module['ns3::MpiNetDevice'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
@@ -230,6 +229,7 @@
register_Ns3DistributedSimulatorImpl_methods(root_module, root_module['ns3::DistributedSimulatorImpl'])
register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+ register_Ns3MpiReceiver_methods(root_module, root_module['ns3::MpiReceiver'])
register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
@@ -773,22 +773,6 @@
is_static=True)
return
-def register_Ns3MpiNetDevice_methods(root_module, cls):
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice() [constructor]
- cls.add_constructor([])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice(ns3::MpiNetDevice const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::MpiNetDevice const &', 'arg0')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::MpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('MpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::DoMpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('DoMpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')],
- is_pure_virtual=True, visibility='protected', is_virtual=True)
- return
-
def register_Ns3ObjectBase_methods(root_module, cls):
## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
cls.add_constructor([])
@@ -2401,6 +2385,26 @@
is_pure_virtual=True, visibility='protected', is_virtual=True)
return
+def register_Ns3MpiReceiver_methods(root_module, cls):
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver::MpiReceiver() [constructor]
+ cls.add_constructor([])
+ ## mpi-receiver.h (module 'mpi'): ns3::MpiReceiver::MpiReceiver(ns3::MpiReceiver const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::MpiReceiver const &', 'arg0')])
+ ## mpi-receiver.h (module 'mpi'): static ns3::TypeId ns3::MpiReceiver::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## mpi-receiver.h (module 'mpi'): void ns3::MpiReceiver::Receive(ns3::Ptr<ns3::Packet> p) [member function]
+ cls.add_method('Receive',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet >', 'p')])
+ ## mpi-receiver.h (module 'mpi'): void ns3::MpiReceiver::SetReceiveCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+ cls.add_method('SetReceiveCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ return
+
def register_Ns3NixVector_methods(root_module, cls):
cls.add_output_stream_operator()
## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
--- a/src/point-to-point/bindings/modulegen__gcc_ILP32.py Tue Apr 26 15:38:09 2011 -0400
+++ b/src/point-to-point/bindings/modulegen__gcc_ILP32.py Tue Apr 26 12:53:50 2011 -0700
@@ -66,8 +66,6 @@
module.add_class('Mac48Address', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
root_module['ns3::Mac48Address'].implicitly_converts_to(root_module['ns3::Address'])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice [class]
- module.add_class('MpiNetDevice', allow_subclassing=True, import_from_module='ns.mpi')
## net-device-container.h (module 'network'): ns3::NetDeviceContainer [class]
module.add_class('NetDeviceContainer', import_from_module='ns.network')
## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -221,7 +219,7 @@
## point-to-point-channel.h (module 'point-to-point'): ns3::PointToPointChannel [class]
module.add_class('PointToPointChannel', parent=root_module['ns3::Channel'])
## point-to-point-net-device.h (module 'point-to-point'): ns3::PointToPointNetDevice [class]
- module.add_class('PointToPointNetDevice', parent=[root_module['ns3::NetDevice'], root_module['ns3::MpiNetDevice']])
+ module.add_class('PointToPointNetDevice', parent=root_module['ns3::NetDevice'])
## point-to-point-remote-channel.h (module 'point-to-point'): ns3::PointToPointRemoteChannel [class]
module.add_class('PointToPointRemoteChannel', parent=root_module['ns3::PointToPointChannel'])
## nstime.h (module 'core'): ns3::TimeChecker [class]
@@ -267,7 +265,6 @@
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
- register_Ns3MpiNetDevice_methods(root_module, root_module['ns3::MpiNetDevice'])
register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -1471,22 +1468,6 @@
is_static=True)
return
-def register_Ns3MpiNetDevice_methods(root_module, cls):
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice() [constructor]
- cls.add_constructor([])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice(ns3::MpiNetDevice const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::MpiNetDevice const &', 'arg0')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::MpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('MpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::DoMpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('DoMpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')],
- is_pure_virtual=True, visibility='protected', is_virtual=True)
- return
-
def register_Ns3NetDeviceContainer_methods(root_module, cls):
## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
@@ -4284,7 +4265,7 @@
cls.add_method('DoMpiReceive',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
- visibility='protected', is_virtual=True)
+ visibility='protected')
## point-to-point-net-device.h (module 'point-to-point'): void ns3::PointToPointNetDevice::DoDispose() [member function]
cls.add_method('DoDispose',
'void',
--- a/src/point-to-point/bindings/modulegen__gcc_LP64.py Tue Apr 26 15:38:09 2011 -0400
+++ b/src/point-to-point/bindings/modulegen__gcc_LP64.py Tue Apr 26 12:53:50 2011 -0700
@@ -66,8 +66,6 @@
module.add_class('Mac48Address', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
root_module['ns3::Mac48Address'].implicitly_converts_to(root_module['ns3::Address'])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice [class]
- module.add_class('MpiNetDevice', allow_subclassing=True, import_from_module='ns.mpi')
## net-device-container.h (module 'network'): ns3::NetDeviceContainer [class]
module.add_class('NetDeviceContainer', import_from_module='ns.network')
## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -221,7 +219,7 @@
## point-to-point-channel.h (module 'point-to-point'): ns3::PointToPointChannel [class]
module.add_class('PointToPointChannel', parent=root_module['ns3::Channel'])
## point-to-point-net-device.h (module 'point-to-point'): ns3::PointToPointNetDevice [class]
- module.add_class('PointToPointNetDevice', parent=[root_module['ns3::NetDevice'], root_module['ns3::MpiNetDevice']])
+ module.add_class('PointToPointNetDevice', parent=root_module['ns3::NetDevice'])
## point-to-point-remote-channel.h (module 'point-to-point'): ns3::PointToPointRemoteChannel [class]
module.add_class('PointToPointRemoteChannel', parent=root_module['ns3::PointToPointChannel'])
## nstime.h (module 'core'): ns3::TimeChecker [class]
@@ -267,7 +265,6 @@
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
- register_Ns3MpiNetDevice_methods(root_module, root_module['ns3::MpiNetDevice'])
register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -1471,22 +1468,6 @@
is_static=True)
return
-def register_Ns3MpiNetDevice_methods(root_module, cls):
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice() [constructor]
- cls.add_constructor([])
- ## mpi-net-device.h (module 'mpi'): ns3::MpiNetDevice::MpiNetDevice(ns3::MpiNetDevice const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::MpiNetDevice const &', 'arg0')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::MpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('MpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')])
- ## mpi-net-device.h (module 'mpi'): void ns3::MpiNetDevice::DoMpiReceive(ns3::Ptr<ns3::Packet> p) [member function]
- cls.add_method('DoMpiReceive',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p')],
- is_pure_virtual=True, visibility='protected', is_virtual=True)
- return
-
def register_Ns3NetDeviceContainer_methods(root_module, cls):
## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
@@ -4284,7 +4265,7 @@
cls.add_method('DoMpiReceive',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
- visibility='protected', is_virtual=True)
+ visibility='protected')
## point-to-point-net-device.h (module 'point-to-point'): void ns3::PointToPointNetDevice::DoDispose() [member function]
cls.add_method('DoDispose',
'void',
--- a/test.py Tue Apr 26 15:38:09 2011 -0400
+++ b/test.py Tue Apr 26 12:53:50 2011 -0700
@@ -676,14 +676,17 @@
#
VALGRIND_SUPPRESSIONS_FILE = "testpy.supp"
-def run_job_synchronously(shell_command, directory, valgrind, is_python):
+def run_job_synchronously(shell_command, directory, valgrind, is_python, build_path=""):
(base, build) = os.path.split (NS3_BUILDDIR)
suppressions_path = os.path.join (base, VALGRIND_SUPPRESSIONS_FILE)
if is_python:
path_cmd = "python " + os.path.join (base, shell_command)
else:
- path_cmd = os.path.join (NS3_BUILDDIR, NS3_ACTIVE_VARIANT, shell_command)
+ if len(build_path):
+ path_cmd = os.path.join (build_path, shell_command)
+ else:
+ path_cmd = os.path.join (NS3_BUILDDIR, NS3_ACTIVE_VARIANT, shell_command)
if valgrind:
cmd = "valgrind --suppressions=%s --leak-check=full --show-reachable=yes --error-exitcode=2 %s" % (suppressions_path,
@@ -737,6 +740,7 @@
self.tmp_file_name = ""
self.returncode = False
self.elapsed_time = 0
+ self.build_path = ""
#
# A job is either a standard job or a special job indicating that a worker
@@ -780,6 +784,14 @@
self.shell_command = shell_command
#
+ # This is the build path where ns-3 was built. For example,
+ #
+ # "/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build/debug"
+ #
+ def set_build_path(self, build_path):
+ self.build_path = build_path
+
+ #
# This is the dispaly name of the job, typically the test suite or example
# name. For example,
#
@@ -892,7 +904,7 @@
# "examples/mixed-wireless.py"
#
(job.returncode, standard_out, standard_err, et) = run_job_synchronously(job.shell_command,
- job.cwd, options.valgrind, job.is_pyexample)
+ job.cwd, options.valgrind, job.is_pyexample, job.build_path)
else:
#
# If we're a test suite, we need to provide a little more info
@@ -1269,6 +1281,7 @@
job.set_basedir(os.getcwd())
job.set_tempdir(testpy_output_dir)
job.set_shell_command(test)
+ job.set_build_path("")
if options.valgrind and not eval(do_valgrind_run):
job.set_is_skip (True)
@@ -1293,7 +1306,8 @@
job.set_cwd(testpy_output_dir)
job.set_basedir(os.getcwd())
job.set_tempdir(testpy_output_dir)
- job.set_shell_command("examples/%s" % options.example)
+ job.set_shell_command(options.example)
+ job.set_build_path(options.buildpath)
if options.verbose:
print "Queue %s" % options.example
@@ -1336,6 +1350,7 @@
job.set_basedir(os.getcwd())
job.set_tempdir(testpy_output_dir)
job.set_shell_command(test)
+ job.set_build_path("")
#
# Python programs and valgrind do not work and play
@@ -1374,7 +1389,8 @@
job.set_cwd(testpy_output_dir)
job.set_basedir(os.getcwd())
job.set_tempdir(testpy_output_dir)
- job.set_shell_command("examples/%s" % options.pyexample)
+ job.set_shell_command(options.pyexample)
+ job.set_build_path("")
if options.verbose:
print "Queue %s" % options.pyexample
@@ -1595,13 +1611,17 @@
def main(argv):
parser = optparse.OptionParser()
+ parser.add_option("-b", "--buildpath", action="store", type="string", dest="buildpath", default="",
+ metavar="BUILDPATH",
+ help="specify the path where ns-3 was built (defaults to the build directory for the current variant)")
+
parser.add_option("-c", "--constrain", action="store", type="string", dest="constrain", default="",
metavar="KIND",
help="constrain the test-runner by kind of test")
parser.add_option("-e", "--example", action="store", type="string", dest="example", default="",
metavar="EXAMPLE",
- help="specify a single example to run")
+ help="specify a single example to run (with relative path)")
parser.add_option("-g", "--grind", action="store_true", dest="valgrind", default=False,
help="run the test suites and examples using valgrind")
@@ -1620,7 +1640,7 @@
parser.add_option("-p", "--pyexample", action="store", type="string", dest="pyexample", default="",
metavar="PYEXAMPLE",
- help="specify a single python example to run")
+ help="specify a single python example to run (with relative path)")
parser.add_option("-r", "--retain", action="store_true", dest="retain", default=False,
help="retain all temporary files (which are normally deleted)")