From effae60dec583781491db0aba2f788f16651f4b1 Mon Sep 17 00:00:00 2001 From: George Milescu Date: Wed, 28 Jul 2010 20:36:26 +0200 Subject: [PATCH] Added testing infrastructure files Signed-off-by: George Milescu --- ClientWorkingFolders/Proxy01/statedir/ec.pem | 5 + .../Proxy01/statedir/ecpub.pem | 4 + .../Proxy01/statedir/friendship-msgs.pickle | 2 + .../Proxy01/statedir/sessconfig.pickle | 339 ++++++++++++++++++ .../Proxy01/statedir/sqlite/tribler.sdb | Bin 0 -> 82944 bytes .../sqlite/tribler_friendship_stats.sdb | Bin 0 -> 4096 bytes .../statedir/sqlite/tribler_seedingstats.sdb | Bin 0 -> 5120 bytes .../sqlite/tribler_videoplayback_stats.sdb | Bin 0 -> 5120 bytes .../Proxy01/statedir01.tar.gz | Bin 0 -> 9224 bytes ClientWorkingFolders/Proxy02/statedir/ec.pem | 5 + .../Proxy02/statedir/ecpub.pem | 4 + .../Proxy02/statedir/friendship-msgs.pickle | 2 + .../Proxy02/statedir/sessconfig.pickle | 339 ++++++++++++++++++ .../Proxy02/statedir/sqlite/tribler.sdb | Bin 0 -> 82944 bytes .../sqlite/tribler_friendship_stats.sdb | Bin 0 -> 4096 bytes .../statedir/sqlite/tribler_seedingstats.sdb | Bin 0 -> 5120 bytes .../sqlite/tribler_videoplayback_stats.sdb | Bin 0 -> 5120 bytes .../Proxy02/statedir02.tar.gz | Bin 0 -> 9228 bytes ClientWorkingFolders/Proxy03/statedir/ec.pem | 5 + .../Proxy03/statedir/ecpub.pem | 4 + .../Proxy03/statedir/friendship-msgs.pickle | 2 + .../Proxy03/statedir/sessconfig.pickle | 339 ++++++++++++++++++ .../Proxy03/statedir/sqlite/tribler.sdb | Bin 0 -> 82944 bytes .../sqlite/tribler_friendship_stats.sdb | Bin 0 -> 4096 bytes .../statedir/sqlite/tribler_seedingstats.sdb | Bin 0 -> 5120 bytes .../sqlite/tribler_videoplayback_stats.sdb | Bin 0 -> 5120 bytes .../Proxy03/statedir03.tar.gz | Bin 0 -> 9221 bytes ClientWorkingFolders/Proxy04/statedir/ec.pem | 5 + .../Proxy04/statedir/ecpub.pem | 4 + .../Proxy04/statedir/friendship-msgs.pickle | 2 + .../Proxy04/statedir/sessconfig.pickle | 339 ++++++++++++++++++ .../Proxy04/statedir/sqlite/tribler.sdb | Bin 0 -> 82944 bytes .../sqlite/tribler_friendship_stats.sdb | Bin 0 -> 4096 bytes .../statedir/sqlite/tribler_seedingstats.sdb | Bin 0 -> 5120 bytes .../sqlite/tribler_videoplayback_stats.sdb | Bin 0 -> 5120 bytes .../Proxy04/statedir04.tar.gz | Bin 0 -> 9223 bytes ConfigFiles/campaign01.html | 211 +++++++++++ ConfigFiles/campaign01.txt | 14 + ConfigFiles/globalconfig.txt | 32 ++ ConfigFiles/scenario01.r | 85 +++++ ConfigFiles/scenario01.txt | 15 + ConfigFiles/scenario02.r | 93 +++++ ConfigFiles/scenario02.txt | 19 + ConfigFiles/scenario03.r | 65 ++++ ConfigFiles/scenario03.txt | 15 + ConfigFiles/scenario04.r | 73 ++++ ConfigFiles/scenario04.txt | 18 + ConfigFiles/scenario05.r | 93 +++++ ConfigFiles/scenario05.txt | 19 + ConfigFiles/scenario06.r | 73 ++++ ConfigFiles/scenario06.txt | 18 + ConfigFiles/scenario07.r | 73 ++++ ConfigFiles/scenario07.txt | 18 + ConfigFiles/scenario08.r | 93 +++++ ConfigFiles/scenario08.txt | 19 + ConfigFiles/scenario09.r | 73 ++++ ConfigFiles/scenario09.txt | 18 + ControlScripts/_bw_limit.old.sh | 95 +++++ ControlScripts/_cssh_cluster.sh | 20 ++ ControlScripts/_cssh_vm.sh | 20 ++ ControlScripts/_grep_search.sh | 23 ++ ControlScripts/_retrieve_cluster_logs.sh | 16 + ControlScripts/_show_version.sh | 17 + ControlScripts/_sync_cluster.sh | 18 + ControlScripts/_sync_cluster_old.sh | 11 + ControlScripts/_sync_kth.sh | 9 + ControlScripts/_sync_swam.cs.pub.ro.sh | 9 + ControlScripts/_sync_vm.sh | 15 + ControlScripts/bw_limit.sh | 142 ++++++++ ControlScripts/detect_stopped_doe.sh | 29 ++ ControlScripts/detect_stopped_proxy.sh | 19 + ControlScripts/detect_stopped_regular.sh | 29 ++ ControlScripts/detect_stopped_seeder.sh | 29 ++ ControlScripts/parse_doe.sh | 47 +++ ControlScripts/parse_proxy.sh | 47 +++ ControlScripts/parse_regular.sh | 47 +++ ControlScripts/parse_seeder.sh | 47 +++ ControlScripts/run_campaign.sh | 123 +++++++ ControlScripts/run_scenario.sh | 240 +++++++++++++ ControlScripts/start_doe.sh | 31 ++ ControlScripts/start_proxy.sh | 31 ++ ControlScripts/start_regular.sh | 31 ++ ControlScripts/start_seeder.sh | 30 ++ ControlScripts/start_tracker.sh | 19 + ControlScripts/start_tribler.sh | 17 + 85 files changed, 3748 insertions(+) create mode 100644 ClientWorkingFolders/Proxy01/statedir/ec.pem create mode 100644 ClientWorkingFolders/Proxy01/statedir/ecpub.pem create mode 100644 ClientWorkingFolders/Proxy01/statedir/friendship-msgs.pickle create mode 100644 ClientWorkingFolders/Proxy01/statedir/sessconfig.pickle create mode 100644 ClientWorkingFolders/Proxy01/statedir/sqlite/tribler.sdb create mode 100644 ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_friendship_stats.sdb create mode 100644 ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb create mode 100644 ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_videoplayback_stats.sdb create mode 100644 ClientWorkingFolders/Proxy01/statedir01.tar.gz create mode 100644 ClientWorkingFolders/Proxy02/statedir/ec.pem create mode 100644 ClientWorkingFolders/Proxy02/statedir/ecpub.pem create mode 100644 ClientWorkingFolders/Proxy02/statedir/friendship-msgs.pickle create mode 100644 ClientWorkingFolders/Proxy02/statedir/sessconfig.pickle create mode 100644 ClientWorkingFolders/Proxy02/statedir/sqlite/tribler.sdb create mode 100644 ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_friendship_stats.sdb create mode 100644 ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb create mode 100644 ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_videoplayback_stats.sdb create mode 100644 ClientWorkingFolders/Proxy02/statedir02.tar.gz create mode 100644 ClientWorkingFolders/Proxy03/statedir/ec.pem create mode 100644 ClientWorkingFolders/Proxy03/statedir/ecpub.pem create mode 100644 ClientWorkingFolders/Proxy03/statedir/friendship-msgs.pickle create mode 100644 ClientWorkingFolders/Proxy03/statedir/sessconfig.pickle create mode 100644 ClientWorkingFolders/Proxy03/statedir/sqlite/tribler.sdb create mode 100644 ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_friendship_stats.sdb create mode 100644 ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb create mode 100644 ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_videoplayback_stats.sdb create mode 100644 ClientWorkingFolders/Proxy03/statedir03.tar.gz create mode 100644 ClientWorkingFolders/Proxy04/statedir/ec.pem create mode 100644 ClientWorkingFolders/Proxy04/statedir/ecpub.pem create mode 100644 ClientWorkingFolders/Proxy04/statedir/friendship-msgs.pickle create mode 100644 ClientWorkingFolders/Proxy04/statedir/sessconfig.pickle create mode 100644 ClientWorkingFolders/Proxy04/statedir/sqlite/tribler.sdb create mode 100644 ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_friendship_stats.sdb create mode 100644 ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb create mode 100644 ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_videoplayback_stats.sdb create mode 100644 ClientWorkingFolders/Proxy04/statedir04.tar.gz create mode 100644 ConfigFiles/campaign01.html create mode 100644 ConfigFiles/campaign01.txt create mode 100644 ConfigFiles/globalconfig.txt create mode 100644 ConfigFiles/scenario01.r create mode 100644 ConfigFiles/scenario01.txt create mode 100644 ConfigFiles/scenario02.r create mode 100644 ConfigFiles/scenario02.txt create mode 100644 ConfigFiles/scenario03.r create mode 100644 ConfigFiles/scenario03.txt create mode 100644 ConfigFiles/scenario04.r create mode 100644 ConfigFiles/scenario04.txt create mode 100644 ConfigFiles/scenario05.r create mode 100644 ConfigFiles/scenario05.txt create mode 100644 ConfigFiles/scenario06.r create mode 100644 ConfigFiles/scenario06.txt create mode 100644 ConfigFiles/scenario07.r create mode 100644 ConfigFiles/scenario07.txt create mode 100644 ConfigFiles/scenario08.r create mode 100644 ConfigFiles/scenario08.txt create mode 100644 ConfigFiles/scenario09.r create mode 100644 ConfigFiles/scenario09.txt create mode 100755 ControlScripts/_bw_limit.old.sh create mode 100755 ControlScripts/_cssh_cluster.sh create mode 100755 ControlScripts/_cssh_vm.sh create mode 100755 ControlScripts/_grep_search.sh create mode 100755 ControlScripts/_retrieve_cluster_logs.sh create mode 100755 ControlScripts/_show_version.sh create mode 100755 ControlScripts/_sync_cluster.sh create mode 100755 ControlScripts/_sync_cluster_old.sh create mode 100755 ControlScripts/_sync_kth.sh create mode 100755 ControlScripts/_sync_swam.cs.pub.ro.sh create mode 100755 ControlScripts/_sync_vm.sh create mode 100755 ControlScripts/bw_limit.sh create mode 100755 ControlScripts/detect_stopped_doe.sh create mode 100755 ControlScripts/detect_stopped_proxy.sh create mode 100755 ControlScripts/detect_stopped_regular.sh create mode 100755 ControlScripts/detect_stopped_seeder.sh create mode 100755 ControlScripts/parse_doe.sh create mode 100755 ControlScripts/parse_proxy.sh create mode 100755 ControlScripts/parse_regular.sh create mode 100755 ControlScripts/parse_seeder.sh create mode 100755 ControlScripts/run_campaign.sh create mode 100755 ControlScripts/run_scenario.sh create mode 100755 ControlScripts/start_doe.sh create mode 100755 ControlScripts/start_proxy.sh create mode 100755 ControlScripts/start_regular.sh create mode 100755 ControlScripts/start_seeder.sh create mode 100755 ControlScripts/start_tracker.sh create mode 100755 ControlScripts/start_tribler.sh 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 0000000000000000000000000000000000000000..834decf55728298028942e226b3ce61f694e24d7 GIT binary patch literal 82944 zcmeHQZEPdQdEVtpq)v|Q*k_r!DCgVD*^$=No%kt=w$C<2ks`$p@mnI}RHn$KxJNFR z+Fg>Ok|LmOxJCN$Bj~RNNQ)qC&;mujfd1)^qA1#;DAEQAP^3VM0tJfHX;GkQkRNq_ zbY{Por0%4%{BhLmotC>Z@4W9j&&=%Zyz|aXE|XwHnyhm?TM2=h;v;9L$Hwd~hQXCgm`4d7dQcw#W}iGM$YjgV_=p50_Rz zXs^=h(j+O;$KpKYn6=tpyM|*-yG9=iM=en1`<1T9N%#9QuYH&NYX!K^3>OKT{rYwM ztt*lqp^8W!a{NI3oiXX6hDzF071DjCMuLNBgOoIH)Q(K;-RvD9XG zk2Dhl1$I)To&?-4cW9aijP~n1$F7j-oybwc3~saEyotZXN|@-W^ec-A7d>1;Mr8#V zYrsGZ)CiG-SyT{%5jC#gZgG_wEkW7tvNX?BVMMp12LlX21Sqsv5S%t&1*ew+;N*3K z)9u^fw6p|H&)op0&)C7~iKoG7{t7tFSsw>y(CE>D5I_iALImbvo>BY1ge8x%j1a&u z`2L?GzJw7!CjOrIGvc?1UnK?v3j)xA5I_igFa(~Mo5AdMPHfQp4m{1o+#JD)^vpi|ViNnVA{v=FJetc6eG4=$d}@1OX)k zyETTBPS-4e@>Y?l(Ojs-bOh;&lrEpa0jV4%hentdEx`7V6aRyO|L8ynAOxl#fyZ!S z@yQ;|3&5n}gWvx+@ly=^M+ZUxA#e#0c#K%YmG+M#``;xfaFj)az$pm8_HV_C7*@nz z#DCNBs^!-#e~x8OAwFyH%qM!JL>WS9!SN!2rlnyeX$VD$PzKK6Pz*SfL6>>zV;Xb% zM32LL0tPGJdc|t9zwiS7&dbVxX_}|&G*7pyVDMDGwwVUzj4{&CoXGJY2^>F^3jINY zmS9j)WZD%tD7oLMhz)62(ll(@;kiTDS(n&pwFnN~Re4%YC^B&5Qx#<#6TN+#EV^GJ z(-pDWfJ5`-Mz>Z2W3PfpdLf4vQ*G{dIDwHyMPsRacq^PGH^Y%&A(1C~l6L>>;w4!{8DDB(N>$L4Y3eb}-y#QV4(d*`f;{Nm__&e>SNuoR7R<=DwRXDFB{MdIFYIJm)WrVoSR;8vMq?3-8E*_S6vO}J3>X=WfIP` zztJtOGRKD}wO+p!EUX8^rD(_B=?uE;pjJ3^C)-?`j&A$CQQ!Jt!_g_EbG2@++oAb1 z82 z32G{PC#&pUd_z_F4k4+$bZ(S0mBdyy;B{8wP4OVOonqH|rJZ~(CWPad|G&GexMwLDOJFdVw_*?v< zs_?2sQkXio!sXPSFSW7L-HLkextm?Kw;I@OrW5>jy4c*|eOxidHmaTVV94M1_xl05 z+%H7@xz$WyEmrpy*y5feu@+6nb36G&noBn|h20Yrc6-(q%c{ms{2^;a!X5JsidC1R zwp$Dzd)fy)lZ|h)JGoYdPL~6Tf`3rTa9hERWUt@?`RX0D^8wM}^U#&h)(KN|xszqr zp}XVUO0ea0K-1V|)L5&?Uf*I#YQE`N`2Hs_;2*F=>=S<|1x`A>>$BPH3k&!!C#9z> zY$NdRis`8eLyV3N%Ck@TQ6F>$Hx)8i$nV5bfJri(0xls2w-C?}S><7@vl(*^8F3zw zDIpbn0x}&vrFNx8b~s+t0@VwH=Y`nlvIp%7(^BK$ubP-sdQZkU^+66L3k=J&Dm)_s zuN>`AJ|wiqv=dU+d4_Jw?;MR#U` z*~J7DgFSyd!TcTnG=lHlJ3KInewiisFTLzfs{b}KFp^2=9Huw3I@h2Z)=@o zBp#T_>v|;MFcN>%1%5QDzEFT69=>}$FOk7oO@6z=*KdofR$7vm4q0P_DlGm1$UY}~rC-tAztQP1{V{m@Z47msyI{*1#D&e120Y`e{}d*05$PO%Zs z7v|0;HF8qljUKG-rW1}O=_JvInEYZ{+uU5SKZZ?%h63H*2JA`zg>uN zH6PpX2;6Qlm^x;=j(RJS>bM4#0h37I+W=pKnYCiY?~m*qL^qp#pTO3vXOnutJ)_yP zNxk6C&CJ=PUU2_}IGfZ9?qpcbCiQ|l3b@q%i6}z z0+$hiX9*Xs^}5&9UiX|S*sliLOu=hvu+% zH2!x5b7A2B&trdq-^9Oy|H!go`3~`Q?B6DqA%GA# zF9KHy2W}ci^7`f`gxMy9S;xXWp4ss*_smnok|aYLMIoLhC}Rj1rm&19^!k+V|L+*o-FXB zy#G=A|Humn2}B5dhzP*OjoSZ*2ry!e5cmWmaMt#Z=KpW|o&{g)2XwH943mfsodX5HrJ5>OMEvfLgNaYNcP}4j_NE#Rqr}j z$4zp=)aEC)==LF)l&&9!`EAIRK8seC?K=YzBwNI7_ z7^y2&3p9|Z&K(?)$I~skR{>MuS?zs!|ywk1RHB%8eja#I7(o z9n2|M`=O@IGc@poaV?szf(83zAPjL;j)g1pshX(kk(ZwZYY;5rLtLtyYI(v6s#KH3 zNww2RC)ZGg8an8yk<=S@;JUe}IG`#7KtEW*1_7TlHL`KCG5#_K$^Q?1|3B!NhvE?e z(}@7G|4nDPqFf;a&Vm5y|DOdVM1v5RP6SZ1p(Cl&w>)7K?qDI0*_%Z$-nEn4AQ6l~iYd>eRyO!|bQ<70r96o=;#(xIb{(+rSw*9MCMw3a| zV3WK)(Iz=YJ!YCTQBd`3V17A}DbFugWoo8lgS;CP<(VkQWNEQf>$6}sK9D2N##iMS z48;aXVl&2C5mXN3j$W+DSRV@&k&E}7<~T|#J|Az z|9jvE9S8x0!1N$6XPLnkuo_*d&4I6i1?-UHYViHPh;`-nKl1;dp29{sK?s}|0ong2 zfMEgLjsJ<|s-|hMp%F`~#yge%IHrEBSNWlbDnZ__-lR0d2JYCbboixOOd8uF<$jNci zE*)SBXtk-#^#sm4a7ybuHN>dgqdSt&S#VbTn(crbCN9Mwba41i{NJg?dNog-g zayJ^zhDkx)Ui7Xjb<4VN?Hc}N$U7qKPb!~HT;-tqvXu8Wz3UpzK5tvNeH$OX204bf zR!iD$RH-AQ_a-T$k>m0dE=n#`tn?|-v7ENghwuWJL4F+{2BZpG z)Ts0e)yxd+z-LZE^DML*pNpR3!2*@zNx-PUgoCQQXtg^i{O2X>Ft9O$1uh{x`@mw& znsHb)nTbb8Nl+AKaxexVYfm*DU`jX``nWPCLmmY&r*obvMy8%9Nf}OIYSdd-RzSUa z0e`z-D)hV|JMh{yvA|)>DaEa1M#J^=MOrt*kzgT_C!KH^((wZ_B8$OnC>qQzyL~=N z8)`U(9*hqNaM{teCR>xBC7mdV+P!VHQ!gl%e^_8pwqPn+m}B=C;yRrXZAdE>DuwKS z=X%y5VuZj{A%MRBr>ZznW)K4BLIAb@bHRm(5du?%0Q&x)s^UbMK?s}+0rdVq7hH%K zAuv@4p!fe&6(`CJLf~8o!1h0j2^c0=RxH0u*om)UpOqPiZks&-Hr!j3#(Gj+_5jR$ z;Og4eXmETl&2_r13eSjxb<@bhWNKvr*|*p3*z7lN;_v#UaUGq9e&sQZ>FD97jOa*1 zGvkADlSg4B;*k-*`%tpN;XW^~q#$o_mntN~*;wd4Nd)GE-mg|#)&0sLO+J|3urBcU zz|eiRzUNK|N>X0@Rv1q@aSV#2zOo9|ECw}VNvaV^S`a|~OyHR7gwIqbPNP?9 zg`tq4_~lXDsixCrUj@?T6_ayDjLl-#Ok&3fPmyOTH0sC&7M%vda6S;Xcp)< z37klLicmwzQy*G;8%5SwZP5Imb3H8)F+yOv5J3I^=_*f@8-&1l5J2t!JZK?Wgurwm zfZG3bl_$y#Lf||Ip!RerNbgs=qP!H*ev%d|wTf8Tcd1t)kak9R37Blb4uaR^=_2hO&5LwR zx`7tdm=X|c*XZM*Vnj7f5n@J@z-5d~$>x{)V3y2^Zv3Z)77v&!1Z=lkk|5psX*Svh zCdo4s13NUB3!{fgc4=MG3aN}DtdL{I>fv3l&3@|^{#H<)yV9t%+jI-AHx<$^UshC* zH^ehUfMJeK_n^fH4dY@{dQcneyQi!`#kA{OqarkvTSdF^5JQsjWvW)@1+Y$9MeOo2 z+j*+!1It$3!ut}0Krp}#!e`L&6_e3hCxInoAe&#-)dq8V-dF=GSlzo8lAFg-8_{FSnb!Bl=Z|QE0{Nvh}TWIQ%O!~IB5Ql;TeZ6 z5dxPD0rdTU*-9Mc7a^b{fZD%~1-e2ATs8zy`@d`@j`E8T&=ElX|2h`v3L$XW5J2z$ z%U0qjzX$;x0o49=EYKA~;IbirzW*;X|*3naU=%P3G{X6IFD2SwS_5c-+1lFyUs zXc#fMJL&Pz;Yp=2`JjC)PKj^deOcOk^4+B5JEkh8{%)8&#?(-0wF6dltptmQt6QU* zR;Sk<*{Jf=nqRi5dH3_uZjr$JuOZ_u>6 zrHPl>gU}SExOAFIVFhGH_FSYO@5oLz9NS8f@ou<>a=OooEFP;fI$-o8zW4VtVs$tu?tz%Hx+T9OgSHYbuaP>iqAHS%CU%AT(C z)VbYX3wMDl;&uGU?22fvx?xk*Rq;^jx2gWBanwaO1~mWw;-7PfBSPSjK>&UKKQcvy z6h#PJI0DH2cj1sCh6sU21_AW`e`JaZDT)xda0KA{pTNJ4;a?}3#5eIAp1W`nmyKZ{ zWVI)k9%$!`R(iD2)(LJC0IHd{i?7-2H*VnXepxaVYQ|9QV#{PK)PhH?h5Nv`r5FsM zg-uZGtNX1=`*7Ugr$=+uiplI(ZP3-G&}GNdsCGSri4q81(OCgW~xN z2112u%#OEmUPB%U#R21AEVr}f3EXy*U4a%z4_R$g_(~OQmM4(F_(w_@RXJb<1>~Wf zR4$(lf}IB#)?IBMiVa!$P&6Ehlgp$WwrtKndG{{h4>CYKg#G)?pv`{!20p|k zGol6vkN~Is=2VmUw#kq78mSRgP*}+RciEm!D8C2+0|Kc3ZvX>bA_OiO0;vCg z$qF207a?Fk0KWfcuR*TBW2d>n@5^~PqU?vmOM6ZRXht1SvzCkS@EcT9bz zFtB@v>qH- zbqn;--g$0AT6pRgMl1r5xhYTa$(8{~Cs_wb(#+Xt9{|2Ww7%My$$y6=8-T+;TM;yi z!brRU8I5~Fy^~dTFTSCwe20)! zUOG3*nMz_S8}K?S@uqkX+)lA;z0yuTmvX1qPh9Chn8|q8o7<^ijo)nfxsB$44`<6e zM~+xB8IN_kUal&f_!`IMXfi)=M;e;S9;3=0{~cFg9sDhRQB`==A}LIrTj6qQ&zIWR z>25{6_uS1c+glCnHq!}yJ6&w<@II~>V;j}ZdNAbg`}_R>UG5hm{@iLNuokO(3v6-E zkywi+2MzU9MfqeCj+WCO!@OkJ;XzPS2y4=aK>(JeCZY9`qI-qInGHR?< zWUp_rq^JzrKY{-Uw*OxTKj@fF1cuJJhpd^g;(EhD=N!F^!`VG5r+S`bsgzG}KEb)2 zc2wDBZ`)t+ZU>`{dba24hmOj*c&uCUXB?hzjy`E*+ijNJ^L7q)ij8=_pw-Ov(`x3M zT4S<3q{@+#`fl`KbvK=Gw7QY{UcGQ2Zf|8fg?9gd9c(z8QNQRZbb`fPC(g76tT%EZ zy7`XpNipu{F>;q&_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d5b1641d38b68a2ce904b416323045e33a585544 GIT binary patch literal 4096 zcmeHJO>5jR5S8quVK*#=UX~@7Ikq&1v?Z5b(rxO6P$z9S8%j<_wPzE7Ep4Q6K8~f( z|CHa={(#CKEncz^$g$Bwwxy@XXy!=*AAgA@AuO~h1i>5DW1O>h0F1G~JzZ2|-XXgE z4t=*f4E9*aZ&|R0X(%Q*Ew<$y zP775QXk^+7>{2U>D~hf_=|nFQL4?JUY#U+yVvY11b62PB_nmgVuF#oWNX!zgYE^f+ z)QGFxO|4k9;?%zi)7))RwcEq$=vCY3;T`Y}JUR!e`_IE)%ry`1fOp{kcVLr;TTd_D eZ-&(B^}yB3!{5v`5AT3?;1M{m8E*0R{_{UF;=u<1 literal 0 HcmV?d00001 diff --git a/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy01/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000000000000000000000000000000000000..73c996b2949d28083013662233d67c1d32ab60c8 GIT binary patch literal 5120 zcmeH~K~LK-6vzGIjI2c!$ExD;E=Ww{f)J-o8fD9&qLoIAG;xYN`hZAjS{%279gxab zZY8cfC#)?hT+yW1N@Dxv`T6~Swh!)|wqrwhIn)DX@Id$iKpY_oAv}Ipi{uWh7*^XW z=JjUH`zw5y3;ET%hq>2T_i&c?B=AcH^+p4x6{CJ9)VXV=m&4-gfA5CPvk=dk$L$ac z8}8Psh?E+AhxoJG>NLCOcoLrPS@T3CV?s1^YiiX`pZ$&cw+4tf?bB^`lkm=p)YuI3 zepG~u_KW%hEB2>fyr6z~2oH@sl^#()POo}KnXE^~aGUFOn|zVxYaT_?6Vh2cOeFL}IzqCIt1J9e4;|$$pu&_hz<5mL?uh zX4GKBQ)^Pm9&;U$9<+W`Di&;>N6c#!U90RGxh&0DK_{{?7K1g7#*EM^&*RyJ%5_lR zj$SHc4K=&*{P)~_ZZ1c_5%^yS*z*taQSjr6Bj5;>gFpbj@F4gI#rdBJIV*>7r_vE9 kIe|@(+gs09qx~ww0LgdrdC93b`HnzI2yDu2cs~E|1ZwrTvj6}9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0e975ada3135aea5285f2e84f41674c9bebcfa83 GIT binary patch literal 5120 zcmeH|Pfx-y6u{ecN-{z`E`-ZFvd9Iwn&{M#5XVrQiJX=pC0Q5)MU_w2+E0Mwb8xA%%ZMAzZ-)LvdU%?+z=< zJ5rT4BBt`8w3WBr2x&QN0xl`()hgZ)<_|;KO*+wdmiOv)-!febT=UAdAh$tX1E3L$ z6M(yZr)%~HaBB@3+`96^B?Vw~%{1dwJ=QO(7zNRYt`{#MFI3N8vRS5kc`mP+|BpC8 zHC9S`)4&@&i{m($C^TY)t)72+NKwgrtg) zO*1NK;i-pReRB7bfF!UV0WF;-@Be=A;_im~$b5kehJ^A3Hqz3yyx6}=1a@(Q}w%n<_snO0B z`UxYZ&dkw-%%!yxecINqn~)H_LZG}v3vWopVaFQ zBCSPX&?I3J7g9M^9NfDWNcp1P26Vwr9{t42T|&lX%8naPUy98ChB7=RC9~ugX%izR zrFS2(<@w+V{Vv@+VcxAxz_)`3LVVDD(=>Ri|7h}-h?IL!`+nC|R|C~X4!=0X2lIiSAL#t?KvN=63@4>L#> z5R47KMuU14dPa#|HfVVJISh82ZWRBK@@bOp3ooLSb26{j4y-+feb<&nXOta-f!yDY$b*Z2^3-?qYYuj?^QFVs%;v^nq7Rjy2TKyu^t^|EDTiz=ch3}Em=mp zg5O~m>fk0!mPv=Y**AEYbB43ZPHu-#CiivL!sf(`{DgePNf$aAtFMs|l-0$HtH`8? zkzG*k|JuYNkXEQsj;5r_R!?YQvUZRz+Syg#^od^DZ749zN1aPEH#J?x>^%zVnPeKT zrFv_Y>I{QG#_f3oO$D+qX;=jTZ#|=6p;i$iv(+4~##uu#>X!&($rLot_CBW^jY_A} zm~oZ4SdAsTd`$Gaw8}AtdN$OOFg6k`*Uxg15>=;aij>rbzv1<&PS-G$A#7F3q3Z4I z))p2)EFl+E8WMDO66ok(nW*ew2m+oZfm7Hv?}Zin?x8pZP)iGoM;N?}MNO6y`bW^6>IF+qloRTu0w1z9@{1byE=bmvN~(#A64qFU zG23K)!YPjMWv>Ze#Ni!ejfdd9h`SpNNjN`hs zv}t(a?=hD}FbMc!LTpYGg_mLQ)&`!^^Qjw3usQ9X2)|SV2YUdj_g||?lt(E~unLS! z^{bJCKC85bFSism;jT!%}s=RhY@Dz4&I^%NT)JU+CD;J=SDJ}a|=jkEC$h5Bn zcL?O&RU_P9Gx(bACIG2fd+#;X+LN3+EtD+x{18ZY10v3YLJZttp~|1X^hk+PL($sXc@`gb zY%-p+o`t~Mi|U{s8WN>%k6!zP$H=i^*-H@5{k=}##_9xG;N)grv7 zE=~(l98D@(0=B({WVLE%!=H2nYRs16lW{ivZc(YkOALOq5H50APFsK6)|+ zP5!TF#q9q6cxqe9x{BT`1Pf?6>bbGeVC=jPL+6IMqh>or{`GoMbcDYGrpr;CXkl|8-BeKzq57Ru{3`^Lg_!G?j@(m`DdM#yj|U#jGIXwyxPDPohcLe#KmStK7O= z%Ea_I1aJ{(uQT~3ylOU9%c0=4l1SHn($psG4**&U8EV;9qWIhPf{Iss^e!WK*3PX; zx3bdWPCdFjn|OXq2^4t|FpYEhrdh{0C7+xW^*GY!u5&g0_fy+T3XN8c+k@ajz zm!_4cyD8b;wRXHUg=Z~1{!3m>xQJG;5!#3~?2nGmY_9T!Yq_IlP2wI-pqA8cK33#6 zRRpOwvn_MCo`5=N*%zEJ;sVq~st4!7s}YAB5>nXSG`_qBPWwk7jDLkRneRh9yXc>Q zQbvJW)@&QGByeo=Z~rqb$t&u{SM8X?!VNJ0M7Fv^8c zDikX8-{cJY8bS(t{c#rS2^vhRfDOcWix}11W(1}NWRN2WQ1b4}=j(PpoT=IV31DEW zipJ6#z>60VnLw&PzxN6Lm{5s_*6v>40<23~%`#D()*p95N*-9u%>@ssSc}w?CX}p1 z?v3ZrFFCd{oprK)OCNfXhn_S|Q)IRt`i``ED(^U2*9847W-34YGOBb_jP7hcoE&@$ zl8$p(O#OBSmaAW{Qk|x7(zFrd>P^~qsA0?jsZXxtompi7C3<%^ah^1b_UhljJ?e@a7a0IQ}&VOp=pLiCE2J8!UXnyjmp9 zDMPVwH0umbYq?$W@WK%Eu!Wk_mrIlc$34FX$1T$67QaP3myJAM5BB+adgP&oV?K9p z45n)PgVO7;0) z)}5hvW`_9^JW!0mW1j_xBH>gS=lnP@ctHiXhteP345h-!g?I+7pY-+h`MJY0!`{h+ zN6BN80%nmV!^03!Fn+ypapp<>zE2F@G5_B3x(5al6TcyBLDBwY{J*;l^oCqP0kUbc z&|oT2xhc)<_RPd#{~Uk7s`#fFzP)m>Xw=-o!MmKoh=A*ylEsYQu`~0Na;6ta?bjcP zWSUK`Odj}_W(b&8{UAz0vCSx1IlY0Ho-r%gwD(u0 zziUf6-*O_q(EZY~++aZP)i5JLSvTpvDfZ!6!0yREW(7X6*@KgJX~29XOfmBtGbpUk z5N%y#8Mz{?M)OZX9IZ|y9Od+!%nG4TRZtq4lBRn#)8{h8&3zctNYIUu4EP>Ny8=~u z%+PLiM~@)FYRJd?EY*o`Uq{YsBrNyH{!j_IDMVA~;x>YBrh<{CcKsxS$ElpbMa8+9 zyj>uh8V|)#Ti`=zm|;IVg1I!QVXJ}uV<}!V1c;6fh5hp%_Aa4Ze+%Y+%>FO#y-@9v z{?!2zdKld`jgU;RqKh_EL6Ku#@ zoH>!3D#Pogz2eiO{7qG?a}nb~=ZNrr(GJbs*c_ExUnW2FwDI1y?$Z2r*&3yO6ZJPE zW_2dV{NyNdn{wxf$}+}0WqbQMU$B)hNf9&h4A6Xo;76BX{l_`qMO#*vglRf@agM+_ z@MdrlIv1d$;UGo7h1eQ*bc$fcnd|$cvj>*7=&ke5SBbwBS?I?9i|?K!Ql4p~UR4A* zIXT6z{BYpEcnR2PIZ10`V@2RPeJ`~8EsoxXWgPSo8a&`o-FOeH`^mgJPVPRWa`^sBXL__*~~F9P1|64FbDE@rkVIu z>2(%P2dSqTRo&!`02~W4`n6%pXPkp+Ce@^NDF*K^x)hqcg?-K%DOA!ol?!>!)O0m# ziJ3sHrSYhp@10;pdk5YQl9U`bPL~=P2M$h_*H7U#&7|Bmnh}?a!YXc>J6r@tKLiVn zqMJ7*OmKyVMY=>oQMvajF2tFYF9gvOaxj0LDkimi;$$HeY-oBQ5y^*nDSN})i|jo8 zeF<^IVCYESHHSO&pR4@WTmFlES5Rs$ z6bp__$3j~P(D{G&h_Ifbb5AuIGT20cEV?ge){{V0EO-SPk{cXJtca4{b#y; z{}s=FT%}(Ws?LC%PEH36u_|}N|@wkKXCj zOp41_ixaEOcx$wDg&Ty|RlZxV!F;=96}l}F-v#09SV+KHfBPPOdbv_$#(yZ^LTMI= z&KYd|-PZM#&uXw7$52Wad`FWVz8oW{#S}1R+}y7_s_|-X*W(4j^T#J#c)z{5h*8fY!o(Zap+Bo0UvNqZ(&=xq`NQ@D94o? zCYzm$<%aE}$PlZIqiXpfF}URmX3rWsYR`)n>YE!LhDFHMrs41=XNUAtCOznvj8o05 z1ZF7_EGC=#9YGkT?ejhs3P@-1n-%4HzrLw9SAWf|R#DbunIJH$HfYs5?{G0O>u3d$ zlIaYI#jKFVT2P?1l3;NUWd1Bjj_j~tL&deoLol6qU>>A%l3S})gFA(L^Z571ohi3NN45B_XSspgi+nE@foR!# zJ{7=|uA`Z@oV#sukLycA!;Ng`;@-71{S2N{W}X;yXyVx4svPt|=9!(ZBkNQ2P7(x& zjC@Z_4`rfWHOGehA4~#Ey!-hUHVA|bdqt@K4~{`mknf4;-|(={Ir5Xt`}^yy+AT z^C;DSnDMm{q*r=ip16OHq31)OS|YE^qO)**rY`=r4uqWhUlL_MoD_X=SgPIvV%|`` zst*5I9G1NNN2B$BX-s;R_(xp~6doReh7ZN!0Sb@4oVfcux@EhTLS($|iWES%=TB=B zNDo41w(PblRl_g)hwINMrkUtdIgblT z)k@t)4qCP4*XxyckDyjJONcv6Emb}Ab>milW;-bNDd{I~jHGB#E7(QaH)s8RgI?wv z5ap!w@#D+CQ2M`uC>Cl?`SKujD1ixOrR$Rjp3Kr2C=!!E%QP5^b&Sne@5wZB`cby5 zV%!9h!z%<5h;1uJM%Kpf)#kyi&TVh4%sr2zFF6CN%BH|1myXu)_tEB*J4ouUe})ra z3RM9PTfICXv4sL<=UY?;-FP-mx$2r(y4v@)50tM3<$P<-+I`^r=Q$c(1u}GZKzEiS zp;^~n6j4JaZ}`Tq`cCY|C*kuaYh$!ICl$(d<1eE<&_h^P7f$CibAW6Yi4H-Or&7K{f}G*-~Nea z=Lsr7PM!z2sm+E?eYu{QNx-_B2@byg3E$3viOG$93_T7wtXekEnGgV%iaG!4E@C~1 z`(~6{sW+i;?_sA^lc65f@>H`VjtSr0#~SH5bMpzRV%kkB-*Pv!= zkz&pxBeY!yf_FIC@S!@G#q)Ddo9MXEtC~JWM`%$yMV9&PHrRxsbe-MeL=;;x@7=XT z2H++!sWRz+gKDgSH0_(W6@R&jtBL&pEQ0Z@zu+nb^D@8YjCRRVO{)up3`)Qw@8PjF~bS z5;DH=0CmJ&zV*KxcCEPZy%-!tJ&)qrA&3Y&WLWTz3oMr9w6J_nJ{FuD115C9hPKT!oKO|%$9Cm4R z0>x_&`nI-lDc)8~~p@180AG%gfS91;f zIlZt3&{?~P8I6+ti}jka5PQj)smshTDq5@fJi!x(Apb2s_NM8&#nZTnZ)lL>AaDLF zIKi5yz)JmFFVV`e^i&Z5OjaXJ7AGcPo;x~MtDmb)pH=W}NOjQj@vl`fSY^`?;>_s%?k z`#$Ui^mcZilUZd}JD?U3Qxkn}hKIg*T7t=1#=mJVH`XE^+*gzA56f3y zgp_nG8t3{d%-WbB!x`c`trR`qIR6YR&8cHMw|e?Pn;~W{-`da~39=Q$ecn4sPmIF$ zrv$(zm#s)xlf(3JB}pV$w!x9s750&9yeu>}#KS1{m6V6a*mmN%2yDt6NNCajsfE;3 zO*Zu=JRQw4a6^B*8+!@NIeOp1x6I_Ppl>^jhe@DX*XPlBXpWEI!3Skq#OwPb8YnrZ zKGN@c{`AtTMIpQaI4KAT^<5t6DCnLPrWP3`DqPhpU#-zoRJ?tw{_#1hY6So?)(D6S z-9@Y#=odDOMnemlYW_s$$x@dz!*5SYAeTwM!JYBgR6w)lHTC(kZmKtu7U~*eqgpv_ zMsfW`P6Jk)+^B1L!L_nSu121Ui3=@+|Fjk!A`@9ETF<*ZTTMbrfKeL;7N+w?t49^N z*WeoM;U*6W!~)ue5Yh-WNXSL9oeTcp=mY+}n=hY)J1T+93LBKW&aowQYuEI+?fxPK zF*4m;PJ$x;)PTK6Qa3a9ydX5>L$aTCVCeRzFjh$+3q9RHOOlonGbE1c&j+Ze`aGoQi1&v}1h^n=*zFHY92K+X_Ov~pOi-n~i?U=S9YePOG+%JIO z0#J|V4frkJqILcTG`7Ifz+&~a9GGs(+&+ileFL}LRUK7ljsQlq-sCcT&UEy8sd4gS z7A`3l^4dCiQ-L*x#mPDSK7GkqIeZX@KYrm%m#}m^*TW5Vh3Eurx?TIMjyD=2=8|OoxsGSio+vawqB~h{{6#PX}&Nv=IgNk4rYz@DmK%k#h=4C=7j*YiQiUyLeui0Sjqe zMcL)S_OG+i8{Bs^%2)}^-rqzU&Tm$|dFf^HFiJ3v;ML8Kq4l-8pR<5{l6A75ewES; z_fQ~(MV`}!-ipqfnvJ#`v~e&aZqh-RRSyPHEX4M}rF_3XKU=GW=NH_h1+kf{(dTbF?wtaRx3MeeE-p z(jn*WspHu2(V?5%)j;WG57kJQ5s=7Cj(~sXUlU}+WV1Rz4vI(;l!5DBR>5>-P+wTo zP>rO;?ba~Ll>VhoUQ2xt;6}?m#hjP#&%e)bON0B>Cr>m+eUVO@xr5f24b_{aqmvXr z2V*Zi!;t`$0RLo>c-F?pOK*;jmwYiXj#uE0ftCpMSX}?z2e?CV#Xi~}#kj3nyr1VG zFpezF6XBneBxPxQL{|k1>lnpZRElCj1tJY+JB-?N97EHrDU3?dDKEoA=!MD_+PEU% z0%V(*XzY_u`@ym2fEZ*J#VYTEG(DwQ2f5D_ot3art>i*K zQKY*R)8!=cRU%7>)Ea(cw_scma%l|1*I$;OB-tq1XWIzx*y~yLzW3xi{s|-aNUbud z-_kMtZo>62g&E`HSH|=BIB$AJk_oS-tw9^hYbq(C^7fn9)Ob-haYLvCZ>4%Y#p4MC zNc#b{0s0_RmoYB#6WQjE`t}GM1n53T>wE!?qg{hS$o<0Ib;KN+Kx)wPrSkmLrbny$ zpH$VZIck>9TNSNB?hM}B-?}UMg%-AS0e+aVw85g+&tO4jjG@zCsU z1mYs`R<(?kOAAET=+_0UlYPuj9=%KVH-xMbO=-a$is!)d{X(C~`1bb__304k z{D{ok51ZAgmqZ-FU8n@o@@=mpf|x--h%2@6K?oD`Ri)mU{uGaL9a7|O+g5j0Lw8B= zST9~&>iYGiQBOv5UVlizcGJZ8n5KZBFiWOQr@8p_8$-Ok|LmOxJCN$Bj~RNNQ)qC&;mujfd1)^qA1#;DAEQAP^3VM0tJfHX;GkQkRNq_ zbY{Por0%4%{BhLmotC>Z@4W9j&&=%Zyz|aXE|XwHnyhm?TM2=h;v;9L$Hwd~hQXCgm`4d7dQcw#W}iGM$YjgV_=p50_Rz zXs^=h(j+O;$KpKYn6=tpyM|*-yG9=iM=en1`<1T9N%#9QuYH&NYX!K^3>OKT{rYwM ztt*lqp^8W!a{NI3oiXX6hDzF071DjCMuLNBgOoIH)Q(K;-RvD9XG zk2Dhl1$I)To&?-4cW9aijP~n1$F7j-oybwc3~saEyotZXN|@-W^ec-A7d>1;Mr8#V zYrsGZ)CiG-SyT{%5jC#gZgG_wEkW7tvNX?BVMMp12LlX21Sqsv5S%t&1*ew+;N*3K z)9u^fw6p|H&)op0&)C7~iKoG7{t7tFSsw>y(CE>D5I_iALImbvo>BY1ge8x%j1a&u z`2L?GzJw7!CjOrIGvc?1UnK?v3j)xA5I_igFa(~Mo5AdMPHfQp4m{1o+#JD)^vpi|ViNnVA{v=FJetc6eG4=$d}@1OX)k zyETTBPS-4e@>Y?l(Ojs-bOh;&lrEpa0jV4%hentdEx`7V6aRyO|L8ynAOxl#fyZ!S z@yQ;|3&5n}gWvx+@ly=^M+ZUxA#e#0c#K%YmG+M#``;xfaFj)az$pm8_HV_C7*@nz z#DCNBs^!-#e~x8OAwFyH%qM!JL>WS9!SN!2rlnyeX$VD$PzKK6Pz*SfL6>>zV;Xb% zM32LL0tPGJdc|t9zwiS7&dbVxX_}|&G*7pyVDMDGwwVUzj4{&CoXGJY2^>F^3jINY zmS9j)WZD%tD7oLMhz)62(ll(@;kiTDS(n&pwFnN~Re4%YC^B&5Qx#<#6TN+#EV^GJ z(-pDWfJ5`-Mz>Z2W3PfpdLf4vQ*G{dIDwHyMPsRacq^PGH^Y%&A(1C~l6L>>;w4!{8DDB(N>$L4Y3eb}-y#QV4(d*`f;{Nm__&e>SNuoR7R<=DwRXDFB{MdIFYIJm)WrVoSR;8vMq?3-8E*_S6vO}J3>X=WfIP` zztJtOGRKD}wO+p!EUX8^rD(_B=?uE;pjJ3^C)-?`j&A$CQQ!Jt!_g_EbG2@++oAb1 z82 z32G{PC#&pUd_z_F4k4+$bZ(S0mBdyy;B{8wP4OVOonqH|rJZ~(CWPad|G&GexMwLDOJFdVw_*?v< zs_?2sQkXio!sXPSFSW7L-HLkextm?Kw;I@OrW5>jy4c*|eOxidHmaTVV94M1_xl05 z+%H7@xz$WyEmrpy*y5feu@+6nb36G&noBn|h20Yrc6-(q%c{ms{2^;a!X5JsidC1R zwp$Dzd)fy)lZ|h)JGoYdPL~6Tf`3rTa9hERWUt@?`RX0D^8wM}^U#&h)(KN|xszqr zp}XVUO0ea0K-1V|)L5&?Uf*I#YQE`N`2Hs_;2*F=>=S<|1x`A>>$BPH3k&!!C#9z> zY$NdRis`8eLyV3N%Ck@TQ6F>$Hx)8i$nV5bfJri(0xls2w-C?}S><7@vl(*^8F3zw zDIpbn0x}&vrFNx8b~s+t0@VwH=Y`nlvIp%7(^BK$ubP-sdQZkU^+66L3k=J&Dm)_s zuN>`AJ|wiqv=dU+d4_Jw?;MR#U` z*~J7DgFSyd!TcTnG=lHlJ3KInewiisFTLzfs{b}KFp^2=9Huw3I@h2Z)=@o zBp#T_>v|;MFcN>%1%5QDzEFT69=>}$FOk7oO@6z=*KdofR$7vm4q0P_DlGm1$UY}~rC-tAztQP1{V{m@Z47msyI{*1#D&e120Y`e{}d*05$PO%Zs z7v|0;HF8qljUKG-rW1}O=_JvInEYZ{+uU5SKZZ?%h63H*2JA`zg>uN zH6PpX2;6Qlm^x;=j(RJS>bM4#0h37I+W=pKnYCiY?~m*qL^qp#pTO3vXOnutJ)_yP zNxk6C&CJ=PUU2_}IGfZ9?qpcbCiQ|l3b@q%i6}z z0+$hiX9*Xs^}5&9UiX|S*sliLOu=hvu+% zH2!x5b7A2B&trdq-^9Oy|H!go`3~`Q?B6DqA%GA# zF9KHy2W}ci^7`f`gxMy9S;xXWp4ss*_smnok|aYLMIoLhC}Rj1rm&19^!k+V|L+*o-FXB zy#G=A|Humn2}B5dhzP*OjoSZ*2ry!e5cmWmaMt#Z=KpW|o&{g)2XwH943mfsodX5HrJ5>OMEvfLgNaYNcP}4j_NE#Rqr}j z$4zp=)aEC)==LF)l&&9!`EAIRK8seC?K=YzBwNI7_ z7^y2&3p9|Z&K(?)$I~skR{>MuS?zs!|ywk1RHB%8eja#I7(o z9n2|M`=O@IGc@poaV?szf(83zAPjL;j)g1pshX(kk(ZwZYY;5rLtLtyYI(v6s#KH3 zNww2RC)ZGg8an8yk<=S@;JUe}IG`#7KtEW*1_7TlHL`KCG5#_K$^Q?1|3B!NhvE?e z(}@7G|4nDPqFf;a&Vm5y|DOdVM1v5RP6SZ1p(Cl&w>)7K?qDI0*_%Z$-nEn4AQ6l~iYd>eRyO!|bQ<70r96o=;#(xIb{(+rSw*9MCMw3a| zV3WK)(Iz=YJ!YCTQBd`3V17A}DbFugWoo8lgS;CP<(VkQWNEQf>$6}sK9D2N##iMS z48;aXVl&2C5mXN3j$W+DSRV@&k&E}7<~T|#J|Az z|9jvE9S8x0!1N$6XPLnkuo_*d&4I6i1?-UHYViHPh;`-nKl1;dp29{sK?s}|0ong2 zfMEgLjsJ<|s-|hMp%F`~#yge%IHrEBSNWlbDnZ__-lR0d2JYCbboixOOd8uF<$jNci zE*)SBXtk-#^#sm4a7ybuHN>dgqdSt&S#VbTn(crbCN9Mwba41i{NJg?dNog-g zayJ^zhDkx)Ui7Xjb<4VN?Hc}N$U7qKPb!~HT;-tqvXu8Wz3UpzK5tvNeH$OX204bf zR!iD$RH-AQ_a-T$k>m0dE=n#`tn?|-v7ENghwuWJL4F+{2BZpG z)Ts0e)yxd+z-LZE^DML*pNpR3!2*@zNx-PUgoCQQXtg^i{O2X>Ft9O$1uh{x`@mw& znsHb)nTbb8Nl+AKaxexVYfm*DU`jX``nWPCLmmY&r*obvMy8%9Nf}OIYSdd-RzSUa z0e`z-D)hV|JMh{yvA|)>DaEa1M#J^=MOrt*kzgT_C!KH^((wZ_B8$OnC>qQzyL~=N z8)`U(9*hqNaM{teCR>xBC7mdV+P!VHQ!gl%e^_8pwqPn+m}B=C;yRrXZAdE>DuwKS z=X%y5VuZj{A%MRBr>ZznW)K4BLIAb@bHRm(5du?%0Q&x)s^UbMK?s}+0rdVq7hH%K zAuv@4p!fe&6(`CJLf~8o!1h0j2^c0=RxH0u*om)UpOqPiZks&-Hr!j3#(Gj+_5jR$ z;Og4eXmETl&2_r13eSjxb<@bhWNKvr*|*p3*z7lN;_v#UaUGq9e&sQZ>FD97jOa*1 zGvkADlSg4B;*k-*`%tpN;XW^~q#$o_mntN~*;wd4Nd)GE-mg|#)&0sLO+J|3urBcU zz|eiRzUNK|N>X0@Rv1q@aSV#2zOo9|ECw}VNvaV^S`a|~OyHR7gwIqbPNP?9 zg`tq4_~lXDsixCrUj@?T6_ayDjLl-#Ok&3fPmyOTH0sC&7M%vda6S;Xcp)< z37klLicmwzQy*G;8%5SwZP5Imb3H8)F+yOv5J3I^=_*f@8-&1l5J2t!JZK?Wgurwm zfZG3bl_$y#Lf||Ip!RerNbgs=qP!H*ev%d|wTf8Tcd1t)kak9R37Blb4uaR^=_2hO&5LwR zx`7tdm=X|c*XZM*Vnj7f5n@J@z-5d~$>x{)V3y2^Zv3Z)77v&!1Z=lkk|5psX*Svh zCdo4s13NUB3!{fgc4=MG3aN}DtdL{I>fv3l&3@|^{#H<)yV9t%+jI-AHx<$^UshC* zH^ehUfMJeK_n^fH4dY@{dQcneyQi!`#kA{OqarkvTSdF^5JQsjWvW)@1+Y$9MeOo2 z+j*+!1It$3!ut}0Krp}#!e`L&6_e3hCxInoAe&#-)dq8V-dF=GSlzo8lAFg-8_{FSnb!Bl=Z|QE0{Nvh}TWIQ%O!~IB5Ql;TeZ6 z5dxPD0rdTU*-9Mc7a^b{fZD%~1-e2ATs8zy`@d`@j`E8T&=ElX|2h`v3L$XW5J2z$ z%U0qjzX$;x0o49=EYKA~;IbirzW*;X|*3naU=%P3G{X6IFD2SwS_5c-+1lFyUs zXc#fMJL&Pz;Yp=2`JjC)PKj^deOcOk^4+B5JEkh8{%)8&#?(-0wF6dltptmQt6QU* zR;Sk<*{Jf=nqRi5dH3_uZjr$JuOZ_u>6 zrHPl>gU}SExOAFIVFhGH_FSYO@5oLz9NS8f@ou<>a=OooEFP;fI$-o8zW4VtVs$tu?tz%Hx+T9OgSHYbuaP>iqAHS%CU%AT(C z)VbYX3wMDl;&uGU?22fvx?xk*Rq;^jx2gWBanwaO1~mWw;-7PfBSPSjK>&UKKQcvy z6h#PJI0DH2cj1sCh6sU21_AW`e`JaZDT)xda0KA{pTNJ4;a?}3#5eIAp1W`nmyKZ{ zWVI)k9%$!`R(iD2)(LJC0IHd{i?7-2H*VnXepxaVYQ|9QV#{PK)PhH?h5Nv`r5FsM zg-uZGtNX1=`*7Ugr$=+uiplI(ZP3-G&}GNdsCGSri4q81(OCgW~xN z2112u%#OEmUPB%U#R21AEVr}f3EXy*U4a%z4_R$g_(~OQmM4(F_(w_@RXJb<1>~Wf zR4$(lf}IB#)?IBMiVa!$P&6Ehlgp$WwrtKndG{{h4>CYKg#G)?pv`{!20p|k zGol6vkN~Is=2VmUw#kq78mSRgP*}+RciEm!D8C2+0|Kc3ZvX>bA_OiO0;vCg z$qF207a?Fk0KWfcuR*TBW2d>n@5^~PqU?vmOM6ZRXht1SvzCkS@EcT9bz zFtB@v>qH- zbqn;--g$0AT6pRgMl1r5xhYTa$(8{~Cs_wb(#+Xt9{|2Ww7%My$$y6=8-T+;TM;yi z!brRU8I5~Fy^~dTFTSCwe20)! zUOG3*nMz_S8}K?S@uqkX+)lA;z0yuTmvX1qPh9Chn8|q8o7<^ijo)nfxsB$44`<6e zM~+xB8IN_kUal&f_!`IMXfi)=M;e;S9;3=0{~cFg9sDhRQB`==A}LIrTj6qQ&zIWR z>25{6_uS1c+glCnHq!}yJ6&w<@II~>V;j}ZdNAbg`}_R>UG5hm{@iLNuokO(3v6-E zkywi+2MzU9MfqeCj+WCO!@OkJ;XzPS2y4=aK>(JeCZY9`qI-qInGHR?< zWUp_rq^JzrKY{-Uw*OxTKj@fF1cuJJhpd^g;(EhD=N!F^!`VG5r+S`bsgzG}KEb)2 zc2wDBZ`)t+ZU>`{dba24hmOj*c&uCUXB?hzjy`E*+ijNJ^L7q)ij8=_pw-Ov(`x3M zT4S<3q{@+#`fl`KbvK=Gw7QY{UcGQ2Zf|8fg?9gd9c(z8QNQRZbb`fPC(g76tT%EZ zy7`XpNipu{F>;q&_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d5b1641d38b68a2ce904b416323045e33a585544 GIT binary patch literal 4096 zcmeHJO>5jR5S8quVK*#=UX~@7Ikq&1v?Z5b(rxO6P$z9S8%j<_wPzE7Ep4Q6K8~f( z|CHa={(#CKEncz^$g$Bwwxy@XXy!=*AAgA@AuO~h1i>5DW1O>h0F1G~JzZ2|-XXgE z4t=*f4E9*aZ&|R0X(%Q*Ew<$y zP775QXk^+7>{2U>D~hf_=|nFQL4?JUY#U+yVvY11b62PB_nmgVuF#oWNX!zgYE^f+ z)QGFxO|4k9;?%zi)7))RwcEq$=vCY3;T`Y}JUR!e`_IE)%ry`1fOp{kcVLr;TTd_D eZ-&(B^}yB3!{5v`5AT3?;1M{m8E*0R{_{UF;=u<1 literal 0 HcmV?d00001 diff --git a/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy02/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000000000000000000000000000000000000..73c996b2949d28083013662233d67c1d32ab60c8 GIT binary patch literal 5120 zcmeH~K~LK-6vzGIjI2c!$ExD;E=Ww{f)J-o8fD9&qLoIAG;xYN`hZAjS{%279gxab zZY8cfC#)?hT+yW1N@Dxv`T6~Swh!)|wqrwhIn)DX@Id$iKpY_oAv}Ipi{uWh7*^XW z=JjUH`zw5y3;ET%hq>2T_i&c?B=AcH^+p4x6{CJ9)VXV=m&4-gfA5CPvk=dk$L$ac z8}8Psh?E+AhxoJG>NLCOcoLrPS@T3CV?s1^YiiX`pZ$&cw+4tf?bB^`lkm=p)YuI3 zepG~u_KW%hEB2>fyr6z~2oH@sl^#()POo}KnXE^~aGUFOn|zVxYaT_?6Vh2cOeFL}IzqCIt1J9e4;|$$pu&_hz<5mL?uh zX4GKBQ)^Pm9&;U$9<+W`Di&;>N6c#!U90RGxh&0DK_{{?7K1g7#*EM^&*RyJ%5_lR zj$SHc4K=&*{P)~_ZZ1c_5%^yS*z*taQSjr6Bj5;>gFpbj@F4gI#rdBJIV*>7r_vE9 kIe|@(+gs09qx~ww0LgdrdC93b`HnzI2yDu2cs~E|1ZwrTvj6}9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0e975ada3135aea5285f2e84f41674c9bebcfa83 GIT binary patch literal 5120 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 YVs!G?|2^B&_|W$Ss-a^rt*|iv2ijUNTmS$7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..834decf55728298028942e226b3ce61f694e24d7 GIT binary patch literal 82944 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d5b1641d38b68a2ce904b416323045e33a585544 GIT binary patch literal 4096 zcmeHJO>5jR5S8quVK*#=UX~@7Ikq&1v?Z5b(rxO6P$z9S8%j<_wPzE7Ep4Q6K8~f( z|CHa={(#CKEncz^$g$Bwwxy@XXy!=*AAgA@AuO~h1i>5DW1O>h0F1G~JzZ2|-XXgE z4t=*f4E9*aZ&|R0X(%Q*Ew<$y zP775QXk^+7>{2U>D~hf_=|nFQL4?JUY#U+yVvY11b62PB_nmgVuF#oWNX!zgYE^f+ z)QGFxO|4k9;?%zi)7))RwcEq$=vCY3;T`Y}JUR!e`_IE)%ry`1fOp{kcVLr;TTd_D eZ-&(B^}yB3!{5v`5AT3?;1M{m8E*0R{_{UF;=u<1 literal 0 HcmV?d00001 diff --git a/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy03/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000000000000000000000000000000000000..73c996b2949d28083013662233d67c1d32ab60c8 GIT binary patch literal 5120 zcmeH~K~LK-6vzGIjI2c!$ExD;E=Ww{f)J-o8fD9&qLoIAG;xYN`hZAjS{%279gxab zZY8cfC#)?hT+yW1N@Dxv`T6~Swh!)|wqrwhIn)DX@Id$iKpY_oAv}Ipi{uWh7*^XW z=JjUH`zw5y3;ET%hq>2T_i&c?B=AcH^+p4x6{CJ9)VXV=m&4-gfA5CPvk=dk$L$ac z8}8Psh?E+AhxoJG>NLCOcoLrPS@T3CV?s1^YiiX`pZ$&cw+4tf?bB^`lkm=p)YuI3 zepG~u_KW%hEB2>fyr6z~2oH@sl^#()POo}KnXE^~aGUFOn|zVxYaT_?6Vh2cOeFL}IzqCIt1J9e4;|$$pu&_hz<5mL?uh zX4GKBQ)^Pm9&;U$9<+W`Di&;>N6c#!U90RGxh&0DK_{{?7K1g7#*EM^&*RyJ%5_lR zj$SHc4K=&*{P)~_ZZ1c_5%^yS*z*taQSjr6Bj5;>gFpbj@F4gI#rdBJIV*>7r_vE9 kIe|@(+gs09qx~ww0LgdrdC93b`HnzI2yDu2cs~E|1ZwrTvj6}9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0e975ada3135aea5285f2e84f41674c9bebcfa83 GIT binary patch literal 5120 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d5b1641d38b68a2ce904b416323045e33a585544 GIT binary patch literal 4096 zcmeHJO>5jR5S8quVK*#=UX~@7Ikq&1v?Z5b(rxO6P$z9S8%j<_wPzE7Ep4Q6K8~f( z|CHa={(#CKEncz^$g$Bwwxy@XXy!=*AAgA@AuO~h1i>5DW1O>h0F1G~JzZ2|-XXgE z4t=*f4E9*aZ&|R0X(%Q*Ew<$y zP775QXk^+7>{2U>D~hf_=|nFQL4?JUY#U+yVvY11b62PB_nmgVuF#oWNX!zgYE^f+ z)QGFxO|4k9;?%zi)7))RwcEq$=vCY3;T`Y}JUR!e`_IE)%ry`1fOp{kcVLr;TTd_D eZ-&(B^}yB3!{5v`5AT3?;1M{m8E*0R{_{UF;=u<1 literal 0 HcmV?d00001 diff --git a/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb b/ClientWorkingFolders/Proxy04/statedir/sqlite/tribler_seedingstats.sdb new file mode 100644 index 0000000000000000000000000000000000000000..73c996b2949d28083013662233d67c1d32ab60c8 GIT binary patch literal 5120 zcmeH~K~LK-6vzGIjI2c!$ExD;E=Ww{f)J-o8fD9&qLoIAG;xYN`hZAjS{%279gxab zZY8cfC#)?hT+yW1N@Dxv`T6~Swh!)|wqrwhIn)DX@Id$iKpY_oAv}Ipi{uWh7*^XW z=JjUH`zw5y3;ET%hq>2T_i&c?B=AcH^+p4x6{CJ9)VXV=m&4-gfA5CPvk=dk$L$ac z8}8Psh?E+AhxoJG>NLCOcoLrPS@T3CV?s1^YiiX`pZ$&cw+4tf?bB^`lkm=p)YuI3 zepG~u_KW%hEB2>fyr6z~2oH@sl^#()POo}KnXE^~aGUFOn|zVxYaT_?6Vh2cOeFL}IzqCIt1J9e4;|$$pu&_hz<5mL?uh zX4GKBQ)^Pm9&;U$9<+W`Di&;>N6c#!U90RGxh&0DK_{{?7K1g7#*EM^&*RyJ%5_lR zj$SHc4K=&*{P)~_ZZ1c_5%^yS*z*taQSjr6Bj5;>gFpbj@F4gI#rdBJIV*>7r_vE9 kIe|@(+gs09qx~ww0LgdrdC93b`HnzI2yDu2cs~E|1ZwrTvj6}9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0e975ada3135aea5285f2e84f41674c9bebcfa83 GIT binary patch literal 5120 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 literal 0 HcmV?d00001 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 -- 2.20.1