summary refs log tree commit diff
path: root/tests/bittorrent.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2010-05-20 14:56:04 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2010-05-20 14:56:04 +0000
commit85bd5bad32906698a82626ee9f5a1704ac1db588 (patch)
treef7586ad9787cee6cfe256224aaf9350aaf66415b /tests/bittorrent.nix
parentad8ed39285d217e1476e5552faeffb5713a720cf (diff)
downloadnixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar.gz
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar.bz2
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar.lz
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar.xz
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.tar.zst
nixpkgs-85bd5bad32906698a82626ee9f5a1704ac1db588.zip
* Another distributed test example: Bittorrent.
svn path=/nixos/trunk/; revision=21926
Diffstat (limited to 'tests/bittorrent.nix')
-rw-r--r--tests/bittorrent.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/bittorrent.nix b/tests/bittorrent.nix
new file mode 100644
index 00000000000..01640e899d7
--- /dev/null
+++ b/tests/bittorrent.nix
@@ -0,0 +1,53 @@
+{ pkgs, ... }:
+
+let
+
+  # Some random file to serve.
+  file = pkgs.nixUnstable.src;
+  
+in
+
+{
+
+  nodes =
+    { tracker = 
+        { config, pkgs, ... }:
+        { environment.systemPackages = [ pkgs.transmission pkgs.bittorrent ];
+
+          # We need Apache on the tracker to serve the torrents.
+          services.httpd.enable = true;
+          services.httpd.adminAddr = "foo@example.org";
+          services.httpd.documentRoot = "/tmp";
+        };
+
+      client = 
+        { config, pkgs, ... }:
+        { environment.systemPackages = [ pkgs.transmission ];
+        };
+    };
+
+  testScript =
+    ''
+      startAll;
+
+      # Create the torrent.
+      $tracker->mustSucceed("mkdir /tmp/data");
+      $tracker->mustSucceed("cp ${file} /tmp/data/test.tar.bz2");
+      $tracker->mustSucceed("transmissioncli -n /tmp/data/test.tar.bz2 -a http://tracker:6969/announce /tmp/test.torrent");
+      $tracker->mustSucceed("chmod 644 /tmp/test.torrent");
+
+      # Start the tracker.  !!! use a less crappy tracker
+      $tracker->mustSucceed("bittorrent-tracker --port 6969 --dfile /tmp/dstate >&2 &");
+      $tracker->waitForOpenPort(6969);
+
+      # Start the initial seeder.
+      $tracker->mustSucceed("transmissioncli /tmp/test.torrent -M -w /tmp/data >&2 &");
+
+      # Now we should be able to download from the client.
+      $tracker->waitForJob("httpd");
+      $client->mustSucceed("transmissioncli http://tracker/test.torrent -M -w /tmp >&2 &");
+      $client->waitForFile("/tmp/test.tar.bz2");
+      $client->mustSucceed("cmp /tmp/test.tar.bz2 ${file}");
+    '';
+  
+}