--- /dev/null
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHWKMn6oV/8fHSQh3TyiR5j78gFZzXaXaeTc21ZtKoAcGBSuBBAAaoUAD
+PgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZjal+8YJdJtAXj3b1Ss37amig388n12
+lHvnGyXrVk1xZUJ99Gz1
+-----END EC PRIVATE KEY-----
--- /dev/null
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZja
+l+8YJdJtAXj3b1Ss37amig388n12lHvnGyXrVk1xZUJ99Gz1
+-----END PUBLIC KEY-----
--- /dev/null
+(dp1
+.
\ No newline at end of file
--- /dev/null
+(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
--- /dev/null
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHQQdnt2Ks+3pCyUrkKCYhlyUlwZ8lqh08lGsb9gyoAcGBSuBBAAaoUAD
+PgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2YAUgT2f4LADwczpflrJQwAXX6xq6o
+0qDmyGPUhET2eDcGcshm
+-----END EC PRIVATE KEY-----
--- /dev/null
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2Y
+AUgT2f4LADwczpflrJQwAXX6xq6o0qDmyGPUhET2eDcGcshm
+-----END PUBLIC KEY-----
--- /dev/null
+(dp1
+.
\ No newline at end of file
--- /dev/null
+(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
--- /dev/null
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHRa9+eCnq076J5ZklXwNG9qQNqZrcusShbMVc40aoAcGBSuBBAAaoUAD
+PgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8bO62YQO2ALndpQslGy0Hr/qb+VYh
+nz1sbggCWImYj/DT4nEM
+-----END EC PRIVATE KEY-----
--- /dev/null
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8
+bO62YQO2ALndpQslGy0Hr/qb+VYhnz1sbggCWImYj/DT4nEM
+-----END PUBLIC KEY-----
--- /dev/null
+(dp1
+.
\ No newline at end of file
--- /dev/null
+(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
--- /dev/null
+-----BEGIN EC PRIVATE KEY-----
+MG0CAQEEHSyn4VBGWTCgYF7ukNZYnu+F0U7oMGWNDn7GOZ7IoAcGBSuBBAAaoUAD
+PgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygoZvuK561OAG1VMGQ1P+oge2jtRznR
+iudc1l2LOw4G24wA2IS5
+-----END EC PRIVATE KEY-----
--- /dev/null
+-----BEGIN PUBLIC KEY-----
+MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygo
+ZvuK561OAG1VMGQ1P+oge2jtRznRiudc1l2LOw4G24wA2IS5
+-----END PUBLIC KEY-----
--- /dev/null
+(dp1
+.
\ No newline at end of file
--- /dev/null
+(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
--- /dev/null
+<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
--- /dev/null
+# 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
--- /dev/null
+#
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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 "$@" .
+
--- /dev/null
+#!/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/
--- /dev/null
+#!/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
--- /dev/null
+#!/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
+
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
+
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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"
--- /dev/null
+#!/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
--- /dev/null
+#!/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/*
--- /dev/null
+#!/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/*
--- /dev/null
+#!/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/*
--- /dev/null
+#!/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/*
--- /dev/null
+#!/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
--- /dev/null
+#!/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