diff -r 000000000000 -r 2b3e5ec03512 test/comparison/base-dtn-proactive.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/comparison/base-dtn-proactive.conf Thu Apr 21 14:57:45 2011 +0100 @@ -0,0 +1,233 @@ + +# Start of base-dtn conf file +# Use in conjuction with dtn-cmd-half.sh +# Needs value of : $id, $maxnodes, $tmp_logdir, $perhop, dtn2testroot, localdir +# set id 1 +# set maxnodes 4 +# set perhop 0 +# set tmp_logdir /tmp/$exp/$nodeid +# set dtn2testroot /proj/DTN/nsdi/DTN2/test +# set localdir ... +# set ftplogfile ... + + +set fd_ftplog [open $ftplogfile w] + +log /daemon INFO "bundle daemon config running for node id $id..." + +log /daemon INFO "incoming bundles are in $localdir " + + + + +set tmpdir $tmp_logdir +set localhost node-$id + +set dest node-$maxnodes + + +set tidy [storage set tidy] +set port 5000 +set region emulab + + +set dbdir "$tmpdir/bundledb" +set payloaddir "$tmpdir/bundles" + + + + +# +# pull in the test utilities +# + +source "$dtn2testroot/file-injector.tcl" +source "$dtn2testroot/tcl-registration.tcl" + +foreach dir [list $dbdir $payloaddir ] { + if {! [file exists $dir]} { + file mkdir $dir + } +} + +# clean up +if {$tidy} { + puts "tidy option set, cleaning payload and local file dirs" + foreach dir [list $dbdir $payloaddir] { + file delete -force $dir + file mkdir $dir + } +} + +# validate the directories (XXX/demmer move this into C eventually) +foreach dirtype [list dbdir payloaddir] { + set dir [set $dirtype] + if {! [file exists $dir]} { + error "$dirtype directory $dir doesn't exist" + } + + if {[file type $dir] != "directory"} { + error "$dirtype directory $dir is not a directory" + } + + if {[glob -nocomplain $dir/*] != {}} { + error "$dirtype directory $dir not empty and re-reading state not implemented \ + (use the -t option)" + } +} + + + +# initialize storage +storage set dbdir $dbdir +# XXX/demmer make this "storage type" +storage init berkeleydb + +# set the payload directory and other params +param set payload_dir $payloaddir +param set tcpcl_ack_blocksz 4096 + + +# param set payload_test_no_remove true +# param set tcpcl_test_fragment_size 40960 + + +param set proactive_frag_threshold 40960 + + +# set a local tcp interface +#if {$id != 1} { +# set localhost node-$id-link-[expr $id - 1] +#} + +set tcp_local_eid bundles://$region/tcp://$localhost:$port/ +interface $tcp_local_eid + +# and a file one +# set file_local_eid file://unix/file://$localdir/ +# interface $file_local_eid + + +# +# set up routing... +# Line topology assumed + + +set peer node-[expr $id + 1] + +# Set up e2e routing for source +if {$perhop == 0} { + if {$id == 1} { + set peer node-$maxnodes + } +} + + +# No routing next hop for end of the line topology +if {$id != $maxnodes} { + set tcp_peer_eid bundles://$region/tcp://$peer:$port/ + # with a tcp route +# route add bundles://$region/bundles://$peer/* $tcp_peer_eid ONDEMAND +# route add bundles://$region/bundles://*/* $tcp_peer_eid ONDEMAND + route add bundles://$region/bundles://$dest/* $tcp_peer_eid ONDEMAND + + log /daemon INFO "route added FOR $dest through $tcp_peer_eid" + +} + + + +# +# Use the initscript hook to store some code we want run only _after_ +# everything else is initialized +# + + + + +proc time {} { + return [clock seconds] +} + +proc test_bundle_arrived {regid bundle_info} { + + array set b $bundle_info + global fd_ftplog + if ($b(is_admin)) { + error "Unexpected admin bundle arrival $b(source) -> b($dest)" + } + log /daemon INFO "bundle arrival" + foreach {key val} [array get b] { + if {$key == "payload"} { + log /daemon INFO "payload:\t [string range $b(payload) 0 64]" + } else { + log /daemon INFO "$key:\t $b($key)" + } + } + ## Hack for file tail XXX sushant, check ?? + set tmp ":: bundle arrived [file tail $source] --> [file tail $b(dest)] length $b(length)" + + log /file_injector INFO $tmp + puts $fd_ftplog "[time] $tmp" + flush $fd_ftplog +} + + + + +# test proc for sending a bundle +proc sendbundle {node} { + + global localhost peer port region + set length 1048576 + set length 5000 + + set payload "test bundle payload data\n" + + while {$length - [string length $payload] > 32} { + append payload [format "%4d: 0123456789abcdef\n" [string length $payload]] + } + while {$length > [string length $payload]} { + append payload "." + } + + bundle inject bundles://$region/bundles://$localhost/ \ + bundles://$region/bundles://$node/demux \ + $payload \ + option [list length $length] +} + + +###################################### +#For source + +if {$id == 1} { + log /daemon INFO "At source starting file injector start " + log /daemon INFO "Local dir is: $localdir , Dest is $dest " + + test set initscript { + file_injector_start $localdir bundles://$region/bundles://$localhost/ \ + bundles://$region/bundles://$dest/demux + } +} + +if {$id < $maxnodes} { + if {$id != 1} { + #For intermediate nodes + log /daemon INFO "At forwarding nodes registring logging " + test set initscript { + registration add logger bundles://*/* + } + } +} + +#For dest nodes + +if {$id == $maxnodes} { + log /daemon INFO "At destination registring initscript " + test set initscript { + tcl_registration bundles://*/* test_bundle_arrived + } +} + +######################################