From: George Milescu Date: Wed, 28 Jul 2010 18:36:26 +0000 (+0200) Subject: Added testing infrastructure files X-Git-Tag: classic-scenario-config~34 X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=effae60dec583781491db0aba2f788f16651f4b1;p=p2p-testing-infrastructure.git Added testing infrastructure files Signed-off-by: George Milescu --- diff --git a/ClientWorkingFolders/Proxy01/statedir/ec.pem b/ClientWorkingFolders/Proxy01/statedir/ec.pem new file mode 100644 index 0000000..73e3787 --- /dev/null +++ b/ClientWorkingFolders/Proxy01/statedir/ec.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MG0CAQEEHWKMn6oV/8fHSQh3TyiR5j78gFZzXaXaeTc21ZtKoAcGBSuBBAAaoUAD +PgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZjal+8YJdJtAXj3b1Ss37amig388n12 +lHvnGyXrVk1xZUJ99Gz1 +-----END EC PRIVATE KEY----- diff --git a/ClientWorkingFolders/Proxy01/statedir/ecpub.pem b/ClientWorkingFolders/Proxy01/statedir/ecpub.pem new file mode 100644 index 0000000..59eb12a --- /dev/null +++ b/ClientWorkingFolders/Proxy01/statedir/ecpub.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAYKp/fmxdx+1W6SqmTEc4phTWHZJuZja +l+8YJdJtAXj3b1Ss37amig388n12lHvnGyXrVk1xZUJ99Gz1 +-----END PUBLIC KEY----- diff --git a/ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle new file mode 100644 index 0000000..534614a --- /dev/null +++ b/ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle @@ -0,0 +1,2 @@ +(dp1 +. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle new file mode 100644 index 0000000..90bbb96 --- /dev/null +++ b/ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle @@ -0,0 +1,339 @@ +(dp0 +S'superpeer_file' +p1 +V./Tribler/Core/superpeer.txt +p2 +sS'install_dir' +p3 +V. +p4 +sS'internaltracker' +p5 +I00 +sS'tracker_only_local_override_ip' +p6 +I2 +sS'tracker_dfile_format' +p7 +S'pickle' +p8 +sS'tracker_aggregator' +p9 +I0 +sS'magnetlink' +p10 +I01 +sS'tracker_banned_ips' +p11 +(lp12 +sS'peer_icon_path' +p13 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/icons' +p14 +sS'buddycast' +p15 +I00 +sS'tracker_show_names' +p16 +I1 +sS'download_help_dir' +p17 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/help_dir' +p18 +sS'puncturing_internal_port' +p19 +I6700 +sS'buddycast_collecting_solution' +p20 +I1 +sS'votecast_recent_votes' +p21 +I25 +sS'tracker_allowed_dir' +p22 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/itracker' +p23 +sS'upnp_nat_access' +p24 +I3 +sS'ip' +p25 +S'' +p26 +sS'family_filter' +p27 +I01 +sS'tracker_min_time_between_cache_refreshes' +p28 +F600.0 +sS'minport' +p29 +I25123 +sS'tracker_allowed_list' +p30 +g26 +sS'tracker_dfile' +p31 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/itracker/tracker.db' +p32 +sS'tracker_allowed_ips' +p33 +(lp34 +sS'mainline_dht' +p35 +I00 +sS'tracker_multitracker_maxpeers' +p36 +I20 +sS'channelcast_recent_own_subscriptions' +p37 +I13 +sS'tracker_multitracker_allowed' +p38 +S'autodetect' +p39 +sS'votecast_random_votes' +p40 +I25 +sS'tracker_multitracker_http_timeout' +p41 +I60 +sS'mugshot' +p42 +NsS'torrent_checking' +p43 +I1 +sS'tracker_socket_timeout' +p44 +I15 +sS'tracker_keep_dead' +p45 +I0 +sS'dialback_trust_superpeers' +p46 +I01 +sS'maxport' +p47 +I25123 +sS'subtitles_upload_rate' +p48 +I1024 +sS'tracker_hupmonitor' +p49 +I0 +sS'eckeypairfilename' +p50 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/ec.pem' +p51 +sS'videoanalyserpath' +p52 +S'ffmpeg' +p53 +sS'multicast_local_peer_discovery' +p54 +I01 +sS'tracker_aggregate_forward' +p55 +(lp56 +NaNasS'tracker_url' +p57 +NsS'timeout' +p58 +F300.0 +sS'socnet' +p59 +I01 +sS'tracker_min_time_between_log_flushes' +p60 +F3.0 +sS'tracker_allowed_controls' +p61 +I0 +sS'crawler' +p62 +I01 +sS'channelcast_random_own_subscriptions' +p63 +I12 +sS'stop_collecting_threshold' +p64 +I200 +sS'coopdlconfig' +p65 +NsS'timeout_check_interval' +p66 +F60.0 +sS'dialback_active' +p67 +I01 +sS'live_aux_seeders' +p68 +(lp69 +sS'tracker_timeout_downloaders_interval' +p70 +I2700 +sS'overlay_max_message_length' +p71 +I8388608 +sS'tracker_reannounce_interval' +p72 +I1800 +sS'dialback' +p73 +I01 +sS'tracker_infopage_redirect' +p74 +NsS'tracker_multitracker_enabled' +p75 +I0 +sS'max_channel_query_results' +p76 +I25 +sS'state_dir' +p77 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir' +p78 +sS'tracker_parse_dir_interval' +p79 +I60 +sS'overlay' +p80 +I01 +sS'rquery' +p81 +I01 +sS'tracker_timeout_check_interval' +p82 +I5 +sS'random_port' +p83 +I1 +sS'download_help' +p84 +I01 +sS'subtitles_collecting' +p85 +I00 +sS'nat_detect' +p86 +I01 +sS'superpeer' +p87 +I00 +sS'torrent_collecting' +p88 +I01 +sS'version' +p89 +I2 +sS'proxy_mode' +p90 +I0 +sS'start_recommender' +p91 +I01 +sS'overlay_log' +p92 +NsS'stun_servers' +p93 +(lp94 +(S'stun1.tribler.org' +p95 +I6701 +tp96 +a(S'stun2.tribler.org' +p97 +I6702 +tp98 +asS'ipv6_binds_v4' +p99 +I1 +sS'tracker_response_size' +p100 +I50 +sS'torrent_checking_period' +p101 +I31 +sS'buddycast_max_peers' +p102 +I2500 +sS'pingback_servers' +p103 +(lp104 +(S'pingback.tribler.org' +p105 +I6703 +tp106 +a(S'pingback2.tribler.org' +p107 +I6703 +tp108 +asS'tracker_nat_check' +p109 +I3 +sS'crawler_file' +p110 +V./Tribler/Core/Statistics/crawler.txt +p111 +sS'subtitles_collecting_dir' +p112 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/collected_subtitles_files' +p113 +sS'megacache' +p114 +I01 +sS'tracker_save_dfile_interval' +p115 +I300 +sS'ipv6_enabled' +p116 +I0 +sS'nickname' +p117 +S'tracker' +p118 +sS'tracker_allow_get' +p119 +I1 +sS'torrent_collecting_dir' +p120 +S'../../TestSetup/ClientRunFolders/Proxy01/statedir/collected_torrent_files' +p121 +sS'tracker_scrape_allowed' +p122 +S'full' +p123 +sS'torrent_collecting_rate' +p124 +I50 +sS'torrent_collecting_max_torrents' +p125 +I50000 +sS'bind' +p126 +(lp127 +sS'tracker_multitracker_reannounce_interval' +p128 +I120 +sS'tracker_show_infopage' +p129 +I1 +sS'helpers' +p130 +I5 +sS'tracker_logfile' +p131 +S'/dev/null' +p132 +sS'buddycast_interval' +p133 +I15 +sS'tracker_log_nat_checks' +p134 +I0 +sS'tracker_favicon' +p135 +NsS'bartercast' +p136 +I01 +s. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb new file mode 100644 index 0000000..834decf Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb differ diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb new file mode 100644 index 0000000..d5b1641 Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000..73c996b Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb differ diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb new file mode 100644 index 0000000..0e975ad Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy01/statedir01.tar.gz b/ClientWorkingFolders/Proxy01/statedir01.tar.gz new file mode 100644 index 0000000..3470cb7 Binary files /dev/null and b/ClientWorkingFolders/Proxy01/statedir01.tar.gz differ diff --git a/ClientWorkingFolders/Proxy02/statedir/ec.pem b/ClientWorkingFolders/Proxy02/statedir/ec.pem new file mode 100644 index 0000000..e27b008 --- /dev/null +++ b/ClientWorkingFolders/Proxy02/statedir/ec.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MG0CAQEEHQQdnt2Ks+3pCyUrkKCYhlyUlwZ8lqh08lGsb9gyoAcGBSuBBAAaoUAD +PgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2YAUgT2f4LADwczpflrJQwAXX6xq6o +0qDmyGPUhET2eDcGcshm +-----END EC PRIVATE KEY----- diff --git a/ClientWorkingFolders/Proxy02/statedir/ecpub.pem b/ClientWorkingFolders/Proxy02/statedir/ecpub.pem new file mode 100644 index 0000000..0e63b99 --- /dev/null +++ b/ClientWorkingFolders/Proxy02/statedir/ecpub.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAXEAM73z5pPsYZOAYt821scIXPfmfR2Y +AUgT2f4LADwczpflrJQwAXX6xq6o0qDmyGPUhET2eDcGcshm +-----END PUBLIC KEY----- diff --git a/ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle new file mode 100644 index 0000000..534614a --- /dev/null +++ b/ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle @@ -0,0 +1,2 @@ +(dp1 +. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle new file mode 100644 index 0000000..beb4c96 --- /dev/null +++ b/ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle @@ -0,0 +1,339 @@ +(dp0 +S'superpeer_file' +p1 +V./Tribler/Core/superpeer.txt +p2 +sS'install_dir' +p3 +V. +p4 +sS'internaltracker' +p5 +I00 +sS'tracker_only_local_override_ip' +p6 +I2 +sS'tracker_dfile_format' +p7 +S'pickle' +p8 +sS'tracker_aggregator' +p9 +I0 +sS'magnetlink' +p10 +I01 +sS'tracker_banned_ips' +p11 +(lp12 +sS'peer_icon_path' +p13 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/icons' +p14 +sS'buddycast' +p15 +I00 +sS'tracker_show_names' +p16 +I1 +sS'download_help_dir' +p17 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/help_dir' +p18 +sS'puncturing_internal_port' +p19 +I6700 +sS'buddycast_collecting_solution' +p20 +I1 +sS'votecast_recent_votes' +p21 +I25 +sS'tracker_allowed_dir' +p22 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/itracker' +p23 +sS'upnp_nat_access' +p24 +I3 +sS'ip' +p25 +S'' +p26 +sS'family_filter' +p27 +I01 +sS'tracker_min_time_between_cache_refreshes' +p28 +F600.0 +sS'minport' +p29 +I25123 +sS'tracker_allowed_list' +p30 +g26 +sS'tracker_dfile' +p31 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/itracker/tracker.db' +p32 +sS'tracker_allowed_ips' +p33 +(lp34 +sS'mainline_dht' +p35 +I00 +sS'tracker_multitracker_maxpeers' +p36 +I20 +sS'channelcast_recent_own_subscriptions' +p37 +I13 +sS'tracker_multitracker_allowed' +p38 +S'autodetect' +p39 +sS'votecast_random_votes' +p40 +I25 +sS'tracker_multitracker_http_timeout' +p41 +I60 +sS'mugshot' +p42 +NsS'torrent_checking' +p43 +I1 +sS'tracker_socket_timeout' +p44 +I15 +sS'tracker_keep_dead' +p45 +I0 +sS'dialback_trust_superpeers' +p46 +I01 +sS'maxport' +p47 +I25123 +sS'subtitles_upload_rate' +p48 +I1024 +sS'tracker_hupmonitor' +p49 +I0 +sS'eckeypairfilename' +p50 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/ec.pem' +p51 +sS'videoanalyserpath' +p52 +S'ffmpeg' +p53 +sS'multicast_local_peer_discovery' +p54 +I01 +sS'tracker_aggregate_forward' +p55 +(lp56 +NaNasS'tracker_url' +p57 +NsS'timeout' +p58 +F300.0 +sS'socnet' +p59 +I01 +sS'tracker_min_time_between_log_flushes' +p60 +F3.0 +sS'tracker_allowed_controls' +p61 +I0 +sS'crawler' +p62 +I01 +sS'channelcast_random_own_subscriptions' +p63 +I12 +sS'stop_collecting_threshold' +p64 +I200 +sS'coopdlconfig' +p65 +NsS'timeout_check_interval' +p66 +F60.0 +sS'dialback_active' +p67 +I01 +sS'live_aux_seeders' +p68 +(lp69 +sS'tracker_timeout_downloaders_interval' +p70 +I2700 +sS'overlay_max_message_length' +p71 +I8388608 +sS'tracker_reannounce_interval' +p72 +I1800 +sS'dialback' +p73 +I01 +sS'tracker_infopage_redirect' +p74 +NsS'tracker_multitracker_enabled' +p75 +I0 +sS'max_channel_query_results' +p76 +I25 +sS'state_dir' +p77 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir' +p78 +sS'tracker_parse_dir_interval' +p79 +I60 +sS'overlay' +p80 +I01 +sS'rquery' +p81 +I01 +sS'tracker_timeout_check_interval' +p82 +I5 +sS'random_port' +p83 +I1 +sS'download_help' +p84 +I01 +sS'subtitles_collecting' +p85 +I00 +sS'nat_detect' +p86 +I01 +sS'superpeer' +p87 +I00 +sS'torrent_collecting' +p88 +I01 +sS'version' +p89 +I2 +sS'proxy_mode' +p90 +I0 +sS'start_recommender' +p91 +I01 +sS'overlay_log' +p92 +NsS'stun_servers' +p93 +(lp94 +(S'stun1.tribler.org' +p95 +I6701 +tp96 +a(S'stun2.tribler.org' +p97 +I6702 +tp98 +asS'ipv6_binds_v4' +p99 +I1 +sS'tracker_response_size' +p100 +I50 +sS'torrent_checking_period' +p101 +I31 +sS'buddycast_max_peers' +p102 +I2500 +sS'pingback_servers' +p103 +(lp104 +(S'pingback.tribler.org' +p105 +I6703 +tp106 +a(S'pingback2.tribler.org' +p107 +I6703 +tp108 +asS'tracker_nat_check' +p109 +I3 +sS'crawler_file' +p110 +V./Tribler/Core/Statistics/crawler.txt +p111 +sS'subtitles_collecting_dir' +p112 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/collected_subtitles_files' +p113 +sS'megacache' +p114 +I01 +sS'tracker_save_dfile_interval' +p115 +I300 +sS'ipv6_enabled' +p116 +I0 +sS'nickname' +p117 +S'coordinator' +p118 +sS'tracker_allow_get' +p119 +I1 +sS'torrent_collecting_dir' +p120 +S'../../TestSetup/ClientRunFolders/Proxy02/statedir/collected_torrent_files' +p121 +sS'tracker_scrape_allowed' +p122 +S'full' +p123 +sS'torrent_collecting_rate' +p124 +I50 +sS'torrent_collecting_max_torrents' +p125 +I50000 +sS'bind' +p126 +(lp127 +sS'tracker_multitracker_reannounce_interval' +p128 +I120 +sS'tracker_show_infopage' +p129 +I1 +sS'helpers' +p130 +I5 +sS'tracker_logfile' +p131 +S'/dev/null' +p132 +sS'buddycast_interval' +p133 +I15 +sS'tracker_log_nat_checks' +p134 +I0 +sS'tracker_favicon' +p135 +NsS'bartercast' +p136 +I01 +s. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb new file mode 100644 index 0000000..834decf Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb differ diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb new file mode 100644 index 0000000..d5b1641 Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000..73c996b Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb differ diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb new file mode 100644 index 0000000..0e975ad Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy02/statedir02.tar.gz b/ClientWorkingFolders/Proxy02/statedir02.tar.gz new file mode 100644 index 0000000..cc4619f Binary files /dev/null and b/ClientWorkingFolders/Proxy02/statedir02.tar.gz differ diff --git a/ClientWorkingFolders/Proxy03/statedir/ec.pem b/ClientWorkingFolders/Proxy03/statedir/ec.pem new file mode 100644 index 0000000..da0de46 --- /dev/null +++ b/ClientWorkingFolders/Proxy03/statedir/ec.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MG0CAQEEHRa9+eCnq076J5ZklXwNG9qQNqZrcusShbMVc40aoAcGBSuBBAAaoUAD +PgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8bO62YQO2ALndpQslGy0Hr/qb+VYh +nz1sbggCWImYj/DT4nEM +-----END EC PRIVATE KEY----- diff --git a/ClientWorkingFolders/Proxy03/statedir/ecpub.pem b/ClientWorkingFolders/Proxy03/statedir/ecpub.pem new file mode 100644 index 0000000..4b68cbb --- /dev/null +++ b/ClientWorkingFolders/Proxy03/statedir/ecpub.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAS6Ien/aWL1XCF4g4x+dK2+v8dLusjB8 +bO62YQO2ALndpQslGy0Hr/qb+VYhnz1sbggCWImYj/DT4nEM +-----END PUBLIC KEY----- diff --git a/ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle new file mode 100644 index 0000000..534614a --- /dev/null +++ b/ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle @@ -0,0 +1,2 @@ +(dp1 +. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle new file mode 100644 index 0000000..9813bb6 --- /dev/null +++ b/ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle @@ -0,0 +1,339 @@ +(dp0 +S'superpeer_file' +p1 +V./Tribler/Core/superpeer.txt +p2 +sS'install_dir' +p3 +V. +p4 +sS'internaltracker' +p5 +I00 +sS'tracker_only_local_override_ip' +p6 +I2 +sS'tracker_dfile_format' +p7 +S'pickle' +p8 +sS'tracker_aggregator' +p9 +I0 +sS'magnetlink' +p10 +I01 +sS'tracker_banned_ips' +p11 +(lp12 +sS'peer_icon_path' +p13 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/icons' +p14 +sS'buddycast' +p15 +I00 +sS'tracker_show_names' +p16 +I1 +sS'download_help_dir' +p17 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/help_dir' +p18 +sS'puncturing_internal_port' +p19 +I6700 +sS'buddycast_collecting_solution' +p20 +I1 +sS'votecast_recent_votes' +p21 +I25 +sS'tracker_allowed_dir' +p22 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/itracker' +p23 +sS'upnp_nat_access' +p24 +I3 +sS'ip' +p25 +S'' +p26 +sS'family_filter' +p27 +I01 +sS'tracker_min_time_between_cache_refreshes' +p28 +F600.0 +sS'minport' +p29 +I25123 +sS'tracker_allowed_list' +p30 +g26 +sS'tracker_dfile' +p31 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/itracker/tracker.db' +p32 +sS'tracker_allowed_ips' +p33 +(lp34 +sS'mainline_dht' +p35 +I00 +sS'tracker_multitracker_maxpeers' +p36 +I20 +sS'channelcast_recent_own_subscriptions' +p37 +I13 +sS'tracker_multitracker_allowed' +p38 +S'autodetect' +p39 +sS'votecast_random_votes' +p40 +I25 +sS'tracker_multitracker_http_timeout' +p41 +I60 +sS'mugshot' +p42 +NsS'torrent_checking' +p43 +I1 +sS'tracker_socket_timeout' +p44 +I15 +sS'tracker_keep_dead' +p45 +I0 +sS'dialback_trust_superpeers' +p46 +I01 +sS'maxport' +p47 +I25123 +sS'subtitles_upload_rate' +p48 +I1024 +sS'tracker_hupmonitor' +p49 +I0 +sS'eckeypairfilename' +p50 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/ec.pem' +p51 +sS'videoanalyserpath' +p52 +S'ffmpeg' +p53 +sS'multicast_local_peer_discovery' +p54 +I01 +sS'tracker_aggregate_forward' +p55 +(lp56 +NaNasS'tracker_url' +p57 +NsS'timeout' +p58 +F300.0 +sS'socnet' +p59 +I01 +sS'tracker_min_time_between_log_flushes' +p60 +F3.0 +sS'tracker_allowed_controls' +p61 +I0 +sS'crawler' +p62 +I01 +sS'channelcast_random_own_subscriptions' +p63 +I12 +sS'stop_collecting_threshold' +p64 +I200 +sS'coopdlconfig' +p65 +NsS'timeout_check_interval' +p66 +F60.0 +sS'dialback_active' +p67 +I01 +sS'live_aux_seeders' +p68 +(lp69 +sS'tracker_timeout_downloaders_interval' +p70 +I2700 +sS'overlay_max_message_length' +p71 +I8388608 +sS'tracker_reannounce_interval' +p72 +I1800 +sS'dialback' +p73 +I01 +sS'tracker_infopage_redirect' +p74 +NsS'tracker_multitracker_enabled' +p75 +I0 +sS'max_channel_query_results' +p76 +I25 +sS'state_dir' +p77 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir' +p78 +sS'tracker_parse_dir_interval' +p79 +I60 +sS'overlay' +p80 +I01 +sS'rquery' +p81 +I01 +sS'tracker_timeout_check_interval' +p82 +I5 +sS'random_port' +p83 +I1 +sS'download_help' +p84 +I01 +sS'subtitles_collecting' +p85 +I00 +sS'nat_detect' +p86 +I01 +sS'superpeer' +p87 +I00 +sS'torrent_collecting' +p88 +I01 +sS'version' +p89 +I2 +sS'proxy_mode' +p90 +I0 +sS'start_recommender' +p91 +I01 +sS'overlay_log' +p92 +NsS'stun_servers' +p93 +(lp94 +(S'stun1.tribler.org' +p95 +I6701 +tp96 +a(S'stun2.tribler.org' +p97 +I6702 +tp98 +asS'ipv6_binds_v4' +p99 +I1 +sS'tracker_response_size' +p100 +I50 +sS'torrent_checking_period' +p101 +I31 +sS'buddycast_max_peers' +p102 +I2500 +sS'pingback_servers' +p103 +(lp104 +(S'pingback.tribler.org' +p105 +I6703 +tp106 +a(S'pingback2.tribler.org' +p107 +I6703 +tp108 +asS'tracker_nat_check' +p109 +I3 +sS'crawler_file' +p110 +V./Tribler/Core/Statistics/crawler.txt +p111 +sS'subtitles_collecting_dir' +p112 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/collected_subtitles_files' +p113 +sS'megacache' +p114 +I01 +sS'tracker_save_dfile_interval' +p115 +I300 +sS'ipv6_enabled' +p116 +I0 +sS'nickname' +p117 +S'helper1' +p118 +sS'tracker_allow_get' +p119 +I1 +sS'torrent_collecting_dir' +p120 +S'../../TestSetup/ClientRunFolders/Proxy03/statedir/collected_torrent_files' +p121 +sS'tracker_scrape_allowed' +p122 +S'full' +p123 +sS'torrent_collecting_rate' +p124 +I50 +sS'torrent_collecting_max_torrents' +p125 +I50000 +sS'bind' +p126 +(lp127 +sS'tracker_multitracker_reannounce_interval' +p128 +I120 +sS'tracker_show_infopage' +p129 +I1 +sS'helpers' +p130 +I5 +sS'tracker_logfile' +p131 +S'/dev/null' +p132 +sS'buddycast_interval' +p133 +I15 +sS'tracker_log_nat_checks' +p134 +I0 +sS'tracker_favicon' +p135 +NsS'bartercast' +p136 +I01 +s. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb new file mode 100644 index 0000000..834decf Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb differ diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb new file mode 100644 index 0000000..d5b1641 Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000..73c996b Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb differ diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb new file mode 100644 index 0000000..0e975ad Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy03/statedir03.tar.gz b/ClientWorkingFolders/Proxy03/statedir03.tar.gz new file mode 100644 index 0000000..dad96f0 Binary files /dev/null and b/ClientWorkingFolders/Proxy03/statedir03.tar.gz differ diff --git a/ClientWorkingFolders/Proxy04/statedir/ec.pem b/ClientWorkingFolders/Proxy04/statedir/ec.pem new file mode 100644 index 0000000..8b8622b --- /dev/null +++ b/ClientWorkingFolders/Proxy04/statedir/ec.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MG0CAQEEHSyn4VBGWTCgYF7ukNZYnu+F0U7oMGWNDn7GOZ7IoAcGBSuBBAAaoUAD +PgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygoZvuK561OAG1VMGQ1P+oge2jtRznR +iudc1l2LOw4G24wA2IS5 +-----END EC PRIVATE KEY----- diff --git a/ClientWorkingFolders/Proxy04/statedir/ecpub.pem b/ClientWorkingFolders/Proxy04/statedir/ecpub.pem new file mode 100644 index 0000000..380eb04 --- /dev/null +++ b/ClientWorkingFolders/Proxy04/statedir/ecpub.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEACglrT1xYWvC9AUyM6NDa1x6vWmyeygo +ZvuK561OAG1VMGQ1P+oge2jtRznRiudc1l2LOw4G24wA2IS5 +-----END PUBLIC KEY----- diff --git a/ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle b/ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle new file mode 100644 index 0000000..534614a --- /dev/null +++ b/ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle @@ -0,0 +1,2 @@ +(dp1 +. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle b/ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle new file mode 100644 index 0000000..a05bfa1 --- /dev/null +++ b/ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle @@ -0,0 +1,339 @@ +(dp0 +S'superpeer_file' +p1 +V./Tribler/Core/superpeer.txt +p2 +sS'install_dir' +p3 +V. +p4 +sS'internaltracker' +p5 +I00 +sS'tracker_only_local_override_ip' +p6 +I2 +sS'tracker_dfile_format' +p7 +S'pickle' +p8 +sS'tracker_aggregator' +p9 +I0 +sS'magnetlink' +p10 +I01 +sS'tracker_banned_ips' +p11 +(lp12 +sS'peer_icon_path' +p13 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/icons' +p14 +sS'buddycast' +p15 +I00 +sS'tracker_show_names' +p16 +I1 +sS'download_help_dir' +p17 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/help_dir' +p18 +sS'puncturing_internal_port' +p19 +I6700 +sS'buddycast_collecting_solution' +p20 +I1 +sS'votecast_recent_votes' +p21 +I25 +sS'tracker_allowed_dir' +p22 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/itracker' +p23 +sS'upnp_nat_access' +p24 +I3 +sS'ip' +p25 +S'' +p26 +sS'family_filter' +p27 +I01 +sS'tracker_min_time_between_cache_refreshes' +p28 +F600.0 +sS'minport' +p29 +I25123 +sS'tracker_allowed_list' +p30 +g26 +sS'tracker_dfile' +p31 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/itracker/tracker.db' +p32 +sS'tracker_allowed_ips' +p33 +(lp34 +sS'mainline_dht' +p35 +I00 +sS'tracker_multitracker_maxpeers' +p36 +I20 +sS'channelcast_recent_own_subscriptions' +p37 +I13 +sS'tracker_multitracker_allowed' +p38 +S'autodetect' +p39 +sS'votecast_random_votes' +p40 +I25 +sS'tracker_multitracker_http_timeout' +p41 +I60 +sS'mugshot' +p42 +NsS'torrent_checking' +p43 +I1 +sS'tracker_socket_timeout' +p44 +I15 +sS'tracker_keep_dead' +p45 +I0 +sS'dialback_trust_superpeers' +p46 +I01 +sS'maxport' +p47 +I25123 +sS'subtitles_upload_rate' +p48 +I1024 +sS'tracker_hupmonitor' +p49 +I0 +sS'eckeypairfilename' +p50 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/ec.pem' +p51 +sS'videoanalyserpath' +p52 +S'ffmpeg' +p53 +sS'multicast_local_peer_discovery' +p54 +I01 +sS'tracker_aggregate_forward' +p55 +(lp56 +NaNasS'tracker_url' +p57 +NsS'timeout' +p58 +F300.0 +sS'socnet' +p59 +I01 +sS'tracker_min_time_between_log_flushes' +p60 +F3.0 +sS'tracker_allowed_controls' +p61 +I0 +sS'crawler' +p62 +I01 +sS'channelcast_random_own_subscriptions' +p63 +I12 +sS'stop_collecting_threshold' +p64 +I200 +sS'coopdlconfig' +p65 +NsS'timeout_check_interval' +p66 +F60.0 +sS'dialback_active' +p67 +I01 +sS'live_aux_seeders' +p68 +(lp69 +sS'tracker_timeout_downloaders_interval' +p70 +I2700 +sS'overlay_max_message_length' +p71 +I8388608 +sS'tracker_reannounce_interval' +p72 +I1800 +sS'dialback' +p73 +I01 +sS'tracker_infopage_redirect' +p74 +NsS'tracker_multitracker_enabled' +p75 +I0 +sS'max_channel_query_results' +p76 +I25 +sS'state_dir' +p77 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir' +p78 +sS'tracker_parse_dir_interval' +p79 +I60 +sS'overlay' +p80 +I01 +sS'rquery' +p81 +I01 +sS'tracker_timeout_check_interval' +p82 +I5 +sS'random_port' +p83 +I1 +sS'download_help' +p84 +I01 +sS'subtitles_collecting' +p85 +I00 +sS'nat_detect' +p86 +I01 +sS'superpeer' +p87 +I00 +sS'torrent_collecting' +p88 +I01 +sS'version' +p89 +I2 +sS'proxy_mode' +p90 +I0 +sS'start_recommender' +p91 +I01 +sS'overlay_log' +p92 +NsS'stun_servers' +p93 +(lp94 +(S'stun1.tribler.org' +p95 +I6701 +tp96 +a(S'stun2.tribler.org' +p97 +I6702 +tp98 +asS'ipv6_binds_v4' +p99 +I1 +sS'tracker_response_size' +p100 +I50 +sS'torrent_checking_period' +p101 +I31 +sS'buddycast_max_peers' +p102 +I2500 +sS'pingback_servers' +p103 +(lp104 +(S'pingback.tribler.org' +p105 +I6703 +tp106 +a(S'pingback2.tribler.org' +p107 +I6703 +tp108 +asS'tracker_nat_check' +p109 +I3 +sS'crawler_file' +p110 +V./Tribler/Core/Statistics/crawler.txt +p111 +sS'subtitles_collecting_dir' +p112 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/collected_subtitles_files' +p113 +sS'megacache' +p114 +I01 +sS'tracker_save_dfile_interval' +p115 +I300 +sS'ipv6_enabled' +p116 +I0 +sS'nickname' +p117 +S'helper2' +p118 +sS'tracker_allow_get' +p119 +I1 +sS'torrent_collecting_dir' +p120 +S'../../TestSetup/ClientRunFolders/Proxy04/statedir/collected_torrent_files' +p121 +sS'tracker_scrape_allowed' +p122 +S'full' +p123 +sS'torrent_collecting_rate' +p124 +I50 +sS'torrent_collecting_max_torrents' +p125 +I50000 +sS'bind' +p126 +(lp127 +sS'tracker_multitracker_reannounce_interval' +p128 +I120 +sS'tracker_show_infopage' +p129 +I1 +sS'helpers' +p130 +I5 +sS'tracker_logfile' +p131 +S'/dev/null' +p132 +sS'buddycast_interval' +p133 +I15 +sS'tracker_log_nat_checks' +p134 +I0 +sS'tracker_favicon' +p135 +NsS'bartercast' +p136 +I01 +s. \ No newline at end of file diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb new file mode 100644 index 0000000..834decf Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb differ diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb new file mode 100644 index 0000000..d5b1641 Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000..73c996b Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb differ diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb new file mode 100644 index 0000000..0e975ad Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb differ diff --git a/ClientWorkingFolders/Proxy04/statedir04.tar.gz b/ClientWorkingFolders/Proxy04/statedir04.tar.gz new file mode 100644 index 0000000..c0a3652 Binary files /dev/null and b/ClientWorkingFolders/Proxy04/statedir04.tar.gz differ diff --git a/ConfigFiles/campaign01.html b/ConfigFiles/campaign01.html new file mode 100644 index 0000000..d31dddb --- /dev/null +++ b/ConfigFiles/campaign01.html @@ -0,0 +1,211 @@ + + + Proxy Technology Tests + + + + + +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameNo. of SeedersNo. of LeechersNo. of ProxiesNo. of DoesBandwidth RectrictionsGraphs
scenario-0116008 Mbit/s up/downdlspeed vs percent; dlspeed vs time
scenario-0215218 Mbit/s up/downdlspeed vs percent; dlspeed vs time
scenario-0361008 Mbit/s up/downdlspeed vs percent; dlspeed vs time
scenario-0460218 Mbit/s up/downdlspeed vs percent; dlspeed vs time
scenario-05152132 Mbit/s up/down doe-proxy

8 Mbit/s up/down all others

dlspeed vs percent; dlspeed vs time
scenario-06602132 Mbit/s up/down doe-proxy

8 Mbit/s up/down all others

dlspeed vs percent; dlspeed vs time
scenario-07602132 Mbit/s up/down proxy bw

8 Mbit/s up/down all others

dlspeed vs percent; dlspeed vs time
scenario-08152132 Mbit/s up/down proxy bw

8 Mbit/s up/down all others

dlspeed vs percent; dlspeed vs time
scenario-0960211 Gbit/s up/down bwdlspeed vs percent; dlspeed vs time
+
+
+ + + + + \ No newline at end of file diff --git a/ConfigFiles/campaign01.txt b/ConfigFiles/campaign01.txt new file mode 100644 index 0000000..b943c0d --- /dev/null +++ b/ConfigFiles/campaign01.txt @@ -0,0 +1,14 @@ +# Campaign01 +# Description: +# * a complete run of all the 7 scenarios +# +# ScenarioDescription PlotScript +scenario01.txt scenario01.r +scenario02.txt scenario02.r +scenario03.txt scenario03.r +scenario04.txt scenario04.r +scenario05.txt scenario05.r +scenario06.txt scenario06.r +scenario07.txt scenario07.r +scenario08.txt scenario08.r +scenario09.txt scenario09.r \ No newline at end of file diff --git a/ConfigFiles/globalconfig.txt b/ConfigFiles/globalconfig.txt new file mode 100644 index 0000000..45994fd --- /dev/null +++ b/ConfigFiles/globalconfig.txt @@ -0,0 +1,32 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Configuration file used to specify the local path to the testing infrastructure and the P2P clients are located +# +# This file is included by the rest of the scripts in the P2P-Testing-Infrastructure + +TESTING_INFRASTRUCTURE_ABS_PATH="/home/george/P2P-Next/P2P-Testing-Infrastructure" + +# P2P_NEXT_REL_PATH is relative to ControlScripts folder +P2P_NEXT_REL_PATH="../../" +# The / at the end is important for rsync to work properly +P2P_NEXT_ABS_PATH="/home/george/P2P-Next/" + +# TRIBLER_REL_PATH is relative to ControlScripts folder +TRIBLER_REL_PATH="../../TriblerBranches/proxyservice-m32" +TRIBLER_ABS_PATH="/home/george/P2P-Next/TriblerBranches/proxyservice-m32" + +# WORKING_FOLDER_REL_PATH is relative to TRIBLER_ABS_PATH folder +WORKING_FOLDER_REL_PATH="../../P2P-Testing-Infrastructure/ClientWorkingFolders" + +# BITTORNADO_REL_PATH is relative to ControlScripts folder +BITTORNADO_REL_PATH="../../BTclients/BitTornado/BitTornado-CVS" + +# CONFIG_FILES_REL_PATH is relative to ControlScripts folder +CONFIG_FILES_REL_PATH="../ConfigFiles" + +# CONFIG_FILES_REL_PATH is relative to ControlScripts folder +RESULTS_FOLDER_REL_PATH="../Results" + +# The script used to limit the bw on the nodes +TC_SCRIPT=bw_limit.sh \ No newline at end of file diff --git a/ConfigFiles/scenario01.r b/ConfigFiles/scenario01.r new file mode 100644 index 0000000..dd375a5 --- /dev/null +++ b/ConfigFiles/scenario01.r @@ -0,0 +1,85 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +leecher01=read.table(paste(target_folder, "p2p-next-05.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher02=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher03=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher04=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher05=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher06=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +leecher01$dlspeed <- leecher01$dlspeed*8/1000 +leecher02$dlspeed <- leecher02$dlspeed*8/1000 +leecher03$dlspeed <- leecher03$dlspeed*8/1000 +leecher04$dlspeed <- leecher04$dlspeed*8/1000 +leecher05$dlspeed <- leecher05$dlspeed*8/1000 +leecher06$dlspeed <- leecher06$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +geom_point(aes(x=leecher06$percent, y=leecher06$dlspeed, label="Leecher 06", colour="Leecher 06"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="black", "Leecher 06"="pink")) + +opts(title=paste(campaign_name, "Scenario-01: a flashcrowd swarm (1 Seeder, 6 Leechers), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario01-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario01-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +geom_point(aes(x=leecher06$time, y=leecher06$dlspeed, label="Leecher 06", colour="Leecher 06"), size=1) + +theme_bw() + +scale_x_continuous("Time(s)") + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="black", "Leecher 06"="pink")) + +opts(title=paste(campaign_name, "Scenario-01: a flashcrowd swarm (1 Seeder, 6 Leechers), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario01-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario01-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario01.txt b/ConfigFiles/scenario01.txt new file mode 100644 index 0000000..5637fd5 --- /dev/null +++ b/ConfigFiles/scenario01.txt @@ -0,0 +1,15 @@ +# Scenario01 +# Description: +# * a flashcrowd swarm +# * 1 seeder +# * 6 leechers +# * all peers have the same bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 2 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh \ No newline at end of file diff --git a/ConfigFiles/scenario02.r b/ConfigFiles/scenario02.r new file mode 100644 index 0000000..417f0fb --- /dev/null +++ b/ConfigFiles/scenario02.r @@ -0,0 +1,93 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 +leecher01$dlspeed <- leecher01$dlspeed*8/1000 +leecher02$dlspeed <- leecher02$dlspeed*8/1000 +leecher03$dlspeed <- leecher03$dlspeed*8/1000 +leecher04$dlspeed <- leecher04$dlspeed*8/1000 +leecher05$dlspeed <- leecher05$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-02: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies)\nall peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario02-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario02-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-02: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies)\nall peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario02-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario02-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario02.txt b/ConfigFiles/scenario02.txt new file mode 100644 index 0000000..c8ee449 --- /dev/null +++ b/ConfigFiles/scenario02.txt @@ -0,0 +1,19 @@ +# Scenario02 +# Description: +# * a flashcrowd swarm +# * 1 seeder +# * 5 leechers +# * 1 doe +# * 2 proxies +# * all peers have the same bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh \ No newline at end of file diff --git a/ConfigFiles/scenario03.r b/ConfigFiles/scenario03.r new file mode 100644 index 0000000..de5560f --- /dev/null +++ b/ConfigFiles/scenario03.r @@ -0,0 +1,65 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +leecher01=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +leecher01$dlspeed <- leecher01$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red")) + +opts(title=paste(campaign_name, "Scenario-03: a seeded swarm (6 Seeders, 1 Leecher), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario03-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario03-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red")) + +opts(title=paste(campaign_name, "Scenario-03: a seeded swarm (6 Seeders, 1 Leecher), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario03-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario03-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario03.txt b/ConfigFiles/scenario03.txt new file mode 100644 index 0000000..57fe5d4 --- /dev/null +++ b/ConfigFiles/scenario03.txt @@ -0,0 +1,15 @@ +# Scenario03 +# Description: +# * a seeded swarm +# * 1 leecher +# * 6 seeders +# * all peers have the same bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 1 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh \ No newline at end of file diff --git a/ConfigFiles/scenario04.r b/ConfigFiles/scenario04.r new file mode 100644 index 0000000..58a107f --- /dev/null +++ b/ConfigFiles/scenario04.r @@ -0,0 +1,73 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="blue", "Proxy 02"="green")) + +opts(title=paste(campaign_name, "Scenario-04: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario04-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario04-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="blue", "Proxy 02"="green")) + +opts(title=paste(campaign_name, "Scenario-04: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies), all peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario04-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario04-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario04.txt b/ConfigFiles/scenario04.txt new file mode 100644 index 0000000..3b674b8 --- /dev/null +++ b/ConfigFiles/scenario04.txt @@ -0,0 +1,18 @@ +# Scenario04 +# Description: +# * a seeded swarm +# * 6 seeders +# * 1 doe +# * 2 proxies +# * all peers have the same bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh \ No newline at end of file diff --git a/ConfigFiles/scenario05.r b/ConfigFiles/scenario05.r new file mode 100644 index 0000000..97cb240 --- /dev/null +++ b/ConfigFiles/scenario05.r @@ -0,0 +1,93 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 +leecher01$dlspeed <- leecher01$dlspeed*8/1000 +leecher02$dlspeed <- leecher02$dlspeed*8/1000 +leecher03$dlspeed <- leecher03$dlspeed*8/1000 +leecher04$dlspeed <- leecher04$dlspeed*8/1000 +leecher05$dlspeed <- leecher05$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-05: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario05-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario05-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-05: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario05-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario05-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario05.txt b/ConfigFiles/scenario05.txt new file mode 100644 index 0000000..dfbdcec --- /dev/null +++ b/ConfigFiles/scenario05.txt @@ -0,0 +1,19 @@ +# Scenario05 +# Description: +# * a flashcrowd swarm +# * 1 seeder +# * 5 leechers +# * 1 doe +# * 2 proxies +# * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh \ No newline at end of file diff --git a/ConfigFiles/scenario06.r b/ConfigFiles/scenario06.r new file mode 100644 index 0000000..ddc06d5 --- /dev/null +++ b/ConfigFiles/scenario06.r @@ -0,0 +1,73 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-06: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario06-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario06-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-06: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe doe has an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario06-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario06-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario06.txt b/ConfigFiles/scenario06.txt new file mode 100644 index 0000000..c142059 --- /dev/null +++ b/ConfigFiles/scenario06.txt @@ -0,0 +1,18 @@ +# Scenario06 +# Description: +# * a seeded swarm +# * 6 seeders +# * 1 doe +# * 2 proxies +# * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh \ No newline at end of file diff --git a/ConfigFiles/scenario07.r b/ConfigFiles/scenario07.r new file mode 100644 index 0000000..ea9361d --- /dev/null +++ b/ConfigFiles/scenario07.r @@ -0,0 +1,73 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-07: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario07-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario07-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-07: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario07-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario07-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario07.txt b/ConfigFiles/scenario07.txt new file mode 100644 index 0000000..c074e69 --- /dev/null +++ b/ConfigFiles/scenario07.txt @@ -0,0 +1,18 @@ +# Scenario07 +# Description: +# * a seeded swarm +# * 6 seeders +# * 1 doe +# * 2 proxies +# * The proxies have a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh \ No newline at end of file diff --git a/ConfigFiles/scenario08.r b/ConfigFiles/scenario08.r new file mode 100644 index 0000000..bf84b56 --- /dev/null +++ b/ConfigFiles/scenario08.r @@ -0,0 +1,93 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher01=read.table(paste(target_folder, "p2p-next-06.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher02=read.table(paste(target_folder, "p2p-next-07.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher03=read.table(paste(target_folder, "p2p-next-08.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher04=read.table(paste(target_folder, "p2p-next-09.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +leecher05=read.table(paste(target_folder, "p2p-next-10.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 +leecher01$dlspeed <- leecher01$dlspeed*8/1000 +leecher02$dlspeed <- leecher02$dlspeed*8/1000 +leecher03$dlspeed <- leecher03$dlspeed*8/1000 +leecher04$dlspeed <- leecher04$dlspeed*8/1000 +leecher05$dlspeed <- leecher05$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$percent, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$percent, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$percent, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$percent, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$percent, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-08: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario08-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario08-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +geom_point(aes(x=leecher01$time, y=leecher01$dlspeed, label="Leecher 01", colour="Leecher 01"), size=1) + +geom_point(aes(x=leecher02$time, y=leecher02$dlspeed, label="Leecher 02", colour="Leecher 02"), size=1) + +geom_point(aes(x=leecher03$time, y=leecher03$dlspeed, label="Leecher 03", colour="Leecher 03"), size=1) + +geom_point(aes(x=leecher04$time, y=leecher04$dlspeed, label="Leecher 04", colour="Leecher 04"), size=1) + +geom_point(aes(x=leecher05$time, y=leecher05$dlspeed, label="Leecher 05", colour="Leecher 05"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Leecher 01"="red", "Leecher 02"="blue", "Leecher 03"="green", "Leecher 04"="orange", "Leecher 05"="pink", "Doe"="black", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-08: a flashcrowd swarm (1 Seeder, 5 Leechers, 1 Doe, 2 Proxies),\nthe proxies have an 32 Mbit/s BW, all other peers have an 8 Mbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario08-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario08-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario08.txt b/ConfigFiles/scenario08.txt new file mode 100644 index 0000000..04b1d79 --- /dev/null +++ b/ConfigFiles/scenario08.txt @@ -0,0 +1,19 @@ +# Scenario05 +# Description: +# * a flashcrowd swarm +# * 1 seeder +# * 5 leechers +# * 1 doe +# * 2 proxies +# * The doe has a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 32 400 32 400 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_seeder.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 8 100 8 100 0 start_regular.sh Data.bin.torrent detect_stopped_regular.sh parse_regular.sh \ No newline at end of file diff --git a/ConfigFiles/scenario09.r b/ConfigFiles/scenario09.r new file mode 100644 index 0000000..67dafb6 --- /dev/null +++ b/ConfigFiles/scenario09.r @@ -0,0 +1,73 @@ +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# R script used to plot the results of a scenario + +# import ggplot2 +library(ggplot2) + +# Read transmitted command line arguments +args <- commandArgs(trailingOnly = TRUE) + +# The data files are located in the target folder. Also, the graph will be saved in the target folder. +target_folder <- args[2] +campaign_name <- args[3] +rm(args) + +# read data from the data file +doe=read.table(paste(target_folder, "p2p-next-01.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy01=read.table(paste(target_folder, "p2p-next-03.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") +proxy02=read.table(paste(target_folder, "p2p-next-04.grid.pub.ro.log.data", sep="/"), header=T, sep=" ") + +# transform KB/s to Mbit/s +doe$dlspeed <- doe$dlspeed*8/1000 +proxy01$dlspeed <- proxy01$dlspeed*8/1000 +proxy02$dlspeed <- proxy02$dlspeed*8/1000 + + + +# plot dlspeed-percent data +p <- ggplot() + +geom_point(aes(x=doe$percent, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$percent, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$percent, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-09: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nall peers have an 1 Gbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario09-dlspeed-percent.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario09-dlspeed-percent.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() + + + +# plot dlspeed-time data +p <- ggplot() + +geom_point(aes(x=doe$time, y=doe$dlspeed, label="Doe", colour="Doe"), size=1) + +geom_point(aes(x=proxy01$time, y=proxy01$dlspeed, label="Proxy 01", colour="Proxy 01"), size=1) + +geom_point(aes(x=proxy02$time, y=proxy02$dlspeed, label="Proxy 02", colour="Proxy 02"), size=1) + +theme_bw() + +scale_x_continuous("Time (s)") + +scale_y_continuous("Download speed (Mbit/s)") + +coord_cartesian() + +scale_colour_manual("Legend", c("Doe"="red", "Proxy 01"="magenta", "Proxy 02"="cyan")) + +opts(title=paste(campaign_name, "Scenario-09: a seeded swarm (6 Seeders, 1 Doe, 2 Proxies),\nall peers have an 1 Gbit/s BW", sep="\n")) + +# plot data as an eps file +postscript(paste(target_folder, "scenario09-dlspeed-time.eps", sep="/")) +print(p) +dev.off() + +# plot data as an png file +png(paste(target_folder, "scenario09-dlspeed-time.png", sep="/"), width = 1280, height = 800) +print(p) +dev.off() diff --git a/ConfigFiles/scenario09.txt b/ConfigFiles/scenario09.txt new file mode 100644 index 0000000..6cd877e --- /dev/null +++ b/ConfigFiles/scenario09.txt @@ -0,0 +1,18 @@ +# Scenario07 +# Description: +# * a seeded swarm +# * 6 seeders +# * 1 doe +# * 2 proxies +# * The proxies have a 32Mbps bandwidth, all the other peers have an 8Mbps bandwidth +# +# Hostname SSHport User RemoteFolder NetInterface Download(Mbps) DownloadBurst(K) Upload(Mbps) UploadBurst(K) StartDelay(s) StartCommand StopDetector LogParser +p2p-next-01.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 1 start_doe.sh Data.bin.torrent detect_stopped_doe.sh parse_doe.sh +p2p-next-03.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_proxy.sh 01 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-04.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_proxy.sh 02 detect_stopped_proxy.sh parse_proxy.sh +p2p-next-05.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-06.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-07.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-08.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-09.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh +p2p-next-10.grid.pub.ro 22 p2p /home/p2p/george/P2P-Next eth0 1000 12500 1000 12500 0 start_seeder.sh Data.bin.torrent detect_stopped_seeder.sh parse_seeder.sh \ No newline at end of file diff --git a/ControlScripts/_bw_limit.old.sh b/ControlScripts/_bw_limit.old.sh new file mode 100755 index 0000000..23466fe --- /dev/null +++ b/ControlScripts/_bw_limit.old.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# references: +# * http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/ +# * http://lartc.org/howto/lartc.adv-filter.html#LARTC.ADV-FILTER.U32 +# * http://www.topwebhosts.org/tools/traffic-control.php +# * http://atmail.com/kb/2009/throttling-bandwidth/ +# * http://www.docstoc.com/docs/20252486/Manual-tc-Packet-Filtering-and-netem +# +# This script needs to be run on the vmware machine, to control the traffic between the openvz containers + + +if test $# -ne 1; then + echo "Usage: $0 set|del" + exit 1 +fi + +case "$1" in + "set") + # delete all tc on venet0 + tc qdisc del dev venet0 root handle 1:0 + + # add root(outgress) qdisc on venet0 + tc qdisc add dev venet0 root handle 1:0 htb default 90 + + # class for coord <-> seeders + tc class add dev venet0 parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit + tc class add dev venet0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit #coord <-> seeder1/2/3 + + # class for coord <-> helpers + tc class add dev venet0 parent 1:0 classid 1:2 htb rate 4096kbit ceil 4096kbit + tc class add dev venet0 parent 1:2 classid 1:20 htb rate 4096kbit ceil 4096kbit #coord <-> helper1/2 + + # class for helper1 <-> seeders + tc class add dev venet0 parent 1:0 classid 1:3 htb rate 8192kbit ceil 8192kbit + tc class add dev venet0 parent 1:3 classid 1:30 htb rate 8192kbit ceil 8192kbit #helper1 <-> seeder1/2/3 + # class for helper2 <-> seeders + tc class add dev venet0 parent 1:0 classid 1:4 htb rate 8192kbit ceil 8192kbit + tc class add dev venet0 parent 1:4 classid 1:40 htb rate 8192kbit ceil 8192kbit #helper2 <-> seeder1/2/3 + + #tc qdisc add dev venet0 parent 1:10 handle 10: sfq perturb 10 + #tc qdisc add dev venet0 parent 1:20 handle 20: sfq perturb 10 + #tc qdisc add dev venet0 parent 1:30 handle 30: sfq perturb 10 + #tc qdisc add dev venet0 parent 1:40 handle 40: sfq perturb 10 + + # Filters for coord <-> seeders + #coord <-> seeder1 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.5.1/32 flowid 1:10 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.2.1/32 flowid 1:10 + #coord <-> seeder2 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.6.1/32 flowid 1:10 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.2.1/32 flowid 1:10 + #coord <-> seeder3 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.7.1/32 flowid 1:10 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.2.1/32 flowid 1:10 + + # Filters for coord <-> helpers + #coord <-> helper1 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.3.1/32 flowid 1:20 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.2.1/32 flowid 1:20 + #coord <-> helper2 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.4.1/32 flowid 1:20 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.2.1/32 flowid 1:20 + + # Filters for helpers <-> seeders + #helper1 <-> seeder1 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.5.1/32 flowid 1:30 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.3.1/32 flowid 1:30 + #helper1 <-> seeder2 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.6.1/32 flowid 1:30 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.3.1/32 flowid 1:30 + #helper1 <-> seeder3 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.7.1/32 flowid 1:30 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.3.1/32 flowid 1:30 + #helper2 <-> seeder1 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.5.1/32 flowid 1:40 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.4.1/32 flowid 1:40 + #helper2 <-> seeder2 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.6.1/32 flowid 1:40 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.4.1/32 flowid 1:40 + #helper2 <-> seeder3 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.7.1/32 flowid 1:40 + tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.4.1/32 flowid 1:40 + ;; + + "del") + tc qdisc del dev venet0 root handle 1: + ;; + + *) + echo "Usage: $0 set|del" + ;; +esac diff --git a/ControlScripts/_cssh_cluster.sh b/ControlScripts/_cssh_cluster.sh new file mode 100755 index 0000000..6a3459d --- /dev/null +++ b/ControlScripts/_cssh_cluster.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to connect to the sistems in the NCIT cluster +# The script +# * starts a cssh session +# * sets the size of the windows to 78x19 +# +# Script arguments: +# * remote user + +if [ ! $# -eq 1 ]; then + echo "usage: $0 user" + exit 1 +fi + +REMOTE_USER=$1 + +cssh --term-args "-geometry 78x19" $REMOTE_USER@p2p-next-01.grid.pub.ro $REMOTE_USER@p2p-next-03.grid.pub.ro $REMOTE_USER@p2p-next-04.grid.pub.ro $REMOTE_USER@p2p-next-05.grid.pub.ro $REMOTE_USER@p2p-next-06.grid.pub.ro $REMOTE_USER@p2p-next-07.grid.pub.ro $REMOTE_USER@p2p-next-08.grid.pub.ro $REMOTE_USER@p2p-next-09.grid.pub.ro $REMOTE_USER@p2p-next-10.grid.pub.ro diff --git a/ControlScripts/_cssh_vm.sh b/ControlScripts/_cssh_vm.sh new file mode 100755 index 0000000..94c0d96 --- /dev/null +++ b/ControlScripts/_cssh_vm.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to connect to the containers inside the VM +# The script +# * starts a cssh session +# * sets the size of the windows to 78x19 +# +# Script arguments: +# * remote user + +if [ ! $# -eq 1 ]; then + echo "usage: $0 user" + exit 1 +fi + +REMOTE_USER=$1 + +cssh --term-args "-geometry 78x19" $REMOTE_USER@tracker.local $REMOTE_USER@coordinator.local $REMOTE_USER@helper1.local $REMOTE_USER@helper2.local $REMOTE_USER@seeder1.local $REMOTE_USER@seeder2.local $REMOTE_USER@seeder3.local diff --git a/ControlScripts/_grep_search.sh b/ControlScripts/_grep_search.sh new file mode 100755 index 0000000..3b436d7 --- /dev/null +++ b/ControlScripts/_grep_search.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to run a grep command to search for a specific text in all Tribler sources +# The script +# * changes current working directory to proxyservice-m32 +# * runs a grep command to search for the specified text +# +# Usage: +# ./grep_search.sh "text" + + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +cd $TRIBLER_REL_PATH + +# -n: print line number +# -I: ignore binary files +# -r: recursive search +grep -nIr --exclude-dir="*\.svn*" --color=auto "$@" . + diff --git a/ControlScripts/_retrieve_cluster_logs.sh b/ControlScripts/_retrieve_cluster_logs.sh new file mode 100755 index 0000000..112554c --- /dev/null +++ b/ControlScripts/_retrieve_cluster_logs.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +REMOTE_PATH=/home/p2p/george/Logs + +scp p2p@p2p-next-01.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-03.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-04.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-05.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-06.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-07.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-08.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-09.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ +scp p2p@p2p-next-10.grid.pub.ro:$REMOTE_PATH/*.txt ../Results/ diff --git a/ControlScripts/_show_version.sh b/ControlScripts/_show_version.sh new file mode 100755 index 0000000..1586906 --- /dev/null +++ b/ControlScripts/_show_version.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to display the tribler version +# The script +# * changes current working directory to proxyservice-m32 +# * starts a tribler cmd-line instance to display the current version + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python Tribler/Tools/cmdlinedl.py -v diff --git a/ControlScripts/_sync_cluster.sh b/ControlScripts/_sync_cluster.sh new file mode 100755 index 0000000..73b1306 --- /dev/null +++ b/ControlScripts/_sync_cluster.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-01.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-03.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-04.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-05.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-06.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-07.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-08.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-09.grid.pub.ro:/home/p2p/george/P2P-Next +rsync -avP --del $P2P_NEXT_ABS_PATH p2p@p2p-next-10.grid.pub.ro:/home/p2p/george/P2P-Next + diff --git a/ControlScripts/_sync_cluster_old.sh b/ControlScripts/_sync_cluster_old.sh new file mode 100755 index 0000000..2cc1a90 --- /dev/null +++ b/ControlScripts/_sync_cluster_old.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +for port in 10122 10222 10322 10422; do + rsync -avP --del --rsh='ssh -p'$port P2P_NEXT_ABS_PATH p2p@p2p-next-01.grid.pub.ro:/home/p2p/P2P-Next +done diff --git a/ControlScripts/_sync_kth.sh b/ControlScripts/_sync_kth.sh new file mode 100755 index 0000000..2571ed8 --- /dev/null +++ b/ControlScripts/_sync_kth.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +rsync -avP --del $P2P_NEXT_ABS_PATH george@p2p-next.xen.ssvl.kth.se:/home/george/P2P-Next diff --git a/ControlScripts/_sync_swam.cs.pub.ro.sh b/ControlScripts/_sync_swam.cs.pub.ro.sh new file mode 100755 index 0000000..4faf1f0 --- /dev/null +++ b/ControlScripts/_sync_swam.cs.pub.ro.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +rsync -avP --del $P2P_NEXT_REL_PATH george@swarm.cs.pub.ro:/home/george/P2P-Next diff --git a/ControlScripts/_sync_vm.sh b/ControlScripts/_sync_vm.sh new file mode 100755 index 0000000..58c186b --- /dev/null +++ b/ControlScripts/_sync_vm.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +rsync -avP --del $P2P_NEXT_REL_PATH george@tracker.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@coordinator.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@helper1.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@helper2.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@seeder1.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@seeder2.local:/home/george/P2P-Next +rsync -avP --del $P2P_NEXT_REL_PATH george@seeder3.local:/home/george/P2P-Next diff --git a/ControlScripts/bw_limit.sh b/ControlScripts/bw_limit.sh new file mode 100755 index 0000000..0ec324e --- /dev/null +++ b/ControlScripts/bw_limit.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# references: +# * http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/ +# * http://lartc.org/howto/lartc.adv-filter.html#LARTC.ADV-FILTER.U32 +# * http://www.topwebhosts.org/tools/traffic-control.php +# * http://atmail.com/kb/2009/throttling-bandwidth/ +# * http://www.docstoc.com/docs/20252486/Manual-tc-Packet-Filtering-and-netem +# +# This script needs to be run on the cluser machies, to control traffic between them +# +# tc uses the following units when passed as a parameter. +# kbps: Kilobytes per second +# mbps: Megabytes per second +# kbit: Kilobits per second +# mbit: Megabits per second +# bps: Bytes per second +# Amounts of data can be specified in: +# kb or k: Kilobytes +# mb or m: Megabytes +# mbit: Megabits +# kbit: Kilobits +# To get the byte figure from bits, divide the number by 8 bit + +usage() { + # Print help messages + echo "Usage: $0 set interface down-bw down-burst up-bw up-burst" + echo " $0 del|reset|show interface" + echo "* set - set the limitations or show the status of the limitations" + echo " * interface - the network interface that will be limited" + echo " * down-bw - upload bandwidth, in Mbps" + echo " * down-burst - upload burst, in k" + echo " * up-bw - download bandwidth, in Mbps" + echo " * up-burst - download burst, in k" + echo "* del|reset|show - delete, reset the limitations or show the status of the limitations" + echo " * interface - the network interface that will be limited" +} + +if [ $# -lt 2 ]; then + usage + exit 1 +fi + +# Name of the traffic control command. +TC="sudo /sbin/tc" + +# The action requested (set, del, reset, show limitations) +ACTION=$1 # Action + +# The network interface we're planning on limiting bandwidth. +IF=$2 # Interface + +# Download limit (in mega bits) +#DNLD=8mbit # DOWNLOAD Limit +DNLD=${3}mbit # DOWNLOAD Limit + +# Upload limit (in mega bits) +#UPLD=8mbit # UPLOAD Limit +UPLD=${5}mbit # UPLOAD Limit + +# Burst limit (see http://lartc.org/howto/lartc.qdisc.classless.html#AEN691) +# Should be $DNLD/8*10ms and $UPLD/8*10ms (meaning 10k) http://mailman.ds9a.nl/pipermail/lartc/2001q4/001972.html ? +#DL_BURST=100k +#UP_BURST=100k +DL_BURST=${4}k +UP_BURST=${6}k + +start() { + # Add the egress limitation + # + # We'll use Hierarchical Token Bucket (HTB) to shape bandwidth. + # For detailed configuration options, please consult Linux man + # page. + $TC qdisc add dev $IF root handle 1: htb default 90 + $TC class add dev $IF parent 1: classid 1:1 htb rate $UPLD ceil $UPLD burst $UP_BURST + $TC filter add dev $IF protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1 + + # The first line creates the root qdisc, and next one creates a + # child qdisc that are to be used to shape download and upload bandwidth. + # + # The 3rd line creates the filter to match the interface. + # The 'dst' IP address is used to limit upload speed, to any host + + # Add the ingress limitation + $TC qdisc add dev $IF ingress handle ffff:0 + # Attach a filter to the ingress qdisc + $TC filter add dev $IF protocol ip parent ffff:0 prio 1 u32 match ip src 0.0.0.0/0 police rate $DNLD burst $DL_BURST action drop flowid 0:1 +} + +stop() { + # Stop the bandwidth shaping. + $TC qdisc del dev $IF root + $TC qdisc del dev $IF ingress handle ffff:0 +} + +restart() { + # Self-explanatory. + stop + sleep 1 + start +} + +show() { + # Display status of traffic control status. + $TC -s qdisc ls dev $IF +} + +case "$ACTION" in + "set") + echo -n "Setting bandwidth limitations: " + start + echo "done" + ;; + + "del") + echo -n "Deleting bandwidth limitations: " + stop + echo "done" + ;; + + "reset") + echo -n "Resetting bandwidth limitations: " + restart + echo "done" + ;; + + "show") + echo "Bandwidth limitations status for $IF:" + show + echo "" + ;; + + *) + usage + exit 1 + ;; +esac + +exit 0 + diff --git a/ControlScripts/detect_stopped_doe.sh b/ControlScripts/detect_stopped_doe.sh new file mode 100755 index 0000000..ba527f1 --- /dev/null +++ b/ControlScripts/detect_stopped_doe.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to detect when a doe client finished downloading a torrent +# The script +# * monitors a log file provided as an argument +# * as long as the doe is not finished the script keeps running +# * when the doe is finished it returns 0 +# * blocks the caller - the script exits only when the doe has completed the download +# +# Script arguments: +# * log file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 log-file" + exit 1 +fi + +LOG_FILE=$1 + +while true; do + if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then + exit 0 + fi + + # Don't do continuous polling + sleep 5 +done diff --git a/ControlScripts/detect_stopped_proxy.sh b/ControlScripts/detect_stopped_proxy.sh new file mode 100755 index 0000000..435aabd --- /dev/null +++ b/ControlScripts/detect_stopped_proxy.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to detect when a proxy client finished helping with a torrent +# The script +# * immediately returns 0, as the end of a transfer is decided by the doe +# +# Script arguments: +# * log file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 log-file" + exit 1 +fi + +LOG_FILE=$1 + +exit 0 diff --git a/ControlScripts/detect_stopped_regular.sh b/ControlScripts/detect_stopped_regular.sh new file mode 100755 index 0000000..8554bf5 --- /dev/null +++ b/ControlScripts/detect_stopped_regular.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to detect when a regular client finished downloading a torrent +# The script +# * monitors a log file provided as an argument +# * as long as the doe is not finished the script keeps running +# * when the doe is finished it returns 0 +# * blocks the caller - the script exits only when the doe has completed the download +# +# Script arguments: +# * log file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 log-file" + exit 1 +fi + +LOG_FILE=$1 + +while true; do + if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then + exit 0 + fi + + # Don't do continuous polling + sleep 5 +done diff --git a/ControlScripts/detect_stopped_seeder.sh b/ControlScripts/detect_stopped_seeder.sh new file mode 100755 index 0000000..916e942 --- /dev/null +++ b/ControlScripts/detect_stopped_seeder.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to detect when a seeder client finished uploading a torrent +# The script +# * monitors a log file provided as an argument +# * as long as the seeder did not finish the hashchecking, the script keeps running +# * when the seeder finished hashchecking, the script returns 0 +# * blocks the caller - the script exits only when the seeder has completed hashchecking +# +# Script arguments: +# * log file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 log-file" + exit 1 +fi + +LOG_FILE=$1 + +while true; do + if cat $LOG_FILE | grep DLSTATUS_SEEDING &> /dev/null; then + exit 0 + fi + + # Don't do continuous polling + sleep 5 +done diff --git a/ControlScripts/parse_doe.sh b/ControlScripts/parse_doe.sh new file mode 100755 index 0000000..e9de4bd --- /dev/null +++ b/ControlScripts/parse_doe.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to parse the log file generated by a doe client and to generate a data file +# The script +# * TODO +# +# Script arguments: +# * a folder where the log and data files are stored +# * the name of a log file in that folder + + +if [ ! $# -eq 2 ]; then + echo "usage: $0 log-folder log-file" + exit 1 +fi + +LOG_FOLDER=$1 +LOG_FILE=$2 +DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data + +# Check if the log folder exists +if [ ! -d $LOG_FOLDER ]; then + echo "Error: The folder $LOG_FOLDER does not exist." + exit 1 +fi + +# Check if the log file exists +if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist." + exit 1 +fi + +# Check if the log file is a regular file +if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file." + exit 1 +fi + +# Write the header to the data file +echo "time percent upspeed dlspeed" > $DATA_FILE + +# Clean and parse the log file +cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE + +exit 0 diff --git a/ControlScripts/parse_proxy.sh b/ControlScripts/parse_proxy.sh new file mode 100755 index 0000000..4b91a87 --- /dev/null +++ b/ControlScripts/parse_proxy.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to parse the log file generated by a proxy client and to generate a data file +# The script +# * TODO +# +# Script arguments: +# * a folder where the log and data files are stored +# * the name of a log file in that folder + + +if [ ! $# -eq 2 ]; then + echo "usage: $0 log-folder log-file" + exit 1 +fi + +LOG_FOLDER=$1 +LOG_FILE=$2 +DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data + +# Check if the log folder exists +if [ ! -d $LOG_FOLDER ]; then + echo "Error: The folder $LOG_FOLDER does not exist." + exit 1 +fi + +# Check if the log file exists +if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist." + exit 1 +fi + +# Check if the log file is a regular file +if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file." + exit 1 +fi + +# Write the header to the data file +echo "time percent upspeed dlspeed" > $DATA_FILE + +# Clean and parse the log file +cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE + +exit 0 diff --git a/ControlScripts/parse_regular.sh b/ControlScripts/parse_regular.sh new file mode 100755 index 0000000..32b476d --- /dev/null +++ b/ControlScripts/parse_regular.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to parse the log file generated by a regular (leecher) client and to generate a data file +# The script +# * TODO +# +# Script arguments: +# * a folder where the log and data files are stored +# * the name of a log file in that folder + + +if [ ! $# -eq 2 ]; then + echo "usage: $0 log-folder log-file" + exit 1 +fi + +LOG_FOLDER=$1 +LOG_FILE=$2 +DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data + +# Check if the log folder exists +if [ ! -d $LOG_FOLDER ]; then + echo "Error: The folder $LOG_FOLDER does not exist." + exit 1 +fi + +# Check if the log file exists +if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist." + exit 1 +fi + +# Check if the log file is a regular file +if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file." + exit 1 +fi + +# Write the header to the data file +echo "time percent upspeed dlspeed" > $DATA_FILE + +# Clean and parse the log file +cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE + +exit 0 diff --git a/ControlScripts/parse_seeder.sh b/ControlScripts/parse_seeder.sh new file mode 100755 index 0000000..a695435 --- /dev/null +++ b/ControlScripts/parse_seeder.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to parse the log file generated by a seeder client and to generate a data file +# The script +# * TODO +# +# Script arguments: +# * a folder where the log and data files are stored +# * the name of a log file in that folder + + +if [ ! $# -eq 2 ]; then + echo "usage: $0 log-folder log-file" + exit 1 +fi + +LOG_FOLDER=$1 +LOG_FILE=$2 +DATA_FILE=$LOG_FOLDER/${LOG_FILE}.data + +# Check if the log folder exists +if [ ! -d $LOG_FOLDER ]; then + echo "Error: The folder $LOG_FOLDER does not exist." + exit 1 +fi + +# Check if the log file exists +if [ ! -e $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE does not exist." + exit 1 +fi + +# Check if the log file is a regular file +if [ ! -f $LOG_FOLDER/$LOG_FILE ]; then + echo "Error: The log file $LOG_FOLDER/$LOG_FILE is not a regular file." + exit 1 +fi + +# Write the header to the data file +echo "time percent upspeed dlspeed" > $DATA_FILE + +# Clean and parse the log file +cat -b $LOG_FOLDER/$LOG_FILE | grep DLSTATUS | grep -v HASHCHECKING | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 2,5,8,10 | sed -e s/'%'/''/g -e s/"KB\/s"//g >> $DATA_FILE + +exit 0 diff --git a/ControlScripts/run_campaign.sh b/ControlScripts/run_campaign.sh new file mode 100755 index 0000000..817136c --- /dev/null +++ b/ControlScripts/run_campaign.sh @@ -0,0 +1,123 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to run a test campaign +# The script +# * Generates a campaign ID +# * Reads the campaign setup file +# * Runs each of the scenarios specified in the campaign setup file +# * Generates the graphs +# +# Script arguments: +# * a file describing the campaign. The file must be located in SetupFiles + +if [ ! $# -eq 1 ]; then + echo "usage: $0 campaign-file" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +CAMPAIGN_FILE=$1 + +# Generate unique id for the campaign +CAMPAIGN_ID=$(date +%Y.%m.%d-%H.%M.%S) +CAMPAIGN_NAME=${CAMPAIGN_FILE%\.*}-$CAMPAIGN_ID # Remove the last extension from the campaign file name +CAMPAIGN_RESULTS_FOLDER=$RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME +ERR_LOG=$CAMPAIGN_RESULTS_FOLDER/err.log + + +# Check if the campaign file exists +if [ ! -e $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE ]; then + echo "Error: The campaign file $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE does not exist." + exit 1 +fi + +# Check if the campaign file is a regular file +if [ ! -f $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE ]; then + echo "Error: The campaign file $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE is not a regular file." + exit 1 +fi + + + +# Create the results folder for the campaign +# Check if the campaign results folder already exists +if [ -d $CAMPAIGN_RESULTS_FOLDER ]; then + echo "Error: The folder $CAMPAIGN_RESULTS_FOLDER already exist." + exit 1 +fi + +echo -n "Creating campaign results folder $CAMPAIGN_RESULTS_FOLDER..." +mkdir $CAMPAIGN_RESULTS_FOLDER +echo "Done" + + + +# Parse the campaign file +echo -n "Parsing campaign file... " +TMP_FILE=/tmp/proxy.camp.$RANDOM +rm -f $TMP_FILE +cat $CONFIG_FILES_REL_PATH/$CAMPAIGN_FILE | grep -v ^# | grep -v ^$ | tr -s '\t' > $TMP_FILE +echo "done" +>$ERR_LOG + + +# Parsing each scenario and starting the tests +echo "Running each scenario..." +while IFS=$'\t' read SCENARIO_FILE PLOT_SCRIPT; do + echo " * $SCENARIO_FILE" + + #store the current working directory + CWD=$(pwd) + + # Check if the scenario file exists + if [ ! -e $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then + echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE does not exist." + exit 1 + fi + + # Check if the scenario file is a regular file + if [ ! -f $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then + echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE is not a regular file." + exit 1 + fi + + # Run scenario + ACTION=run + ./run_scenario.sh $ACTION $SCENARIO_FILE $CAMPAIGN_NAME + + # Plot graph + echo -n "Plotting graph..." + # PLOT_SCRIPT receives two arguments: + # * the path to the folder where the data files are stored, and where the graph will be saved + # * the name (with the id) of the campaign + SCENARIO_NAME=${SCENARIO_FILE%\.*} + Rscript $CONFIG_FILES_REL_PATH/$PLOT_SCRIPT --args $CAMPAIGN_RESULTS_FOLDER/$SCENARIO_NAME $CAMPAIGN_NAME &>> $ERR_LOG + echo "done" + + # reutrn to the initial current working directory + cd $CWD + + echo "" +done < $TMP_FILE +echo "done" +rm -f $TMP_FILE +unset IFS + + + +# Creating the HTML file in the results folder +echo -n "Copying the HTML file to results folder..." +cp $CONFIG_FILES_REL_PATH/${CAMPAIGN_FILE%\.*}.html $CAMPAIGN_RESULTS_FOLDER/index.html &>> $ERR_LOG +echo "done" + + + +# Publishing results to swarm +echo -n "Publishing results to swarm.cs.pub.ro..." +rsync -avP --del --exclude OldResults ${RESULTS_FOLDER_REL_PATH}/ george@swarm.cs.pub.ro:public_html/p2p-next/proxy-service-tests/ &>> $ERR_LOG +echo "done" diff --git a/ControlScripts/run_scenario.sh b/ControlScripts/run_scenario.sh new file mode 100755 index 0000000..507135a --- /dev/null +++ b/ControlScripts/run_scenario.sh @@ -0,0 +1,240 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to run a test scenario +# The script +# * Reads the scenario setup file +# * Cleans-up the environment on the target machines +# * Runs the clients +# * Retrieves the logs +# * Cleans-up the environment on the target machines +# * Parses the log files +# +# Script arguments: +# * an action that can be setup, start, wait, clean, parse, run +# ** setup - setup the nodes on which the tests will be run +# ** start - start the clients on the remote nodes +# ** wait - wait for all the clients to complete their task +# ** clean - clean the nodes on whitch the tests were run +# ** parse - parse the resulted client log files +# ** run - run a complete campaign (setup, start, wait, clean, parse) +# * a file describing the scenario. The file must be located in SetupFiles +# * a campaign name (see run_campaign.sh for details). Example: campaign01.txt-2010.07.14-21.10.45 + +usage() { + # Print help messages + echo "usage: $0 action scenario-file campaign-name" +} + +if [ ! $# -eq 3 ]; then + usage + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +ACTION=$1 +SCENARIO_FILE=$2 +CAMPAIGN_NAME=$3 + +SCENARIO_NAME=${SCENARIO_FILE%\.*} +SCENARIO_RESULTS_FOLDER=$RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME/$SCENARIO_NAME +ERR_LOG=$SCENARIO_RESULTS_FOLDER/err.log + +# Check if the scenario file exists +if [ ! -e $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then + echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE does not exist." + exit 1 +fi + +# Check if the scenario file is a regular file +if [ ! -f $CONFIG_FILES_REL_PATH/$SCENARIO_FILE ]; then + echo "Error: The scenario file $CONFIG_FILES_REL_PATH/$SCENARIO_FILE is not a regular file." + exit 1 +fi + +# Check if the campain results folder exists +if [ ! -d $RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME ]; then + echo "Error: The results folder $RESULTS_FOLDER_REL_PATH/$CAMPAIGN_NAME does not exist" + exit 1 +fi + + + +# Create a scenario folder inside the campaign results folder +# Check if the scenario results folder already exists +if [ -d $SCENARIO_RESULTS_FOLDER ]; then + echo "Error: The folder $SCENARIO_RESULTS_FOLDER already exist." + exit 1 +fi + +echo -n " ** Creating scenario results folder $SCENARIO_RESULTS_FOLDER..." +mkdir $SCENARIO_RESULTS_FOLDER +echo "done" + + + +# Parse the scenario file +TMP_FILE=/tmp/proxy.scn.$RANDOM +rm -f $TMP_FILE +cat $CONFIG_FILES_REL_PATH/$SCENARIO_FILE | grep -v ^# | grep -v ^$ | tr -s '\t' > $TMP_FILE +> $ERR_LOG + + + +# Setup the nodes +scenario_setup() { + echo "---------------------- scenario_setup_" >> $ERR_LOG + while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do + echo " ** Setting-up $SERVER" + + # Clean-up the host by using rsync + if ! rsync -avP --del --rsh='ssh -p'$PORT $P2P_NEXT_REL_PATH ${USER}@${SERVER}:${REMOTE_PATH} &>> $ERR_LOG; then + echo "Error: rsync error on $SERVER" + exit 1 + fi + + # run tc script to set the bandwidth limitations + # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command + if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$TC_SCRIPT set $REMOTE_IF $DL_BW $DL_BURST $UL_BW $UL_BURST" &>> $ERR_LOG; then + echo "Error: tc error setting limitations on $SERVER" + exit 1 + fi + done < $TMP_FILE + unset IFS + echo "---------------------- _scenario_setup" >> $ERR_LOG +} + + + +# Start the clients +# The setup stage is separated to decrease the time required to start the clients +scenario_start() { + echo "---------------------- scenario_start_" >> $ERR_LOG + while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do + echo " ** Starting client on $SERVER" + + # Start the scripts on the remote clients + # -f is used to put ssh in background after the connection is set and to redirect the ssh stdin from /dev/null + if ! ssh -f -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; sleep $START_DELAY; ./$START_CMD &> $REMOTE_PATH/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/${SERVER}.log" &>> $ERR_LOG; then + echo "Error: error running $START_CMD on $SERVER" + break + fi + done < $TMP_FILE + unset IFS + echo "---------------------- _scenario_start" >> $ERR_LOG +} + + + +# Wait until all the clients are finished +scenario_wait() { + echo "---------------------- scenario_wait_" >> $ERR_LOG + while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do + echo " ** Waiting for client on $SERVER to finish" + + # Start the scripts on the remote clients + # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command + # The ssh call is blocking + if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$DETECT_STOP_CMD $REMOTE_PATH/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/${SERVER}.log" &>> $ERR_LOG; then + echo "Error: error while waiting for client on $SERVER to finish" + break + fi + done < $TMP_FILE + unset IFS + echo "---------------------- _scenario_wait" >> $ERR_LOG +} + + + +# Clean the nodes and retrieve the log files +scenario_clean() { + echo "---------------------- scenario_clean_" >> $ERR_LOG + while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do + echo " ** Cleaning-up $SERVER" + + # stopping the client on the server + # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command + if ! ssh -n -p $PORT ${USER}@${SERVER} "killall python2.6" &>> $ERR_LOG; then + echo "Error: error stopping client on $SERVER" + fi + # wait for the remote client to finish completly + sleep 2 + + # run tc script to delete the bandwidth limitations + # -n is used to redirect the ssh stdin from /dev/null, in order to keep the stdin in place for the read command + if ! ssh -n -p $PORT ${USER}@${SERVER} "cd $REMOTE_PATH/P2P-Testing-Infrastructure/ControlScripts; ./$TC_SCRIPT del $REMOTE_IF" &>> $ERR_LOG; then + echo "Error: tc error deleting limitations on $SERVER" + fi + + # Retrieve log files + scp -P $PORT ${USER}@${SERVER}:${REMOTE_PATH}/P2P-Testing-Infrastructure/ClientWorkingFolders/TmpLogs/* $SCENARIO_RESULTS_FOLDER &>> $ERR_LOG + + # Clean-up the host by using rsync + if ! rsync -avP --del --rsh='ssh -p'$PORT $P2P_NEXT_REL_PATH ${USER}@${SERVER}:${REMOTE_PATH} &>> $ERR_LOG; then + echo "Error: rsync error on $SERVER" + fi + done < $TMP_FILE + unset IFS + echo "---------------------- _scenario_clean" >> $ERR_LOG +} + + + +# Parse the log files +scenario_parse() { + echo "---------------------- scenario_parse_" >> $ERR_LOG + while IFS=$'\t' read SERVER PORT USER REMOTE_PATH REMOTE_IF DL_BW DL_BURST UL_BW UL_BURST START_DELAY START_CMD DETECT_STOP_CMD LOG_PARSER; do + echo " ** Parsing log files from $SERVER" + + if ! ./$LOG_PARSER $SCENARIO_RESULTS_FOLDER ${SERVER}.log; then + echo "Error parsing file $SCENARIO_RESULTS_FOLDER/${SERVER}.log" + exit 1 + fi + done < $TMP_FILE + unset IFS + echo "---------------------- _scenario_parse" >> $ERR_LOG +} + + +#setup, start, wait, clean, parse +case "$ACTION" in + "setup") + scenario_setup + ;; + + "start") + scenario_start + ;; + + "wait") + scenario_wait + ;; + + "clean") + scenario_clean + ;; + + "parse") + scenario_parse + ;; + + "run") + scenario_setup + scenario_start + scenario_wait + scenario_clean + scenario_parse + ;; + + *) + usage + exit 1 + ;; +esac + +rm -f $TMP_FILE +exit 0 diff --git a/ControlScripts/start_doe.sh b/ControlScripts/start_doe.sh new file mode 100755 index 0000000..61cc7fd --- /dev/null +++ b/ControlScripts/start_doe.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a doe instance of tribler cmd-line +# The script +# * changes current working directory to proxyservice-m32 +# * starts a tribler cmd-line instance with the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder +# * at the end deletes the downloaded data +# +# Script arguments: +# * .torrent file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 torrent-file" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +TORRENT_FILE=$1 + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python2.6 Tribler/Tools/proxy-cmdline.py --proxymode private --test-mode coord --state-dir $WORKING_FOLDER_REL_PATH/Doe/statedir --output-dir $WORKING_FOLDER_REL_PATH/Doe/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE + +rm -rf $WORKING_FOLDER_REL_PATH/Doe/* diff --git a/ControlScripts/start_proxy.sh b/ControlScripts/start_proxy.sh new file mode 100755 index 0000000..93cb40b --- /dev/null +++ b/ControlScripts/start_proxy.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a proxy instance of tribler for the testing topology +# The script +# * changes current working directory to proxyservice-m32 +# * starts a tribler cmd-line instance with no target .torrent +# * at the end deletes the state directory +# +# Script arguments: +# * proxy number [1-4] + +if [ ! $# -eq 1 ]; then + echo "usage: $0 proxy-no" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +PROXY_NO=$1 + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python2.6 Tribler/Tools/proxy-cmdline.py --proxymode off --proxyservice on --port 25123 --test-mode helper --state-dir $WORKING_FOLDER_REL_PATH/Proxy$PROXY_NO/statedir --no-download + +rm -rf $WORKING_FOLDER_REL_PATH/Proxy$PROXY_NO/* diff --git a/ControlScripts/start_regular.sh b/ControlScripts/start_regular.sh new file mode 100755 index 0000000..c92dc74 --- /dev/null +++ b/ControlScripts/start_regular.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a regular (non doe, non proxy) instance of tribler cmd-line +# The script +# * changes current working directory to proxyservice-m32 +# * starts a tribler cmd-line instance with the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder +# * at the end deletes the downloaded data +# +# Script arguments: +# * .torrent file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 torrent-file" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +TORRENT_FILE=$1 + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python2.6 Tribler/Tools/proxy-cmdline.py --proxymode off --test-mode off --port 25124 --state-dir $WORKING_FOLDER_REL_PATH/Regular/statedir --output-dir $WORKING_FOLDER_REL_PATH/Regular/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE + +rm -rf $WORKING_FOLDER_REL_PATH/Regular/* diff --git a/ControlScripts/start_seeder.sh b/ControlScripts/start_seeder.sh new file mode 100755 index 0000000..b221760 --- /dev/null +++ b/ControlScripts/start_seeder.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a seeder instance for the testing topology +# The script +# * changes current working directory to proxyservice-m32 +# * starts a command line BT client seeding the supplied .torrent file. The .torrent file must be located in the TorrentsAndData folder +# +# Script arguments: +# * .torrent file + +if [ ! $# -eq 1 ]; then + echo "usage: $0 torrent-file" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +# Read arguments +TORRENT_FILE=$1 + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python2.6 Tribler/Tools/proxy-cmdline.py --port 25125 --state-dir $WORKING_FOLDER_REL_PATH/Seeder/statedir --output-dir $WORKING_FOLDER_REL_PATH/TorrentsAndData/ $WORKING_FOLDER_REL_PATH/TorrentsAndData/$TORRENT_FILE + +rm -rf $WORKING_FOLDER_REL_PATH/Seeder/* diff --git a/ControlScripts/start_tracker.sh b/ControlScripts/start_tracker.sh new file mode 100755 index 0000000..fab5dad --- /dev/null +++ b/ControlScripts/start_tracker.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a tracker on the localhost +# The script +# * changes current working directory to BitTornado-CVS +# * starts a tracker listening on port 6969 + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +export PYTHONPATH=$PYTHONPATH:. + +cd $BITTORNADO_REL_PATH + +rm -rf ../tracker.info + +python2.6 bttrack.py --port 6969 --dfile ../tracker.info diff --git a/ControlScripts/start_tribler.sh b/ControlScripts/start_tribler.sh new file mode 100755 index 0000000..e3d8ea2 --- /dev/null +++ b/ControlScripts/start_tribler.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Copyright: George Milescu 2010 - george.milescu@gmail.com +# +# Bash script used to start a normal GUI tribler instance +# The script +# * changes current working directory to proxymode +# * starts a GUI tribler instance + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +export PYTHONPATH=$PYTHONPATH:. + +cd $TRIBLER_REL_PATH + +python2.6 Tribler/Main/tribler.py