Added testing infrastructure files
authorGeorge Milescu <george.milescu@gmail.com>
Wed, 28 Jul 2010 18:36:26 +0000 (20:36 +0200)
committerGeorge Milescu <george.milescu@gmail.com>
Wed, 28 Jul 2010 18:36:26 +0000 (20:36 +0200)
Signed-off-by: George Milescu <george.milescu@gmail.com>
85 files changed:
ClientWorkingFolders/Proxy01/statedir/ec.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/ecpub.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy01/statedir01.tar.gz [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/ec.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/ecpub.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy02/statedir02.tar.gz [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/ec.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/ecpub.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy03/statedir03.tar.gz [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/ec.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/ecpub.pem [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb [new file with mode: 0644]
ClientWorkingFolders/Proxy04/statedir04.tar.gz [new file with mode: 0644]
ConfigFiles/campaign01.html [new file with mode: 0644]
ConfigFiles/campaign01.txt [new file with mode: 0644]
ConfigFiles/globalconfig.txt [new file with mode: 0644]
ConfigFiles/scenario01.r [new file with mode: 0644]
ConfigFiles/scenario01.txt [new file with mode: 0644]
ConfigFiles/scenario02.r [new file with mode: 0644]
ConfigFiles/scenario02.txt [new file with mode: 0644]
ConfigFiles/scenario03.r [new file with mode: 0644]
ConfigFiles/scenario03.txt [new file with mode: 0644]
ConfigFiles/scenario04.r [new file with mode: 0644]
ConfigFiles/scenario04.txt [new file with mode: 0644]
ConfigFiles/scenario05.r [new file with mode: 0644]
ConfigFiles/scenario05.txt [new file with mode: 0644]
ConfigFiles/scenario06.r [new file with mode: 0644]
ConfigFiles/scenario06.txt [new file with mode: 0644]
ConfigFiles/scenario07.r [new file with mode: 0644]
ConfigFiles/scenario07.txt [new file with mode: 0644]
ConfigFiles/scenario08.r [new file with mode: 0644]
ConfigFiles/scenario08.txt [new file with mode: 0644]
ConfigFiles/scenario09.r [new file with mode: 0644]
ConfigFiles/scenario09.txt [new file with mode: 0644]
ControlScripts/_bw_limit.old.sh [new file with mode: 0755]
ControlScripts/_cssh_cluster.sh [new file with mode: 0755]
ControlScripts/_cssh_vm.sh [new file with mode: 0755]
ControlScripts/_grep_search.sh [new file with mode: 0755]
ControlScripts/_retrieve_cluster_logs.sh [new file with mode: 0755]
ControlScripts/_show_version.sh [new file with mode: 0755]
ControlScripts/_sync_cluster.sh [new file with mode: 0755]
ControlScripts/_sync_cluster_old.sh [new file with mode: 0755]
ControlScripts/_sync_kth.sh [new file with mode: 0755]
ControlScripts/_sync_swam.cs.pub.ro.sh [new file with mode: 0755]
ControlScripts/_sync_vm.sh [new file with mode: 0755]
ControlScripts/bw_limit.sh [new file with mode: 0755]
ControlScripts/detect_stopped_doe.sh [new file with mode: 0755]
ControlScripts/detect_stopped_proxy.sh [new file with mode: 0755]
ControlScripts/detect_stopped_regular.sh [new file with mode: 0755]
ControlScripts/detect_stopped_seeder.sh [new file with mode: 0755]
ControlScripts/parse_doe.sh [new file with mode: 0755]
ControlScripts/parse_proxy.sh [new file with mode: 0755]
ControlScripts/parse_regular.sh [new file with mode: 0755]
ControlScripts/parse_seeder.sh [new file with mode: 0755]
ControlScripts/run_campaign.sh [new file with mode: 0755]
ControlScripts/run_scenario.sh [new file with mode: 0755]
ControlScripts/start_doe.sh [new file with mode: 0755]
ControlScripts/start_proxy.sh [new file with mode: 0755]
ControlScripts/start_regular.sh [new file with mode: 0755]
ControlScripts/start_seeder.sh [new file with mode: 0755]
ControlScripts/start_tracker.sh [new file with mode: 0755]
ControlScripts/start_tribler.sh [new file with mode: 0755]

diff --git a/ClientWorkingFolders/Proxy01/statedir/ec.pem b/ClientWorkingFolders/Proxy01/statedir/ec.pem
new file mode 100644 (file)
index 0000000..73e3787
--- /dev/null
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHWKMn6oV/8fHSQh3TyiR5j78gFZzXaXaeTc21ZtKoAcGBSuBBAAaoUAD
+PgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZjal+8YJdJtAXj3b1Ss37amig388n12
+lHvnGyXrVk1xZUJ99Gz1
+-----END EC PRIVATE KEY-----
diff --git a/ClientWorkingFolders/Proxy01/statedir/ecpub.pem b/ClientWorkingFolders/Proxy01/statedir/ecpub.pem
new file mode 100644 (file)
index 0000000..59eb12a
--- /dev/null
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZja
+l+8YJdJtAXj3b1Ss37amig388n12lHvnGyXrVk1xZUJ99Gz1
+-----END PUBLIC KEY-----
diff --git a/ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle
new file mode 100644 (file)
index 0000000..534614a
--- /dev/null
@@ -0,0 +1,2 @@
+(dp1
+.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle
new file mode 100644 (file)
index 0000000..90bbb96
--- /dev/null
@@ -0,0 +1,339 @@
+(dp0
+S'superpeer_file'
+p1
+V./Tribler/Core/superpeer.txt
+p2
+sS'install_dir'
+p3
+V.
+p4
+sS'internaltracker'
+p5
+I00
+sS'tracker_only_local_override_ip'
+p6
+I2
+sS'tracker_dfile_format'
+p7
+S'pickle'
+p8
+sS'tracker_aggregator'
+p9
+I0
+sS'magnetlink'
+p10
+I01
+sS'tracker_banned_ips'
+p11
+(lp12
+sS'peer_icon_path'
+p13
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/icons'
+p14
+sS'buddycast'
+p15
+I00
+sS'tracker_show_names'
+p16
+I1
+sS'download_help_dir'
+p17
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/help_dir'
+p18
+sS'puncturing_internal_port'
+p19
+I6700
+sS'buddycast_collecting_solution'
+p20
+I1
+sS'votecast_recent_votes'
+p21
+I25
+sS'tracker_allowed_dir'
+p22
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/itracker'
+p23
+sS'upnp_nat_access'
+p24
+I3
+sS'ip'
+p25
+S''
+p26
+sS'family_filter'
+p27
+I01
+sS'tracker_min_time_between_cache_refreshes'
+p28
+F600.0
+sS'minport'
+p29
+I25123
+sS'tracker_allowed_list'
+p30
+g26
+sS'tracker_dfile'
+p31
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/itracker/tracker.db'
+p32
+sS'tracker_allowed_ips'
+p33
+(lp34
+sS'mainline_dht'
+p35
+I00
+sS'tracker_multitracker_maxpeers'
+p36
+I20
+sS'channelcast_recent_own_subscriptions'
+p37
+I13
+sS'tracker_multitracker_allowed'
+p38
+S'autodetect'
+p39
+sS'votecast_random_votes'
+p40
+I25
+sS'tracker_multitracker_http_timeout'
+p41
+I60
+sS'mugshot'
+p42
+NsS'torrent_checking'
+p43
+I1
+sS'tracker_socket_timeout'
+p44
+I15
+sS'tracker_keep_dead'
+p45
+I0
+sS'dialback_trust_superpeers'
+p46
+I01
+sS'maxport'
+p47
+I25123
+sS'subtitles_upload_rate'
+p48
+I1024
+sS'tracker_hupmonitor'
+p49
+I0
+sS'eckeypairfilename'
+p50
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/ec.pem'
+p51
+sS'videoanalyserpath'
+p52
+S'ffmpeg'
+p53
+sS'multicast_local_peer_discovery'
+p54
+I01
+sS'tracker_aggregate_forward'
+p55
+(lp56
+NaNasS'tracker_url'
+p57
+NsS'timeout'
+p58
+F300.0
+sS'socnet'
+p59
+I01
+sS'tracker_min_time_between_log_flushes'
+p60
+F3.0
+sS'tracker_allowed_controls'
+p61
+I0
+sS'crawler'
+p62
+I01
+sS'channelcast_random_own_subscriptions'
+p63
+I12
+sS'stop_collecting_threshold'
+p64
+I200
+sS'coopdlconfig'
+p65
+NsS'timeout_check_interval'
+p66
+F60.0
+sS'dialback_active'
+p67
+I01
+sS'live_aux_seeders'
+p68
+(lp69
+sS'tracker_timeout_downloaders_interval'
+p70
+I2700
+sS'overlay_max_message_length'
+p71
+I8388608
+sS'tracker_reannounce_interval'
+p72
+I1800
+sS'dialback'
+p73
+I01
+sS'tracker_infopage_redirect'
+p74
+NsS'tracker_multitracker_enabled'
+p75
+I0
+sS'max_channel_query_results'
+p76
+I25
+sS'state_dir'
+p77
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir'
+p78
+sS'tracker_parse_dir_interval'
+p79
+I60
+sS'overlay'
+p80
+I01
+sS'rquery'
+p81
+I01
+sS'tracker_timeout_check_interval'
+p82
+I5
+sS'random_port'
+p83
+I1
+sS'download_help'
+p84
+I01
+sS'subtitles_collecting'
+p85
+I00
+sS'nat_detect'
+p86
+I01
+sS'superpeer'
+p87
+I00
+sS'torrent_collecting'
+p88
+I01
+sS'version'
+p89
+I2
+sS'proxy_mode'
+p90
+I0
+sS'start_recommender'
+p91
+I01
+sS'overlay_log'
+p92
+NsS'stun_servers'
+p93
+(lp94
+(S'stun1.tribler.org'
+p95
+I6701
+tp96
+a(S'stun2.tribler.org'
+p97
+I6702
+tp98
+asS'ipv6_binds_v4'
+p99
+I1
+sS'tracker_response_size'
+p100
+I50
+sS'torrent_checking_period'
+p101
+I31
+sS'buddycast_max_peers'
+p102
+I2500
+sS'pingback_servers'
+p103
+(lp104
+(S'pingback.tribler.org'
+p105
+I6703
+tp106
+a(S'pingback2.tribler.org'
+p107
+I6703
+tp108
+asS'tracker_nat_check'
+p109
+I3
+sS'crawler_file'
+p110
+V./Tribler/Core/Statistics/crawler.txt
+p111
+sS'subtitles_collecting_dir'
+p112
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/collected_subtitles_files'
+p113
+sS'megacache'
+p114
+I01
+sS'tracker_save_dfile_interval'
+p115
+I300
+sS'ipv6_enabled'
+p116
+I0
+sS'nickname'
+p117
+S'tracker'
+p118
+sS'tracker_allow_get'
+p119
+I1
+sS'torrent_collecting_dir'
+p120
+S'../../TestSetup/ClientRunFolders/Proxy01/statedir/collected_torrent_files'
+p121
+sS'tracker_scrape_allowed'
+p122
+S'full'
+p123
+sS'torrent_collecting_rate'
+p124
+I50
+sS'torrent_collecting_max_torrents'
+p125
+I50000
+sS'bind'
+p126
+(lp127
+sS'tracker_multitracker_reannounce_interval'
+p128
+I120
+sS'tracker_show_infopage'
+p129
+I1
+sS'helpers'
+p130
+I5
+sS'tracker_logfile'
+p131
+S'/dev/null'
+p132
+sS'buddycast_interval'
+p133
+I15
+sS'tracker_log_nat_checks'
+p134
+I0
+sS'tracker_favicon'
+p135
+NsS'bartercast'
+p136
+I01
+s.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb
new file mode 100644 (file)
index 0000000..834decf
Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb differ
diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb
new file mode 100644 (file)
index 0000000..d5b1641
Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb
new file mode 100644 (file)
index 0000000..73c996b
Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb differ
diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb
new file mode 100644 (file)
index 0000000..0e975ad
Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy01/statedir01.tar.gz b/ClientWorkingFolders/Proxy01/statedir01.tar.gz
new file mode 100644 (file)
index 0000000..3470cb7
Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir01.tar.gz differ
diff --git a/ClientWorkingFolders/Proxy02/statedir/ec.pem b/ClientWorkingFolders/Proxy02/statedir/ec.pem
new file mode 100644 (file)
index 0000000..e27b008
--- /dev/null
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHQQdnt2Ks+3pCyUrkKCYhlyUlwZ8lqh08lGsb9gyoAcGBSuBBAAaoUAD
+PgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2YAUgT2f4LADwczpflrJQwAXX6xq6o
+0qDmyGPUhET2eDcGcshm
+-----END EC PRIVATE KEY-----
diff --git a/ClientWorkingFolders/Proxy02/statedir/ecpub.pem b/ClientWorkingFolders/Proxy02/statedir/ecpub.pem
new file mode 100644 (file)
index 0000000..0e63b99
--- /dev/null
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2Y
+AUgT2f4LADwczpflrJQwAXX6xq6o0qDmyGPUhET2eDcGcshm
+-----END PUBLIC KEY-----
diff --git a/ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle
new file mode 100644 (file)
index 0000000..534614a
--- /dev/null
@@ -0,0 +1,2 @@
+(dp1
+.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle
new file mode 100644 (file)
index 0000000..beb4c96
--- /dev/null
@@ -0,0 +1,339 @@
+(dp0
+S'superpeer_file'
+p1
+V./Tribler/Core/superpeer.txt
+p2
+sS'install_dir'
+p3
+V.
+p4
+sS'internaltracker'
+p5
+I00
+sS'tracker_only_local_override_ip'
+p6
+I2
+sS'tracker_dfile_format'
+p7
+S'pickle'
+p8
+sS'tracker_aggregator'
+p9
+I0
+sS'magnetlink'
+p10
+I01
+sS'tracker_banned_ips'
+p11
+(lp12
+sS'peer_icon_path'
+p13
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/icons'
+p14
+sS'buddycast'
+p15
+I00
+sS'tracker_show_names'
+p16
+I1
+sS'download_help_dir'
+p17
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/help_dir'
+p18
+sS'puncturing_internal_port'
+p19
+I6700
+sS'buddycast_collecting_solution'
+p20
+I1
+sS'votecast_recent_votes'
+p21
+I25
+sS'tracker_allowed_dir'
+p22
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/itracker'
+p23
+sS'upnp_nat_access'
+p24
+I3
+sS'ip'
+p25
+S''
+p26
+sS'family_filter'
+p27
+I01
+sS'tracker_min_time_between_cache_refreshes'
+p28
+F600.0
+sS'minport'
+p29
+I25123
+sS'tracker_allowed_list'
+p30
+g26
+sS'tracker_dfile'
+p31
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/itracker/tracker.db'
+p32
+sS'tracker_allowed_ips'
+p33
+(lp34
+sS'mainline_dht'
+p35
+I00
+sS'tracker_multitracker_maxpeers'
+p36
+I20
+sS'channelcast_recent_own_subscriptions'
+p37
+I13
+sS'tracker_multitracker_allowed'
+p38
+S'autodetect'
+p39
+sS'votecast_random_votes'
+p40
+I25
+sS'tracker_multitracker_http_timeout'
+p41
+I60
+sS'mugshot'
+p42
+NsS'torrent_checking'
+p43
+I1
+sS'tracker_socket_timeout'
+p44
+I15
+sS'tracker_keep_dead'
+p45
+I0
+sS'dialback_trust_superpeers'
+p46
+I01
+sS'maxport'
+p47
+I25123
+sS'subtitles_upload_rate'
+p48
+I1024
+sS'tracker_hupmonitor'
+p49
+I0
+sS'eckeypairfilename'
+p50
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/ec.pem'
+p51
+sS'videoanalyserpath'
+p52
+S'ffmpeg'
+p53
+sS'multicast_local_peer_discovery'
+p54
+I01
+sS'tracker_aggregate_forward'
+p55
+(lp56
+NaNasS'tracker_url'
+p57
+NsS'timeout'
+p58
+F300.0
+sS'socnet'
+p59
+I01
+sS'tracker_min_time_between_log_flushes'
+p60
+F3.0
+sS'tracker_allowed_controls'
+p61
+I0
+sS'crawler'
+p62
+I01
+sS'channelcast_random_own_subscriptions'
+p63
+I12
+sS'stop_collecting_threshold'
+p64
+I200
+sS'coopdlconfig'
+p65
+NsS'timeout_check_interval'
+p66
+F60.0
+sS'dialback_active'
+p67
+I01
+sS'live_aux_seeders'
+p68
+(lp69
+sS'tracker_timeout_downloaders_interval'
+p70
+I2700
+sS'overlay_max_message_length'
+p71
+I8388608
+sS'tracker_reannounce_interval'
+p72
+I1800
+sS'dialback'
+p73
+I01
+sS'tracker_infopage_redirect'
+p74
+NsS'tracker_multitracker_enabled'
+p75
+I0
+sS'max_channel_query_results'
+p76
+I25
+sS'state_dir'
+p77
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir'
+p78
+sS'tracker_parse_dir_interval'
+p79
+I60
+sS'overlay'
+p80
+I01
+sS'rquery'
+p81
+I01
+sS'tracker_timeout_check_interval'
+p82
+I5
+sS'random_port'
+p83
+I1
+sS'download_help'
+p84
+I01
+sS'subtitles_collecting'
+p85
+I00
+sS'nat_detect'
+p86
+I01
+sS'superpeer'
+p87
+I00
+sS'torrent_collecting'
+p88
+I01
+sS'version'
+p89
+I2
+sS'proxy_mode'
+p90
+I0
+sS'start_recommender'
+p91
+I01
+sS'overlay_log'
+p92
+NsS'stun_servers'
+p93
+(lp94
+(S'stun1.tribler.org'
+p95
+I6701
+tp96
+a(S'stun2.tribler.org'
+p97
+I6702
+tp98
+asS'ipv6_binds_v4'
+p99
+I1
+sS'tracker_response_size'
+p100
+I50
+sS'torrent_checking_period'
+p101
+I31
+sS'buddycast_max_peers'
+p102
+I2500
+sS'pingback_servers'
+p103
+(lp104
+(S'pingback.tribler.org'
+p105
+I6703
+tp106
+a(S'pingback2.tribler.org'
+p107
+I6703
+tp108
+asS'tracker_nat_check'
+p109
+I3
+sS'crawler_file'
+p110
+V./Tribler/Core/Statistics/crawler.txt
+p111
+sS'subtitles_collecting_dir'
+p112
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/collected_subtitles_files'
+p113
+sS'megacache'
+p114
+I01
+sS'tracker_save_dfile_interval'
+p115
+I300
+sS'ipv6_enabled'
+p116
+I0
+sS'nickname'
+p117
+S'coordinator'
+p118
+sS'tracker_allow_get'
+p119
+I1
+sS'torrent_collecting_dir'
+p120
+S'../../TestSetup/ClientRunFolders/Proxy02/statedir/collected_torrent_files'
+p121
+sS'tracker_scrape_allowed'
+p122
+S'full'
+p123
+sS'torrent_collecting_rate'
+p124
+I50
+sS'torrent_collecting_max_torrents'
+p125
+I50000
+sS'bind'
+p126
+(lp127
+sS'tracker_multitracker_reannounce_interval'
+p128
+I120
+sS'tracker_show_infopage'
+p129
+I1
+sS'helpers'
+p130
+I5
+sS'tracker_logfile'
+p131
+S'/dev/null'
+p132
+sS'buddycast_interval'
+p133
+I15
+sS'tracker_log_nat_checks'
+p134
+I0
+sS'tracker_favicon'
+p135
+NsS'bartercast'
+p136
+I01
+s.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb
new file mode 100644 (file)
index 0000000..834decf
Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb differ
diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb
new file mode 100644 (file)
index 0000000..d5b1641
Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb
new file mode 100644 (file)
index 0000000..73c996b
Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb differ
diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb
new file mode 100644 (file)
index 0000000..0e975ad
Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy02/statedir02.tar.gz b/ClientWorkingFolders/Proxy02/statedir02.tar.gz
new file mode 100644 (file)
index 0000000..cc4619f
Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir02.tar.gz differ
diff --git a/ClientWorkingFolders/Proxy03/statedir/ec.pem b/ClientWorkingFolders/Proxy03/statedir/ec.pem
new file mode 100644 (file)
index 0000000..da0de46
--- /dev/null
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHRa9+eCnq076J5ZklXwNG9qQNqZrcusShbMVc40aoAcGBSuBBAAaoUAD
+PgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8bO62YQO2ALndpQslGy0Hr/qb+VYh
+nz1sbggCWImYj/DT4nEM
+-----END EC PRIVATE KEY-----
diff --git a/ClientWorkingFolders/Proxy03/statedir/ecpub.pem b/ClientWorkingFolders/Proxy03/statedir/ecpub.pem
new file mode 100644 (file)
index 0000000..4b68cbb
--- /dev/null
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8
+bO62YQO2ALndpQslGy0Hr/qb+VYhnz1sbggCWImYj/DT4nEM
+-----END PUBLIC KEY-----
diff --git a/ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle
new file mode 100644 (file)
index 0000000..534614a
--- /dev/null
@@ -0,0 +1,2 @@
+(dp1
+.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle
new file mode 100644 (file)
index 0000000..9813bb6
--- /dev/null
@@ -0,0 +1,339 @@
+(dp0
+S'superpeer_file'
+p1
+V./Tribler/Core/superpeer.txt
+p2
+sS'install_dir'
+p3
+V.
+p4
+sS'internaltracker'
+p5
+I00
+sS'tracker_only_local_override_ip'
+p6
+I2
+sS'tracker_dfile_format'
+p7
+S'pickle'
+p8
+sS'tracker_aggregator'
+p9
+I0
+sS'magnetlink'
+p10
+I01
+sS'tracker_banned_ips'
+p11
+(lp12
+sS'peer_icon_path'
+p13
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/icons'
+p14
+sS'buddycast'
+p15
+I00
+sS'tracker_show_names'
+p16
+I1
+sS'download_help_dir'
+p17
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/help_dir'
+p18
+sS'puncturing_internal_port'
+p19
+I6700
+sS'buddycast_collecting_solution'
+p20
+I1
+sS'votecast_recent_votes'
+p21
+I25
+sS'tracker_allowed_dir'
+p22
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/itracker'
+p23
+sS'upnp_nat_access'
+p24
+I3
+sS'ip'
+p25
+S''
+p26
+sS'family_filter'
+p27
+I01
+sS'tracker_min_time_between_cache_refreshes'
+p28
+F600.0
+sS'minport'
+p29
+I25123
+sS'tracker_allowed_list'
+p30
+g26
+sS'tracker_dfile'
+p31
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/itracker/tracker.db'
+p32
+sS'tracker_allowed_ips'
+p33
+(lp34
+sS'mainline_dht'
+p35
+I00
+sS'tracker_multitracker_maxpeers'
+p36
+I20
+sS'channelcast_recent_own_subscriptions'
+p37
+I13
+sS'tracker_multitracker_allowed'
+p38
+S'autodetect'
+p39
+sS'votecast_random_votes'
+p40
+I25
+sS'tracker_multitracker_http_timeout'
+p41
+I60
+sS'mugshot'
+p42
+NsS'torrent_checking'
+p43
+I1
+sS'tracker_socket_timeout'
+p44
+I15
+sS'tracker_keep_dead'
+p45
+I0
+sS'dialback_trust_superpeers'
+p46
+I01
+sS'maxport'
+p47
+I25123
+sS'subtitles_upload_rate'
+p48
+I1024
+sS'tracker_hupmonitor'
+p49
+I0
+sS'eckeypairfilename'
+p50
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/ec.pem'
+p51
+sS'videoanalyserpath'
+p52
+S'ffmpeg'
+p53
+sS'multicast_local_peer_discovery'
+p54
+I01
+sS'tracker_aggregate_forward'
+p55
+(lp56
+NaNasS'tracker_url'
+p57
+NsS'timeout'
+p58
+F300.0
+sS'socnet'
+p59
+I01
+sS'tracker_min_time_between_log_flushes'
+p60
+F3.0
+sS'tracker_allowed_controls'
+p61
+I0
+sS'crawler'
+p62
+I01
+sS'channelcast_random_own_subscriptions'
+p63
+I12
+sS'stop_collecting_threshold'
+p64
+I200
+sS'coopdlconfig'
+p65
+NsS'timeout_check_interval'
+p66
+F60.0
+sS'dialback_active'
+p67
+I01
+sS'live_aux_seeders'
+p68
+(lp69
+sS'tracker_timeout_downloaders_interval'
+p70
+I2700
+sS'overlay_max_message_length'
+p71
+I8388608
+sS'tracker_reannounce_interval'
+p72
+I1800
+sS'dialback'
+p73
+I01
+sS'tracker_infopage_redirect'
+p74
+NsS'tracker_multitracker_enabled'
+p75
+I0
+sS'max_channel_query_results'
+p76
+I25
+sS'state_dir'
+p77
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir'
+p78
+sS'tracker_parse_dir_interval'
+p79
+I60
+sS'overlay'
+p80
+I01
+sS'rquery'
+p81
+I01
+sS'tracker_timeout_check_interval'
+p82
+I5
+sS'random_port'
+p83
+I1
+sS'download_help'
+p84
+I01
+sS'subtitles_collecting'
+p85
+I00
+sS'nat_detect'
+p86
+I01
+sS'superpeer'
+p87
+I00
+sS'torrent_collecting'
+p88
+I01
+sS'version'
+p89
+I2
+sS'proxy_mode'
+p90
+I0
+sS'start_recommender'
+p91
+I01
+sS'overlay_log'
+p92
+NsS'stun_servers'
+p93
+(lp94
+(S'stun1.tribler.org'
+p95
+I6701
+tp96
+a(S'stun2.tribler.org'
+p97
+I6702
+tp98
+asS'ipv6_binds_v4'
+p99
+I1
+sS'tracker_response_size'
+p100
+I50
+sS'torrent_checking_period'
+p101
+I31
+sS'buddycast_max_peers'
+p102
+I2500
+sS'pingback_servers'
+p103
+(lp104
+(S'pingback.tribler.org'
+p105
+I6703
+tp106
+a(S'pingback2.tribler.org'
+p107
+I6703
+tp108
+asS'tracker_nat_check'
+p109
+I3
+sS'crawler_file'
+p110
+V./Tribler/Core/Statistics/crawler.txt
+p111
+sS'subtitles_collecting_dir'
+p112
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/collected_subtitles_files'
+p113
+sS'megacache'
+p114
+I01
+sS'tracker_save_dfile_interval'
+p115
+I300
+sS'ipv6_enabled'
+p116
+I0
+sS'nickname'
+p117
+S'helper1'
+p118
+sS'tracker_allow_get'
+p119
+I1
+sS'torrent_collecting_dir'
+p120
+S'../../TestSetup/ClientRunFolders/Proxy03/statedir/collected_torrent_files'
+p121
+sS'tracker_scrape_allowed'
+p122
+S'full'
+p123
+sS'torrent_collecting_rate'
+p124
+I50
+sS'torrent_collecting_max_torrents'
+p125
+I50000
+sS'bind'
+p126
+(lp127
+sS'tracker_multitracker_reannounce_interval'
+p128
+I120
+sS'tracker_show_infopage'
+p129
+I1
+sS'helpers'
+p130
+I5
+sS'tracker_logfile'
+p131
+S'/dev/null'
+p132
+sS'buddycast_interval'
+p133
+I15
+sS'tracker_log_nat_checks'
+p134
+I0
+sS'tracker_favicon'
+p135
+NsS'bartercast'
+p136
+I01
+s.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb
new file mode 100644 (file)
index 0000000..834decf
Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb differ
diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb
new file mode 100644 (file)
index 0000000..d5b1641
Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb
new file mode 100644 (file)
index 0000000..73c996b
Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb differ
diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb
new file mode 100644 (file)
index 0000000..0e975ad
Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy03/statedir03.tar.gz b/ClientWorkingFolders/Proxy03/statedir03.tar.gz
new file mode 100644 (file)
index 0000000..dad96f0
Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir03.tar.gz differ
diff --git a/ClientWorkingFolders/Proxy04/statedir/ec.pem b/ClientWorkingFolders/Proxy04/statedir/ec.pem
new file mode 100644 (file)
index 0000000..8b8622b
--- /dev/null
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHSyn4VBGWTCgYF7ukNZYnu+F0U7oMGWNDn7GOZ7IoAcGBSuBBAAaoUAD
+PgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygoZvuK561OAG1VMGQ1P+oge2jtRznR
+iudc1l2LOw4G24wA2IS5
+-----END EC PRIVATE KEY-----
diff --git a/ClientWorkingFolders/Proxy04/statedir/ecpub.pem b/ClientWorkingFolders/Proxy04/statedir/ecpub.pem
new file mode 100644 (file)
index 0000000..380eb04
--- /dev/null
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygo
+ZvuK561OAG1VMGQ1P+oge2jtRznRiudc1l2LOw4G24wA2IS5
+-----END PUBLIC KEY-----
diff --git a/ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle
new file mode 100644 (file)
index 0000000..534614a
--- /dev/null
@@ -0,0 +1,2 @@
+(dp1
+.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle
new file mode 100644 (file)
index 0000000..a05bfa1
--- /dev/null
@@ -0,0 +1,339 @@
+(dp0
+S'superpeer_file'
+p1
+V./Tribler/Core/superpeer.txt
+p2
+sS'install_dir'
+p3
+V.
+p4
+sS'internaltracker'
+p5
+I00
+sS'tracker_only_local_override_ip'
+p6
+I2
+sS'tracker_dfile_format'
+p7
+S'pickle'
+p8
+sS'tracker_aggregator'
+p9
+I0
+sS'magnetlink'
+p10
+I01
+sS'tracker_banned_ips'
+p11
+(lp12
+sS'peer_icon_path'
+p13
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/icons'
+p14
+sS'buddycast'
+p15
+I00
+sS'tracker_show_names'
+p16
+I1
+sS'download_help_dir'
+p17
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/help_dir'
+p18
+sS'puncturing_internal_port'
+p19
+I6700
+sS'buddycast_collecting_solution'
+p20
+I1
+sS'votecast_recent_votes'
+p21
+I25
+sS'tracker_allowed_dir'
+p22
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/itracker'
+p23
+sS'upnp_nat_access'
+p24
+I3
+sS'ip'
+p25
+S''
+p26
+sS'family_filter'
+p27
+I01
+sS'tracker_min_time_between_cache_refreshes'
+p28
+F600.0
+sS'minport'
+p29
+I25123
+sS'tracker_allowed_list'
+p30
+g26
+sS'tracker_dfile'
+p31
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/itracker/tracker.db'
+p32
+sS'tracker_allowed_ips'
+p33
+(lp34
+sS'mainline_dht'
+p35
+I00
+sS'tracker_multitracker_maxpeers'
+p36
+I20
+sS'channelcast_recent_own_subscriptions'
+p37
+I13
+sS'tracker_multitracker_allowed'
+p38
+S'autodetect'
+p39
+sS'votecast_random_votes'
+p40
+I25
+sS'tracker_multitracker_http_timeout'
+p41
+I60
+sS'mugshot'
+p42
+NsS'torrent_checking'
+p43
+I1
+sS'tracker_socket_timeout'
+p44
+I15
+sS'tracker_keep_dead'
+p45
+I0
+sS'dialback_trust_superpeers'
+p46
+I01
+sS'maxport'
+p47
+I25123
+sS'subtitles_upload_rate'
+p48
+I1024
+sS'tracker_hupmonitor'
+p49
+I0
+sS'eckeypairfilename'
+p50
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/ec.pem'
+p51
+sS'videoanalyserpath'
+p52
+S'ffmpeg'
+p53
+sS'multicast_local_peer_discovery'
+p54
+I01
+sS'tracker_aggregate_forward'
+p55
+(lp56
+NaNasS'tracker_url'
+p57
+NsS'timeout'
+p58
+F300.0
+sS'socnet'
+p59
+I01
+sS'tracker_min_time_between_log_flushes'
+p60
+F3.0
+sS'tracker_allowed_controls'
+p61
+I0
+sS'crawler'
+p62
+I01
+sS'channelcast_random_own_subscriptions'
+p63
+I12
+sS'stop_collecting_threshold'
+p64
+I200
+sS'coopdlconfig'
+p65
+NsS'timeout_check_interval'
+p66
+F60.0
+sS'dialback_active'
+p67
+I01
+sS'live_aux_seeders'
+p68
+(lp69
+sS'tracker_timeout_downloaders_interval'
+p70
+I2700
+sS'overlay_max_message_length'
+p71
+I8388608
+sS'tracker_reannounce_interval'
+p72
+I1800
+sS'dialback'
+p73
+I01
+sS'tracker_infopage_redirect'
+p74
+NsS'tracker_multitracker_enabled'
+p75
+I0
+sS'max_channel_query_results'
+p76
+I25
+sS'state_dir'
+p77
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir'
+p78
+sS'tracker_parse_dir_interval'
+p79
+I60
+sS'overlay'
+p80
+I01
+sS'rquery'
+p81
+I01
+sS'tracker_timeout_check_interval'
+p82
+I5
+sS'random_port'
+p83
+I1
+sS'download_help'
+p84
+I01
+sS'subtitles_collecting'
+p85
+I00
+sS'nat_detect'
+p86
+I01
+sS'superpeer'
+p87
+I00
+sS'torrent_collecting'
+p88
+I01
+sS'version'
+p89
+I2
+sS'proxy_mode'
+p90
+I0
+sS'start_recommender'
+p91
+I01
+sS'overlay_log'
+p92
+NsS'stun_servers'
+p93
+(lp94
+(S'stun1.tribler.org'
+p95
+I6701
+tp96
+a(S'stun2.tribler.org'
+p97
+I6702
+tp98
+asS'ipv6_binds_v4'
+p99
+I1
+sS'tracker_response_size'
+p100
+I50
+sS'torrent_checking_period'
+p101
+I31
+sS'buddycast_max_peers'
+p102
+I2500
+sS'pingback_servers'
+p103
+(lp104
+(S'pingback.tribler.org'
+p105
+I6703
+tp106
+a(S'pingback2.tribler.org'
+p107
+I6703
+tp108
+asS'tracker_nat_check'
+p109
+I3
+sS'crawler_file'
+p110
+V./Tribler/Core/Statistics/crawler.txt
+p111
+sS'subtitles_collecting_dir'
+p112
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/collected_subtitles_files'
+p113
+sS'megacache'
+p114
+I01
+sS'tracker_save_dfile_interval'
+p115
+I300
+sS'ipv6_enabled'
+p116
+I0
+sS'nickname'
+p117
+S'helper2'
+p118
+sS'tracker_allow_get'
+p119
+I1
+sS'torrent_collecting_dir'
+p120
+S'../../TestSetup/ClientRunFolders/Proxy04/statedir/collected_torrent_files'
+p121
+sS'tracker_scrape_allowed'
+p122
+S'full'
+p123
+sS'torrent_collecting_rate'
+p124
+I50
+sS'torrent_collecting_max_torrents'
+p125
+I50000
+sS'bind'
+p126
+(lp127
+sS'tracker_multitracker_reannounce_interval'
+p128
+I120
+sS'tracker_show_infopage'
+p129
+I1
+sS'helpers'
+p130
+I5
+sS'tracker_logfile'
+p131
+S'/dev/null'
+p132
+sS'buddycast_interval'
+p133
+I15
+sS'tracker_log_nat_checks'
+p134
+I0
+sS'tracker_favicon'
+p135
+NsS'bartercast'
+p136
+I01
+s.
\ No newline at end of file
diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb
new file mode 100644 (file)
index 0000000..834decf
Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb differ
diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb
new file mode 100644 (file)
index 0000000..d5b1641
Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb
new file mode 100644 (file)
index 0000000..73c996b
Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb differ
diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb
new file mode 100644 (file)
index 0000000..0e975ad
Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb differ
diff --git a/ClientWorkingFolders/Proxy04/statedir04.tar.gz b/ClientWorkingFolders/Proxy04/statedir04.tar.gz
new file mode 100644 (file)
index 0000000..c0a3652
Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir04.tar.gz differ
diff --git a/ConfigFiles/campaign01.html b/ConfigFiles/campaign01.html
new file mode 100644 (file)
index 0000000..d31dddb
--- /dev/null
@@ -0,0 +1,211 @@
+<html>
+  <head>
+    <title>Proxy Technology Tests</title>
+    <style  TYPE="text/css">
+    <!--
+      #centered-content {
+        margin: 0 auto;
+        width: 1000px;
+        text-align: center;
+      }
+      body {
+        margin: 0px;
+        padding: 0px;
+      }
+
+      #header {
+        background: #d0dafd;
+        color: #339;
+        font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
+        font-size: 14px;
+        width: 100%;
+        text-align: center;
+        padding: 5px;
+      }
+      #leftcol {
+        background: #fff;
+        float: left;
+        width: 5%;
+      }
+      #rightcol {
+        background: #fff;
+        float: right;
+        width: 5%;
+      }
+      #content {
+        background: #fff;
+        float: left;
+        width: 100%;
+      }
+      #footer {
+        background: #d0dafd;
+        color: #339;
+        font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
+        font-size: 12px;
+        clear: both;
+        width: 100%;
+        text-align: center;
+        padding: 5px;
+      }
+
+      #box-table-a {
+        font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
+        font-size: 12px;
+        margin: 10px;
+        width: 1000px;
+        text-align: left;
+        border-collapse: collapse;
+      }
+      #box-table-a th {
+        font-size: 14px;
+        font-weight: normal;
+        padding: 8px;
+        background: #b9c9fe;
+        border-top: 4px solid #aabcfe;
+        border-bottom: 1px solid #fff;
+        color: #039;
+      }
+      #box-table-a td {
+        padding: 12px;
+        background: #e8edff; 
+        border-bottom: 2px solid #fff;
+        color: #669;
+      }
+      #box-table-a tr:hover td {
+        background: #d0dafd;
+        color: #339;
+      }
+
+      a:link { 
+        color: #0000ff;
+      }
+      a:visited { 
+        color: #808080;
+      }
+      a:hover { 
+        color: #ff0000;
+        text-decoration: none;
+      }
+      a:active { 
+        color: #777777;
+      }
+    -->
+    </style>
+  </head>
+  <body>
+    <div id="header">P2P-Next - Proxy Technology Tests - Results
+    </div>
+
+    <div id="leftcol">
+    </div>
+
+    <div id="rightcol">
+    </div>
+
+    <div id="content">
+      <div id="centered-content">
+
+        <table id="box-table-a" summary="Campaign-01 results">
+          <thead>
+            <tr>
+              <th scope="col">Name</th>
+              <th scope="col">No. of Seeders</th>
+              <th scope="col">No. of Leechers</th>
+              <th scope="col">No. of Proxies</th>
+              <th scope="col">No. of Does</th>
+              <th scope="col">Bandwidth Rectrictions</th>
+              <th scope="col">Graphs</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td>scenario-01</td>
+              <td>1</td>
+              <td>6</td>
+              <td>0</td>
+              <td>0</td>
+              <td>8 Mbit/s up/down</td>
+              <td><a href="scenario01/scenario01-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario01/scenario01-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-02</td>
+              <td>1</td>
+              <td>5</td>
+              <td>2</td>
+              <td>1</td>
+              <td>8 Mbit/s up/down</td>
+              <td><a href="scenario02/scenario02-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario02/scenario02-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-03</td>
+              <td>6</td>
+              <td>1</td>
+              <td>0</td>
+              <td>0</td>
+              <td>8 Mbit/s up/down</td>
+              <td><a href="scenario03/scenario03-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario03/scenario03-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-04</td>
+              <td>6</td>
+              <td>0</td>
+              <td>2</td>
+              <td>1</td>
+              <td>8 Mbit/s up/down</td>
+              <td><a href="scenario04/scenario04-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario04/scenario04-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-05</td>
+              <td>1</td>
+              <td>5</td>
+              <td>2</td>
+              <td>1</td>
+              <td>32 Mbit/s up/down doe-proxy <p>8 Mbit/s up/down all others</td>
+              <td><a href="scenario05/scenario05-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario05/scenario05-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-06</td>
+              <td>6</td>
+              <td>0</td>
+              <td>2</td>
+              <td>1</td>
+              <td>32 Mbit/s up/down doe-proxy <p>8 Mbit/s up/down all others</td>
+              <td><a href="scenario06/scenario06-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario06/scenario06-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-07</td>
+              <td>6</td>
+              <td>0</td>
+              <td>2</td>
+              <td>1</td>
+              <td>32 Mbit/s up/down proxy bw <p>8 Mbit/s up/down all others</td>
+              <td><a href="scenario07/scenario07-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario07/scenario07-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-08</td>
+              <td>1</td>
+              <td>5</td>
+              <td>2</td>
+              <td>1</td>
+              <td>32 Mbit/s up/down proxy bw<p>8 Mbit/s up/down all others</td>
+              <td><a href="scenario08/scenario08-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario08/scenario08-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+            <tr>
+              <td>scenario-09</td>
+              <td>6</td>
+              <td>0</td>
+              <td>2</td>
+              <td>1</td>
+              <td>1 Gbit/s up/down bw</td>
+              <td><a href="scenario09/scenario09-dlspeed-percent.png">dlspeed vs percent</a>; <a href="scenario09/scenario09-dlspeed-time.png">dlspeed vs time</a></td>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+    </div>
+
+    <div id="footer">For further information please contact George Milescu - george.milescu [at] gmail.com
+    </div>
+
+  </body>
+</html>
\ No newline at end of file
diff --git a/ConfigFiles/campaign01.txt b/ConfigFiles/campaign01.txt
new file mode 100644 (file)
index 0000000..b943c0d
--- /dev/null
@@ -0,0 +1,14 @@
+# Campaign01
+# Description:
+#   * a complete run of all the 7 scenarios
+#
+# ScenarioDescription  PlotScript
+scenario01.txt         scenario01.r
+scenario02.txt         scenario02.r
+scenario03.txt         scenario03.r
+scenario04.txt         scenario04.r
+scenario05.txt         scenario05.r
+scenario06.txt         scenario06.r
+scenario07.txt         scenario07.r
+scenario08.txt         scenario08.r
+scenario09.txt         scenario09.r
\ No newline at end of file
diff --git a/ConfigFiles/globalconfig.txt b/ConfigFiles/globalconfig.txt
new file mode 100644 (file)
index 0000000..45994fd
--- /dev/null
@@ -0,0 +1,32 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Configuration file used to specify the local path to the testing infrastructure and the P2P clients are located
+#
+# This file is included by the rest of the scripts in the P2P-Testing-Infrastructure
+
+TESTING_INFRASTRUCTURE_ABS_PATH="/home/george/P2P-Next/P2P-Testing-Infrastructure"
+
+# P2P_NEXT_REL_PATH is relative to ControlScripts folder
+P2P_NEXT_REL_PATH="../../"
+# The / at the end is important for rsync to work properly
+P2P_NEXT_ABS_PATH="/home/george/P2P-Next/"
+
+# TRIBLER_REL_PATH is relative to ControlScripts folder
+TRIBLER_REL_PATH="../../TriblerBranches/proxyservice-m32"
+TRIBLER_ABS_PATH="/home/george/P2P-Next/TriblerBranches/proxyservice-m32"
+
+# WORKING_FOLDER_REL_PATH is relative to TRIBLER_ABS_PATH folder
+WORKING_FOLDER_REL_PATH="../../P2P-Testing-Infrastructure/ClientWorkingFolders"
+
+# BITTORNADO_REL_PATH is relative to ControlScripts folder
+BITTORNADO_REL_PATH="../../BTclients/BitTornado/BitTornado-CVS"
+
+# CONFIG_FILES_REL_PATH is relative to ControlScripts folder
+CONFIG_FILES_REL_PATH="../ConfigFiles"
+
+# CONFIG_FILES_REL_PATH is relative to ControlScripts folder
+RESULTS_FOLDER_REL_PATH="../Results"
+
+# The script used to limit the bw on the nodes
+TC_SCRIPT=bw_limit.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario01.r b/ConfigFiles/scenario01.r
new file mode 100644 (file)
index 0000000..dd375a5
--- /dev/null
@@ -0,0 +1,85 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+leecher01=read.table(paste(target_folder, "p2p-next-05.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher02=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher03=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher04=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher05=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher06=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+leecher01$dlspeed <- leecher01$dlspeed*8/1000
+leecher02$dlspeed <- leecher02$dlspeed*8/1000
+leecher03$dlspeed <- leecher03$dlspeed*8/1000
+leecher04$dlspeed <- leecher04$dlspeed*8/1000
+leecher05$dlspeed <- leecher05$dlspeed*8/1000
+leecher06$dlspeed <- leecher06$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+geom_point(aes(x=leecher06$percent, y=leecher06$dlspeed, label="Leecher 06", colour="Leecher 06"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="black", "Leecher 06"="pink")) +
+opts(title=paste(campaign_name, "Scenario-01: a flashcrowd swarm (1 Seeder, 6 Leechers), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario01-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario01-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+geom_point(aes(x=leecher06$time, y=leecher06$dlspeed, label="Leecher 06", colour="Leecher 06"), size=1) +
+theme_bw() +
+scale_x_continuous("Time(s)") +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="black", "Leecher 06"="pink")) +
+opts(title=paste(campaign_name, "Scenario-01: a flashcrowd swarm (1 Seeder, 6 Leechers), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario01-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario01-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario01.txt b/ConfigFiles/scenario01.txt
new file mode 100644 (file)
index 0000000..5637fd5
--- /dev/null
@@ -0,0 +1,15 @@
+# Scenario01
+# Description:
+#   * a flashcrowd swarm
+#   * 1 seeder
+#   * 6 leechers
+#   * all peers have the same bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             2               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario02.r b/ConfigFiles/scenario02.r
new file mode 100644 (file)
index 0000000..417f0fb
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+leecher01$dlspeed <- leecher01$dlspeed*8/1000
+leecher02$dlspeed <- leecher02$dlspeed*8/1000
+leecher03$dlspeed <- leecher03$dlspeed*8/1000
+leecher04$dlspeed <- leecher04$dlspeed*8/1000
+leecher05$dlspeed <- leecher05$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() +
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-02: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies)\nall peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario02-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario02-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() +
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-02: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies)\nall peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario02-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario02-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario02.txt b/ConfigFiles/scenario02.txt
new file mode 100644 (file)
index 0000000..c8ee449
--- /dev/null
@@ -0,0 +1,19 @@
+# Scenario02
+# Description:
+#   * a flashcrowd swarm
+#   * 1 seeder
+#   * 5 leechers
+#   * 1 doe
+#   * 2 proxies
+#   * all peers have the same bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario03.r b/ConfigFiles/scenario03.r
new file mode 100644 (file)
index 0000000..de5560f
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+leecher01=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+leecher01$dlspeed <- leecher01$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red")) +
+opts(title=paste(campaign_name, "Scenario-03: a seeded swarm (6 Seeders, 1 Leecher), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario03-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario03-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red")) +
+opts(title=paste(campaign_name, "Scenario-03: a seeded swarm (6 Seeders, 1 Leecher), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario03-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario03-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario03.txt b/ConfigFiles/scenario03.txt
new file mode 100644 (file)
index 0000000..57fe5d4
--- /dev/null
@@ -0,0 +1,15 @@
+# Scenario03
+# Description:
+#   * a seeded swarm
+#   * 1 leecher
+#   * 6 seeders
+#   * all peers have the same bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             1               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario04.r b/ConfigFiles/scenario04.r
new file mode 100644 (file)
index 0000000..58a107f
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="blue", "Proxy 02"="green")) +
+opts(title=paste(campaign_name, "Scenario-04: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario04-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario04-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="blue", "Proxy 02"="green")) +
+opts(title=paste(campaign_name, "Scenario-04: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies), all peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario04-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario04-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario04.txt b/ConfigFiles/scenario04.txt
new file mode 100644 (file)
index 0000000..3b674b8
--- /dev/null
@@ -0,0 +1,18 @@
+# Scenario04
+# Description:
+#   * a seeded swarm
+#   * 6 seeders
+#   * 1 doe
+#   * 2 proxies
+#   * all peers have the same bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario05.r b/ConfigFiles/scenario05.r
new file mode 100644 (file)
index 0000000..97cb240
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+leecher01$dlspeed <- leecher01$dlspeed*8/1000
+leecher02$dlspeed <- leecher02$dlspeed*8/1000
+leecher03$dlspeed <- leecher03$dlspeed*8/1000
+leecher04$dlspeed <- leecher04$dlspeed*8/1000
+leecher05$dlspeed <- leecher05$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() +
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-05: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario05-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario05-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() +
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-05: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario05-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario05-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario05.txt b/ConfigFiles/scenario05.txt
new file mode 100644 (file)
index 0000000..dfbdcec
--- /dev/null
@@ -0,0 +1,19 @@
+# Scenario05
+# Description:
+#   * a flashcrowd swarm
+#   * 1 seeder
+#   * 5 leechers
+#   * 1 doe
+#   * 2 proxies
+#   * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_regular.sh       parse_regular.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario06.r b/ConfigFiles/scenario06.r
new file mode 100644 (file)
index 0000000..ddc06d5
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-06: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario06-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario06-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-06: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario06-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario06-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario06.txt b/ConfigFiles/scenario06.txt
new file mode 100644 (file)
index 0000000..c142059
--- /dev/null
@@ -0,0 +1,18 @@
+# Scenario06
+# Description:
+#   * a seeded swarm
+#   * 6 seeders
+#   * 1 doe
+#   * 2 proxies
+#   * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario07.r b/ConfigFiles/scenario07.r
new file mode 100644 (file)
index 0000000..ea9361d
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-07: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario07-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario07-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-07: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario07-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario07-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario07.txt b/ConfigFiles/scenario07.txt
new file mode 100644 (file)
index 0000000..c074e69
--- /dev/null
@@ -0,0 +1,18 @@
+# Scenario07
+# Description:
+#   * a seeded swarm
+#   * 6 seeders
+#   * 1 doe
+#   * 2 proxies
+#   * The proxies have a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario08.r b/ConfigFiles/scenario08.r
new file mode 100644 (file)
index 0000000..bf84b56
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+leecher01$dlspeed <- leecher01$dlspeed*8/1000
+leecher02$dlspeed <- leecher02$dlspeed*8/1000
+leecher03$dlspeed <- leecher03$dlspeed*8/1000
+leecher04$dlspeed <- leecher04$dlspeed*8/1000
+leecher05$dlspeed <- leecher05$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() +
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-08: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario08-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario08-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() +
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) +
+geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) +
+geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) +
+geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) +
+geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-08: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario08-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario08-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario08.txt b/ConfigFiles/scenario08.txt
new file mode 100644 (file)
index 0000000..04b1d79
--- /dev/null
@@ -0,0 +1,19 @@
+# Scenario05
+# Description:
+#   * a flashcrowd swarm
+#   * 1 seeder
+#   * 5 leechers
+#   * 1 doe
+#   * 2 proxies
+#   * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            32              400                     32              400             0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_seeder.sh Data.bin.torrent        detect_stopped_regular.sh       parse_regular.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            8               100                     8               100             0               start_regular.sh Data.bin.torrent       detect_stopped_regular.sh       parse_regular.sh
\ No newline at end of file
diff --git a/ConfigFiles/scenario09.r b/ConfigFiles/scenario09.r
new file mode 100644 (file)
index 0000000..67dafb6
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# R script used to plot the results of a scenario
+
+# import ggplot2
+library(ggplot2)
+
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ")
+
+# transform KB/s to Mbit/s
+doe$dlspeed <- doe$dlspeed*8/1000
+proxy01$dlspeed <- proxy01$dlspeed*8/1000
+proxy02$dlspeed <- proxy02$dlspeed*8/1000
+
+
+
+# plot dlspeed-percent data
+p <- ggplot() + 
+geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-09: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nall peers have an 1 Gbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario09-dlspeed-percent.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario09-dlspeed-percent.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+
+# plot dlspeed-time data
+p <- ggplot() + 
+geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) +
+geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) +
+geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) +
+theme_bw() +
+scale_x_continuous("Time (s)") +
+scale_y_continuous("Download speed (Mbit/s)") +
+coord_cartesian() +
+scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) +
+opts(title=paste(campaign_name, "Scenario-09: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nall peers have an 1 Gbit/s BW", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "scenario09-dlspeed-time.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "scenario09-dlspeed-time.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
diff --git a/ConfigFiles/scenario09.txt b/ConfigFiles/scenario09.txt
new file mode 100644 (file)
index 0000000..6cd877e
--- /dev/null
@@ -0,0 +1,18 @@
+# Scenario07
+# Description:
+#   * a seeded swarm
+#   * 6 seeders
+#   * 1 doe
+#   * 2 proxies
+#   * The proxies have a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth
+#
+# Hostname                     SSHport User    RemoteFolder                    NetInterface    Download(Mbps)  DownloadBurst(K)        Upload(Mbps)    UploadBurst(K)  StartDelay(s)   StartCommand                            StopDetector                    LogParser
+p2p-next-01.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           1               start_doe.sh Data.bin.torrent           detect_stopped_doe.sh           parse_doe.sh
+p2p-next-03.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_proxy.sh 01                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-04.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_proxy.sh 02                       detect_stopped_proxy.sh         parse_proxy.sh
+p2p-next-05.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-06.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-07.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-08.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-09.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
+p2p-next-10.grid.pub.ro                22      p2p     /home/p2p/george/P2P-Next       eth0            1000            12500                   1000            12500           0               start_seeder.sh Data.bin.torrent        detect_stopped_seeder.sh        parse_seeder.sh
\ No newline at end of file
diff --git a/ControlScripts/_bw_limit.old.sh b/ControlScripts/_bw_limit.old.sh
new file mode 100755 (executable)
index 0000000..23466fe
--- /dev/null
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# references:
+# * http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/
+# * http://lartc.org/howto/lartc.adv-filter.html#LARTC.ADV-FILTER.U32
+# * http://www.topwebhosts.org/tools/traffic-control.php
+# * http://atmail.com/kb/2009/throttling-bandwidth/
+# * http://www.docstoc.com/docs/20252486/Manual-tc-Packet-Filtering-and-netem
+#
+# This script needs to be run on the vmware machine, to control the traffic between the openvz containers
+
+
+if test $# -ne 1; then
+       echo "Usage: $0 set|del"
+       exit 1
+fi
+
+case "$1" in
+       "set")
+       # delete all tc on venet0
+       tc qdisc del dev venet0 root handle 1:0
+       
+       # add root(outgress) qdisc on venet0
+       tc qdisc add dev venet0 root handle 1:0 htb default 90
+       
+       # class for coord <-> seeders
+       tc class add dev venet0 parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit
+       tc class add dev venet0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit #coord <-> seeder1/2/3
+
+       # class for coord <-> helpers
+       tc class add dev venet0 parent 1:0 classid 1:2 htb rate 4096kbit ceil 4096kbit
+       tc class add dev venet0 parent 1:2 classid 1:20 htb rate 4096kbit ceil 4096kbit #coord <-> helper1/2
+
+       # class for helper1 <-> seeders
+       tc class add dev venet0 parent 1:0 classid 1:3 htb rate 8192kbit ceil 8192kbit
+       tc class add dev venet0 parent 1:3 classid 1:30 htb rate 8192kbit ceil 8192kbit #helper1 <-> seeder1/2/3
+       # class for helper2 <-> seeders
+       tc class add dev venet0 parent 1:0 classid 1:4 htb rate 8192kbit ceil 8192kbit
+       tc class add dev venet0 parent 1:4 classid 1:40 htb rate 8192kbit ceil 8192kbit #helper2 <-> seeder1/2/3
+
+       #tc qdisc add dev venet0 parent 1:10 handle 10: sfq perturb 10
+       #tc qdisc add dev venet0 parent 1:20 handle 20: sfq perturb 10
+       #tc qdisc add dev venet0 parent 1:30 handle 30: sfq perturb 10
+       #tc qdisc add dev venet0 parent 1:40 handle 40: sfq perturb 10
+
+       # Filters for coord <-> seeders
+       #coord <-> seeder1
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.5.1/32 flowid 1:10
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.2.1/32 flowid 1:10
+       #coord <-> seeder2
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.6.1/32 flowid 1:10
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.2.1/32 flowid 1:10 
+       #coord <-> seeder3
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.7.1/32 flowid 1:10
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.2.1/32 flowid 1:10
+       
+       # Filters for coord <-> helpers
+       #coord <-> helper1
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.3.1/32 flowid 1:20
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.2.1/32 flowid 1:20
+       #coord <-> helper2
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.4.1/32 flowid 1:20
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.2.1/32 flowid 1:20
+       
+       # Filters for helpers <-> seeders
+       #helper1 <-> seeder1
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.5.1/32 flowid 1:30
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.3.1/32 flowid 1:30
+       #helper1 <-> seeder2
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.6.1/32 flowid 1:30
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.3.1/32 flowid 1:30
+       #helper1 <-> seeder3
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.7.1/32 flowid 1:30
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.3.1/32 flowid 1:30
+       #helper2 <-> seeder1
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.5.1/32 flowid 1:40
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.4.1/32 flowid 1:40
+       #helper2 <-> seeder2
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.6.1/32 flowid 1:40
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.4.1/32 flowid 1:40
+       #helper2 <-> seeder3
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.7.1/32 flowid 1:40
+       tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.4.1/32 flowid 1:40
+       ;;
+
+       "del")
+       tc qdisc del dev venet0 root handle 1:
+       ;;
+
+       *)
+       echo "Usage: $0 set|del"
+       ;;
+esac
diff --git a/ControlScripts/_cssh_cluster.sh b/ControlScripts/_cssh_cluster.sh
new file mode 100755 (executable)
index 0000000..6a3459d
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to connect to the sistems in the NCIT cluster
+# The script
+#  * starts a cssh session
+#  * sets the size of the windows to 78x19
+#
+# Script arguments:
+#  * remote user
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 user"
+       exit 1
+fi
+
+REMOTE_USER=$1
+
+cssh --term-args "-geometry 78x19" $REMOTE_USER@p2p-next-01.grid.pub.ro $REMOTE_USER@p2p-next-03.grid.pub.ro $REMOTE_USER@p2p-next-04.grid.pub.ro $REMOTE_USER@p2p-next-05.grid.pub.ro $REMOTE_USER@p2p-next-06.grid.pub.ro $REMOTE_USER@p2p-next-07.grid.pub.ro $REMOTE_USER@p2p-next-08.grid.pub.ro $REMOTE_USER@p2p-next-09.grid.pub.ro $REMOTE_USER@p2p-next-10.grid.pub.ro
diff --git a/ControlScripts/_cssh_vm.sh b/ControlScripts/_cssh_vm.sh
new file mode 100755 (executable)
index 0000000..94c0d96
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to connect to the containers inside the VM
+# The script
+#  * starts a cssh session
+#  * sets the size of the windows to 78x19
+#
+# Script arguments:
+#  * remote user
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 user"
+       exit 1
+fi
+
+REMOTE_USER=$1
+
+cssh --term-args "-geometry 78x19" $REMOTE_USER@tracker.local $REMOTE_USER@coordinator.local $REMOTE_USER@helper1.local $REMOTE_USER@helper2.local $REMOTE_USER@seeder1.local $REMOTE_USER@seeder2.local $REMOTE_USER@seeder3.local
diff --git a/ControlScripts/_grep_search.sh b/ControlScripts/_grep_search.sh
new file mode 100755 (executable)
index 0000000..3b436d7
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to run a grep command to search for a specific text in all Tribler sources
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * runs a grep command to search for the specified text
+#
+# Usage:
+# ./grep_search.sh "text"
+
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+cd $TRIBLER_REL_PATH
+
+# -n: print line number
+# -I: ignore binary files
+# -r: recursive search
+grep -nIr --exclude-dir="*\.svn*" --color=auto "$@" .
+
diff --git a/ControlScripts/_retrieve_cluster_logs.sh b/ControlScripts/_retrieve_cluster_logs.sh
new file mode 100755 (executable)
index 0000000..112554c
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+REMOTE_PATH=/home/p2p/george/Logs
+
+scp p2p@p2p-next-01.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-03.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-04.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-05.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-06.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-07.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-08.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-09.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
+scp p2p@p2p-next-10.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/
diff --git a/ControlScripts/_show_version.sh b/ControlScripts/_show_version.sh
new file mode 100755 (executable)
index 0000000..1586906
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to display the tribler version
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * starts a tribler cmd-line instance to display the current version
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python Tribler/Tools/cmdlinedl.py -v
diff --git a/ControlScripts/_sync_cluster.sh b/ControlScripts/_sync_cluster.sh
new file mode 100755 (executable)
index 0000000..73b1306
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-01.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-03.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-04.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-05.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-06.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-07.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-08.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-09.grid.pub.ro:/home/p2p/george/P2P-Next
+rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-10.grid.pub.ro:/home/p2p/george/P2P-Next
+
diff --git a/ControlScripts/_sync_cluster_old.sh b/ControlScripts/_sync_cluster_old.sh
new file mode 100755 (executable)
index 0000000..2cc1a90
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+for port in 10122 10222 10322 10422; do
+       rsync -avP --del --rsh='ssh -p'$port P2P_NEXT_ABS_PATH p2p@p2p-next-01.grid.pub.ro:/home/p2p/P2P-Next
+done
diff --git a/ControlScripts/_sync_kth.sh b/ControlScripts/_sync_kth.sh
new file mode 100755 (executable)
index 0000000..2571ed8
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+rsync -avP --del $P2P_NEXT_ABS_PATH george@p2p-next.xen.ssvl.kth.se:/home/george/P2P-Next
diff --git a/ControlScripts/_sync_swam.cs.pub.ro.sh b/ControlScripts/_sync_swam.cs.pub.ro.sh
new file mode 100755 (executable)
index 0000000..4faf1f0
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+rsync -avP --del $P2P_NEXT_REL_PATH george@swarm.cs.pub.ro:/home/george/P2P-Next
diff --git a/ControlScripts/_sync_vm.sh b/ControlScripts/_sync_vm.sh
new file mode 100755 (executable)
index 0000000..58c186b
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+rsync -avP --del $P2P_NEXT_REL_PATH george@tracker.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@coordinator.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@helper1.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@helper2.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@seeder1.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@seeder2.local:/home/george/P2P-Next
+rsync -avP --del $P2P_NEXT_REL_PATH george@seeder3.local:/home/george/P2P-Next
diff --git a/ControlScripts/bw_limit.sh b/ControlScripts/bw_limit.sh
new file mode 100755 (executable)
index 0000000..0ec324e
--- /dev/null
@@ -0,0 +1,142 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# references:
+# * http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/
+# * http://lartc.org/howto/lartc.adv-filter.html#LARTC.ADV-FILTER.U32
+# * http://www.topwebhosts.org/tools/traffic-control.php
+# * http://atmail.com/kb/2009/throttling-bandwidth/
+# * http://www.docstoc.com/docs/20252486/Manual-tc-Packet-Filtering-and-netem
+#
+# This script needs to be run on the cluser machies, to control traffic between them
+# 
+#  tc uses the following units when passed as a parameter.
+#  kbps: Kilobytes per second
+#  mbps: Megabytes per second
+#  kbit: Kilobits per second
+#  mbit: Megabits per second
+#  bps: Bytes per second
+#       Amounts of data can be specified in:
+#       kb or k: Kilobytes
+#       mb or m: Megabytes
+#       mbit: Megabits
+#       kbit: Kilobits
+#  To get the byte figure from bits, divide the number by 8 bit
+
+usage() {
+       # Print help messages
+       echo "Usage: $0 set interface down-bw down-burst up-bw up-burst"
+       echo "       $0 del|reset|show interface"
+       echo "* set - set the limitations or show the status of the limitations"
+       echo "  * interface - the network interface that will be limited"
+       echo "  * down-bw - upload bandwidth, in Mbps"
+       echo "  * down-burst - upload burst, in k"
+       echo "  * up-bw - download bandwidth, in Mbps"
+       echo "  * up-burst - download burst, in k"
+       echo "* del|reset|show - delete, reset the limitations or show the status of the limitations"
+       echo "  * interface - the network interface that will be limited"
+}
+
+if [ $# -lt 2 ]; then
+       usage
+       exit 1
+fi
+
+# Name of the traffic control command.
+TC="sudo /sbin/tc"
+
+# The action requested (set, del, reset, show limitations)
+ACTION=$1           # Action
+
+# The network interface we're planning on limiting bandwidth.
+IF=$2               # Interface
+
+# Download limit (in mega bits)
+#DNLD=8mbit          # DOWNLOAD Limit
+DNLD=${3}mbit          # DOWNLOAD Limit
+
+# Upload limit (in mega bits)
+#UPLD=8mbit          # UPLOAD Limit
+UPLD=${5}mbit          # UPLOAD Limit
+
+# Burst limit (see http://lartc.org/howto/lartc.qdisc.classless.html#AEN691)
+# Should be $DNLD/8*10ms and $UPLD/8*10ms (meaning 10k) http://mailman.ds9a.nl/pipermail/lartc/2001q4/001972.html ?
+#DL_BURST=100k
+#UP_BURST=100k
+DL_BURST=${4}k
+UP_BURST=${6}k
+
+start() {
+       # Add the egress limitation
+       #
+       # We'll use Hierarchical Token Bucket (HTB) to shape bandwidth.
+       # For detailed configuration options, please consult Linux man
+       # page.
+       $TC qdisc add dev $IF root handle 1: htb default 90
+       $TC class add dev $IF parent 1: classid 1:1 htb rate $UPLD ceil $UPLD burst $UP_BURST
+       $TC filter add dev $IF protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1
+       
+       # The first line creates the root qdisc, and next one creates a
+       # child qdisc that are to be used to shape download and upload bandwidth.
+       #
+       # The 3rd line creates the filter to match the interface.
+       # The 'dst' IP address is used to limit upload speed, to any host
+       
+       # Add the ingress limitation
+       $TC qdisc add dev $IF ingress handle ffff:0
+       # Attach a filter to the ingress qdisc
+       $TC filter add dev $IF protocol ip parent ffff:0  prio 1 u32 match ip src 0.0.0.0/0 police rate $DNLD burst $DL_BURST action drop flowid 0:1
+}
+
+stop() {
+       # Stop the bandwidth shaping.
+       $TC qdisc del dev $IF root
+       $TC qdisc del dev $IF ingress handle ffff:0
+}
+
+restart() {
+       # Self-explanatory.
+       stop
+       sleep 1
+       start
+}
+
+show() {
+       # Display status of traffic control status.
+       $TC -s qdisc ls dev $IF
+}
+
+case "$ACTION" in
+       "set")
+       echo -n "Setting bandwidth limitations: "
+       start
+       echo "done"
+       ;;
+       
+       "del")
+       echo -n "Deleting bandwidth limitations: "
+       stop
+       echo "done"
+       ;;
+       
+       "reset")
+       echo -n "Resetting bandwidth limitations: "
+       restart
+       echo "done"
+       ;;
+       
+       "show")
+       echo "Bandwidth limitations status for $IF:"
+       show
+       echo ""
+       ;;
+
+       *)
+       usage
+       exit 1
+       ;;
+esac
+
+exit 0
+
diff --git a/ControlScripts/detect_stopped_doe.sh b/ControlScripts/detect_stopped_doe.sh
new file mode 100755 (executable)
index 0000000..ba527f1
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to detect when a doe client finished downloading a torrent
+# The script
+#  * monitors a log file provided as an argument
+#  * as long as the doe is not finished the script keeps running
+#  * when the doe is finished it returns 0
+#  * blocks the caller - the script exits only when the doe has completed the download
+#
+# Script arguments:
+#  * log file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 log-file"
+       exit 1
+fi
+
+LOG_FILE=$1
+
+while true; do
+       if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then
+               exit 0
+       fi
+       
+       # Don't do continuous polling
+       sleep 5
+done
diff --git a/ControlScripts/detect_stopped_proxy.sh b/ControlScripts/detect_stopped_proxy.sh
new file mode 100755 (executable)
index 0000000..435aabd
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to detect when a proxy client finished helping with a torrent
+# The script
+#  * immediately returns 0, as the end of a transfer is decided by the doe
+#
+# Script arguments:
+#  * log file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 log-file"
+       exit 1
+fi
+
+LOG_FILE=$1
+
+exit 0
diff --git a/ControlScripts/detect_stopped_regular.sh b/ControlScripts/detect_stopped_regular.sh
new file mode 100755 (executable)
index 0000000..8554bf5
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to detect when a regular client finished downloading a torrent
+# The script
+#  * monitors a log file provided as an argument
+#  * as long as the doe is not finished the script keeps running
+#  * when the doe is finished it returns 0
+#  * blocks the caller - the script exits only when the doe has completed the download
+#
+# Script arguments:
+#  * log file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 log-file"
+       exit 1
+fi
+
+LOG_FILE=$1
+
+while true; do
+       if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then
+               exit 0
+       fi
+       
+       # Don't do continuous polling
+       sleep 5
+done
diff --git a/ControlScripts/detect_stopped_seeder.sh b/ControlScripts/detect_stopped_seeder.sh
new file mode 100755 (executable)
index 0000000..916e942
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to detect when a seeder client finished uploading a torrent
+# The script
+#  * monitors a log file provided as an argument
+#  * as long as the seeder did not finish the hashchecking, the script keeps running
+#  * when the seeder finished hashchecking, the script returns 0
+#  * blocks the caller - the script exits only when the seeder has completed hashchecking
+#
+# Script arguments:
+#  * log file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 log-file"
+       exit 1
+fi
+
+LOG_FILE=$1
+
+while true; do
+       if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then
+               exit 0
+       fi
+       
+       # Don't do continuous polling
+       sleep 5
+done
diff --git a/ControlScripts/parse_doe.sh b/ControlScripts/parse_doe.sh
new file mode 100755 (executable)
index 0000000..e9de4bd
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to parse the log file generated by a doe client and to generate a data file
+# The script
+#  * TODO
+#
+# Script arguments:
+#  * a folder where the log and data files are stored
+#  * the name of a log file in that folder
+
+
+if [ ! $# -eq 2 ]; then
+       echo "usage: $0 log-folder log-file"
+       exit 1
+fi
+
+LOG_FOLDER=$1
+LOG_FILE=$2
+DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data
+
+# Check if the log folder exists
+if [ ! -d $LOG_FOLDER ]; then
+       echo "Error: The folder $LOG_FOLDER does not exist."
+       exit 1
+fi
+
+# Check if the log file exists
+if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist."
+       exit 1
+fi
+
+# Check if the log file is a regular file
+if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file."
+       exit 1
+fi
+
+# Write the header to the data file
+echo "time percent upspeed dlspeed" > $DATA_FILE
+
+# Clean and parse the log file
+cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE
+
+exit 0
diff --git a/ControlScripts/parse_proxy.sh b/ControlScripts/parse_proxy.sh
new file mode 100755 (executable)
index 0000000..4b91a87
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to parse the log file generated by a proxy client and to generate a data file
+# The script
+#  * TODO
+#
+# Script arguments:
+#  * a folder where the log and data files are stored
+#  * the name of a log file in that folder
+
+
+if [ ! $# -eq 2 ]; then
+       echo "usage: $0 log-folder log-file"
+       exit 1
+fi
+
+LOG_FOLDER=$1
+LOG_FILE=$2
+DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data
+
+# Check if the log folder exists
+if [ ! -d $LOG_FOLDER ]; then
+       echo "Error: The folder $LOG_FOLDER does not exist."
+       exit 1
+fi
+
+# Check if the log file exists
+if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist."
+       exit 1
+fi
+
+# Check if the log file is a regular file
+if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file."
+       exit 1
+fi
+
+# Write the header to the data file
+echo "time percent upspeed dlspeed" > $DATA_FILE
+
+# Clean and parse the log file
+cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE
+
+exit 0
diff --git a/ControlScripts/parse_regular.sh b/ControlScripts/parse_regular.sh
new file mode 100755 (executable)
index 0000000..32b476d
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to parse the log file generated by a regular (leecher) client and to generate a data file
+# The script
+#  * TODO
+#
+# Script arguments:
+#  * a folder where the log and data files are stored
+#  * the name of a log file in that folder
+
+
+if [ ! $# -eq 2 ]; then
+       echo "usage: $0 log-folder log-file"
+       exit 1
+fi
+
+LOG_FOLDER=$1
+LOG_FILE=$2
+DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data
+
+# Check if the log folder exists
+if [ ! -d $LOG_FOLDER ]; then
+       echo "Error: The folder $LOG_FOLDER does not exist."
+       exit 1
+fi
+
+# Check if the log file exists
+if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist."
+       exit 1
+fi
+
+# Check if the log file is a regular file
+if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file."
+       exit 1
+fi
+
+# Write the header to the data file
+echo "time percent upspeed dlspeed" > $DATA_FILE
+
+# Clean and parse the log file
+cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE
+
+exit 0
diff --git a/ControlScripts/parse_seeder.sh b/ControlScripts/parse_seeder.sh
new file mode 100755 (executable)
index 0000000..a695435
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to parse the log file generated by a seeder client and to generate a data file
+# The script
+#  * TODO
+#
+# Script arguments:
+#  * a folder where the log and data files are stored
+#  * the name of a log file in that folder
+
+
+if [ ! $# -eq 2 ]; then
+       echo "usage: $0 log-folder log-file"
+       exit 1
+fi
+
+LOG_FOLDER=$1
+LOG_FILE=$2
+DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data
+
+# Check if the log folder exists
+if [ ! -d $LOG_FOLDER ]; then
+       echo "Error: The folder $LOG_FOLDER does not exist."
+       exit 1
+fi
+
+# Check if the log file exists
+if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist."
+       exit 1
+fi
+
+# Check if the log file is a regular file
+if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then
+       echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file."
+       exit 1
+fi
+
+# Write the header to the data file
+echo "time percent upspeed dlspeed" > $DATA_FILE
+
+# Clean and parse the log file
+cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE
+
+exit 0
diff --git a/ControlScripts/run_campaign.sh b/ControlScripts/run_campaign.sh
new file mode 100755 (executable)
index 0000000..817136c
--- /dev/null
@@ -0,0 +1,123 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to run a test campaign
+# The script
+#  * Generates a campaign ID
+#  * Reads the campaign setup file
+#  * Runs each of the scenarios specified in the campaign setup file
+#  * Generates the graphs
+#
+# Script arguments:
+#  * a file describing the campaign. The file must be located in SetupFiles
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 campaign-file"
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+CAMPAIGN_FILE=$1
+
+# Generate unique id for the campaign
+CAMPAIGN_ID=$(date +%Y.%m.%d-%H.%M.%S)
+CAMPAIGN_NAME=${CAMPAIGN_FILE%\.*}-$CAMPAIGN_ID # Remove the last extension from the campaign file name
+CAMPAIGN_RESULTS_FOLDER=$RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME
+ERR_LOG=$CAMPAIGN_RESULTS_FOLDER/err.log
+
+
+# Check if the campaign file exists
+if [ ! -e $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE ]; then
+       echo "Error: The campaign file $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE does not exist."
+       exit 1
+fi
+
+# Check if the campaign file is a regular file
+if [ ! -f $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE ]; then
+       echo "Error: The campaign file $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE is not a regular file."
+       exit 1
+fi
+
+
+
+# Create the results folder for the campaign
+# Check if the campaign results folder already exists
+if [ -d $CAMPAIGN_RESULTS_FOLDER ]; then
+       echo "Error: The folder $CAMPAIGN_RESULTS_FOLDER already exist."
+       exit 1
+fi
+
+echo -n "Creating campaign results folder $CAMPAIGN_RESULTS_FOLDER..."
+mkdir $CAMPAIGN_RESULTS_FOLDER
+echo "Done"
+
+
+
+# Parse the campaign file
+echo -n "Parsing campaign file... "
+TMP_FILE=/tmp/proxy.camp.$RANDOM
+rm -f $TMP_FILE
+cat $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE | grep -v ^# | grep -v ^$ | tr -s '\t' > $TMP_FILE
+echo "done"
+>$ERR_LOG
+
+
+# Parsing each scenario and starting the tests
+echo "Running each scenario..."
+while IFS=$'\t' read SCENARIO_FILE PLOT_SCRIPT; do
+       echo " * $SCENARIO_FILE"
+       
+       #store the current working directory
+       CWD=$(pwd)
+       
+       # Check if the scenario file exists
+       if [ ! -e $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then
+               echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE does not exist."
+               exit 1
+       fi
+       
+       # Check if the scenario file is a regular file
+       if [ ! -f $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then
+               echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE is not a regular file."
+               exit 1
+       fi
+       
+       # Run scenario
+       ACTION=run
+       ./run_scenario.sh $ACTION $SCENARIO_FILE $CAMPAIGN_NAME
+       
+       # Plot graph
+       echo -n "Plotting graph..."
+       # PLOT_SCRIPT receives two arguments:
+       # * the path to the folder where the data files are stored, and where the graph will be saved
+       # * the name (with the id) of the campaign
+       SCENARIO_NAME=${SCENARIO_FILE%\.*}
+       Rscript $CONFIG_FILES_REL_PATH/$PLOT_SCRIPT --args $CAMPAIGN_RESULTS_FOLDER/$SCENARIO_NAME $CAMPAIGN_NAME &>> $ERR_LOG
+       echo "done"
+       
+       # reutrn to the initial current working directory
+       cd $CWD
+       
+       echo ""
+done < $TMP_FILE
+echo "done"
+rm -f $TMP_FILE
+unset IFS
+
+
+
+# Creating the HTML file in the results folder
+echo -n "Copying the HTML file to results folder..."
+cp $CONFIG_FILES_REL_PATH/${CAMPAIGN_FILE%\.*}.html $CAMPAIGN_RESULTS_FOLDER/index.html &>> $ERR_LOG
+echo "done"
+
+
+
+# Publishing results to swarm
+echo -n "Publishing results to swarm.cs.pub.ro..."
+rsync -avP --del --exclude OldResults ${RESULTS_FOLDER_REL_PATH}/ george@swarm.cs.pub.ro:public_html/p2p-next/proxy-service-tests/ &>> $ERR_LOG
+echo "done"
diff --git a/ControlScripts/run_scenario.sh b/ControlScripts/run_scenario.sh
new file mode 100755 (executable)
index 0000000..507135a
--- /dev/null
@@ -0,0 +1,240 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to run a test scenario
+# The script
+#  * Reads the scenario setup file
+#  * Cleans-up the environment on the target machines
+#  * Runs the clients
+#  * Retrieves the logs
+#  * Cleans-up the environment on the target machines
+#  * Parses the log files
+#
+# Script arguments:
+#  * an action that can be setup, start, wait, clean, parse, run
+#  ** setup - setup the nodes on which the tests will be run
+#  ** start - start the clients on the remote nodes
+#  ** wait - wait for all the clients to complete their task
+#  ** clean - clean the nodes on whitch the tests were run
+#  ** parse - parse the resulted client log files
+#  ** run - run a complete campaign (setup, start, wait, clean, parse)
+#  * a file describing the scenario. The file must be located in SetupFiles
+#  * a campaign name (see run_campaign.sh for details). Example: campaign01.txt-2010.07.14-21.10.45
+
+usage() {
+       # Print help messages
+       echo "usage: $0 action scenario-file campaign-name"
+}
+
+if [ ! $# -eq 3 ]; then
+       usage
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+ACTION=$1
+SCENARIO_FILE=$2
+CAMPAIGN_NAME=$3
+
+SCENARIO_NAME=${SCENARIO_FILE%\.*}
+SCENARIO_RESULTS_FOLDER=$RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME/$SCENARIO_NAME
+ERR_LOG=$SCENARIO_RESULTS_FOLDER/err.log
+
+# Check if the scenario file exists
+if [ ! -e $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then
+       echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE does not exist."
+       exit 1
+fi
+
+# Check if the scenario file is a regular file
+if [ ! -f $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then
+       echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE is not a regular file."
+       exit 1
+fi
+
+# Check if the campain results folder exists
+if [ ! -d $RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME ]; then
+       echo "Error: The results folder $RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME does not exist"
+       exit 1
+fi
+
+
+
+# Create a scenario folder inside the campaign results folder
+# Check if the scenario results folder already exists
+if [ -d $SCENARIO_RESULTS_FOLDER ]; then
+       echo "Error: The folder $SCENARIO_RESULTS_FOLDER already exist."
+       exit 1
+fi
+
+echo -n " ** Creating scenario results folder $SCENARIO_RESULTS_FOLDER..."
+mkdir $SCENARIO_RESULTS_FOLDER
+echo "done"
+
+
+
+# Parse the scenario file
+TMP_FILE=/tmp/proxy.scn.$RANDOM
+rm -f $TMP_FILE
+cat $CONFIG_FILES_REL_PATH/$SCENARIO_FILE | grep -v ^# | grep -v ^$ | tr -s '\t' > $TMP_FILE
+> $ERR_LOG
+
+
+
+# Setup the nodes
+scenario_setup() {
+       echo "---------------------- scenario_setup_" >> $ERR_LOG
+       while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do
+               echo " ** Setting-up $SERVER"
+               
+               # Clean-up the host by using rsync
+               if ! rsync -avP --del --rsh='ssh -p'$PORT $P2P_NEXT_REL_PATH ${USER}@${SERVER}:${REMOTE_PATH} &>> $ERR_LOG; then
+                       echo "Error: rsync error on $SERVER"
+                       exit 1
+               fi
+               
+               # run tc script to set the bandwidth limitations
+               # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command
+               if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$TC_SCRIPT set $REMOTE_IF $DL_BW $DL_BURST $UL_BW $UL_BURST" &>> $ERR_LOG; then
+                       echo "Error: tc error setting limitations on $SERVER"
+                       exit 1
+               fi
+       done < $TMP_FILE
+       unset IFS
+       echo "---------------------- _scenario_setup" >> $ERR_LOG
+}
+
+
+
+# Start the clients
+# The setup stage is separated to decrease the time required to start the clients
+scenario_start() {
+       echo "---------------------- scenario_start_" >> $ERR_LOG
+       while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do
+               echo " ** Starting client on $SERVER"
+               
+               # Start the scripts on the remote clients
+               # -f is used to put ssh in background after the connection is set and to redirect the ssh stdin from /dev/null
+               if ! ssh -f -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; sleep $START_DELAY; ./$START_CMD &> $REMOTE_PATH/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/${SERVER}.log" &>> $ERR_LOG; then
+                       echo "Error: error running $START_CMD on $SERVER"
+                       break
+               fi
+       done < $TMP_FILE
+       unset IFS
+       echo "---------------------- _scenario_start" >> $ERR_LOG
+}
+
+
+
+# Wait until all the clients are finished
+scenario_wait() {
+       echo "---------------------- scenario_wait_" >> $ERR_LOG
+       while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do
+               echo " ** Waiting for client on $SERVER to finish"
+               
+               # Start the scripts on the remote clients
+               # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command
+               # The ssh call is blocking
+               if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$DETECT_STOP_CMD $REMOTE_PATH/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/${SERVER}.log" &>> $ERR_LOG; then
+                       echo "Error: error while waiting for client on $SERVER to finish"
+                       break
+               fi
+       done < $TMP_FILE
+       unset IFS
+       echo "---------------------- _scenario_wait" >> $ERR_LOG
+}
+
+
+
+# Clean the nodes and retrieve the log files
+scenario_clean() {
+       echo "---------------------- scenario_clean_" >> $ERR_LOG
+       while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do
+               echo " ** Cleaning-up $SERVER"
+               
+               # stopping the client on the server
+               # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command
+               if ! ssh -n -p $PORT ${USER}@${SERVER} "killall python2.6" &>> $ERR_LOG; then
+                       echo "Error: error stopping client on $SERVER"
+               fi
+               # wait for the remote client to finish completly
+               sleep 2
+               
+               # run tc script to delete the bandwidth limitations
+               # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command
+               if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$TC_SCRIPT del $REMOTE_IF" &>> $ERR_LOG; then
+                       echo "Error: tc error deleting limitations on $SERVER"
+               fi
+               
+               # Retrieve log files
+               scp -P $PORT ${USER}@${SERVER}:${REMOTE_PATH}/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/* $SCENARIO_RESULTS_FOLDER &>> $ERR_LOG
+               
+               # Clean-up the host by using rsync
+               if ! rsync -avP --del --rsh='ssh -p'$PORT $P2P_NEXT_REL_PATH ${USER}@${SERVER}:${REMOTE_PATH} &>> $ERR_LOG; then
+                       echo "Error: rsync error on $SERVER"
+               fi
+       done < $TMP_FILE
+       unset IFS
+       echo "---------------------- _scenario_clean" >> $ERR_LOG
+}
+
+
+
+# Parse the log files
+scenario_parse() {
+       echo "---------------------- scenario_parse_" >> $ERR_LOG
+       while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do
+               echo " ** Parsing log files from $SERVER"
+               
+               if ! ./$LOG_PARSER $SCENARIO_RESULTS_FOLDER ${SERVER}.log; then
+                       echo "Error parsing file $SCENARIO_RESULTS_FOLDER/${SERVER}.log"
+                       exit 1
+               fi
+       done < $TMP_FILE
+       unset IFS
+       echo "---------------------- _scenario_parse" >> $ERR_LOG
+}
+
+
+#setup, start, wait, clean, parse
+case "$ACTION" in
+       "setup")
+       scenario_setup
+       ;;
+       
+       "start")
+       scenario_start
+       ;;
+       
+       "wait")
+       scenario_wait
+       ;;
+       
+       "clean")
+       scenario_clean
+       ;;
+       
+       "parse")
+       scenario_parse
+       ;;
+       
+       "run")
+       scenario_setup
+       scenario_start
+       scenario_wait
+       scenario_clean
+       scenario_parse
+       ;;
+
+       *)
+       usage
+       exit 1
+       ;;
+esac
+
+rm -f $TMP_FILE
+exit 0
diff --git a/ControlScripts/start_doe.sh b/ControlScripts/start_doe.sh
new file mode 100755 (executable)
index 0000000..61cc7fd
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a doe instance of tribler cmd-line
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * starts a tribler cmd-line instance with the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder
+#  * at the end deletes the downloaded data
+#
+# Script arguments:
+#  * .torrent file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 torrent-file"
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+TORRENT_FILE=$1
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python2.6 Tribler/Tools/proxy-cmdline.py --proxymode private --test-mode coord --state-dir $WORKING_FOLDER_REL_PATH/Doe/statedir --output-dir $WORKING_FOLDER_REL_PATH/Doe/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE
+
+rm -rf $WORKING_FOLDER_REL_PATH/Doe/*
diff --git a/ControlScripts/start_proxy.sh b/ControlScripts/start_proxy.sh
new file mode 100755 (executable)
index 0000000..93cb40b
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a proxy instance of tribler for the testing topology
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * starts a tribler cmd-line instance with no target .torrent
+#  * at the end deletes the state directory
+#
+# Script arguments:
+#  * proxy number [1-4]
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 proxy-no"
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+PROXY_NO=$1
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python2.6 Tribler/Tools/proxy-cmdline.py --proxymode off --proxyservice on --port 25123 --test-mode helper --state-dir $WORKING_FOLDER_REL_PATH/Proxy$PROXY_NO/statedir --no-download
+
+rm -rf $WORKING_FOLDER_REL_PATH/Proxy$PROXY_NO/*
diff --git a/ControlScripts/start_regular.sh b/ControlScripts/start_regular.sh
new file mode 100755 (executable)
index 0000000..c92dc74
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a regular (non doe, non proxy) instance of tribler cmd-line
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * starts a tribler cmd-line instance with the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder
+#  * at the end deletes the downloaded data
+#
+# Script arguments:
+#  * .torrent file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 torrent-file"
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+TORRENT_FILE=$1
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python2.6 Tribler/Tools/proxy-cmdline.py --proxymode off --test-mode off --port 25124 --state-dir $WORKING_FOLDER_REL_PATH/Regular/statedir --output-dir $WORKING_FOLDER_REL_PATH/Regular/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE
+
+rm -rf $WORKING_FOLDER_REL_PATH/Regular/*
diff --git a/ControlScripts/start_seeder.sh b/ControlScripts/start_seeder.sh
new file mode 100755 (executable)
index 0000000..b221760
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a seeder instance for the testing topology
+# The script
+#  * changes current working directory to proxyservice-m32
+#  * starts a command line BT client seeding the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder
+#
+# Script arguments:
+#  * .torrent file
+
+if [ ! $# -eq 1 ]; then
+       echo "usage: $0 torrent-file"
+       exit 1
+fi
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+# Read arguments
+TORRENT_FILE=$1
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python2.6 Tribler/Tools/proxy-cmdline.py --port 25125 --state-dir $WORKING_FOLDER_REL_PATH/Seeder/statedir --output-dir $WORKING_FOLDER_REL_PATH/TorrentsAndData/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE
+
+rm -rf $WORKING_FOLDER_REL_PATH/Seeder/*
diff --git a/ControlScripts/start_tracker.sh b/ControlScripts/start_tracker.sh
new file mode 100755 (executable)
index 0000000..fab5dad
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a tracker on the localhost
+# The script
+#  * changes current working directory to BitTornado-CVS
+#  * starts a tracker listening on port 6969
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $BITTORNADO_REL_PATH
+
+rm -rf ../tracker.info
+
+python2.6 bttrack.py --port 6969 --dfile ../tracker.info
diff --git a/ControlScripts/start_tribler.sh b/ControlScripts/start_tribler.sh
new file mode 100755 (executable)
index 0000000..e3d8ea2
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Copyright: George Milescu 2010 - george.milescu@gmail.com
+#
+# Bash script used to start a normal GUI tribler instance
+# The script
+#  * changes current working directory to proxymode
+#  * starts a GUI tribler instance
+
+# Read the global configuration variables
+source ../ConfigFiles/globalconfig.txt
+
+export PYTHONPATH=$PYTHONPATH:.
+
+cd $TRIBLER_REL_PATH
+
+python2.6 Tribler/Main/tribler.py