]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add test for issue 35
authorMatt Joiner <anacrolix@gmail.com>
Thu, 29 Oct 2015 12:46:47 +0000 (23:46 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 29 Oct 2015 12:46:47 +0000 (23:46 +1100)
issue35_test.go [new file with mode: 0644]

diff --git a/issue35_test.go b/issue35_test.go
new file mode 100644 (file)
index 0000000..59dbe38
--- /dev/null
@@ -0,0 +1,123 @@
+package torrent
+
+import (
+       "github.com/anacrolix/torrent/metainfo"
+       "testing"
+       "path/filepath"
+       "os"
+       "github.com/anacrolix/torrent/dht"
+       "io"
+       "errors"
+       "fmt"
+       "runtime"
+)
+
+var numclients int = 0
+
+func cfdir() string {
+       numclients++
+       return filepath.Join(os.TempDir(), "wtp-test/", fmt.Sprintf("%d/", numclients))
+}
+
+func addirs(cf *Config) *Config {
+       d := cfdir()
+       os.MkdirAll(d, 0700)
+       cf.DataDir = filepath.Join(d, "/data")
+       os.MkdirAll(cf.DataDir, 0700)
+       cf.ConfigDir = filepath.Join(d, "/config")
+       os.MkdirAll(cf.ConfigDir, 0700)
+       return cf
+}
+
+func testingConfig() *Config {
+       return &Config{
+               ListenAddr:           "localhost:0",
+               NoDHT:                false,
+               DisableTrackers:      true,
+               NoDefaultBlocklist:   true,
+               DisableUTP:           false,
+               DisableMetainfoCache: true,
+               DisableIPv6:          true,
+               NoUpload:             false,
+               Seed:                 true,
+               DataDir:              filepath.Join(os.TempDir(), "torrent-test/data"),
+               ConfigDir:            filepath.Join(os.TempDir(), "torrent-test/config"),
+               DHTConfig:            &dht.ServerConfig{
+                       Passive: false,
+                       BootstrapNodes: []string{},
+                       NoSecurity: false,
+               },
+               Debug:                true,
+       }
+}
+
+func writeranddata(path string) error {
+       var w int64
+       var to_write int64 = 1024 * 1024 //1MB
+       f, err := os.Create(path)
+       defer f.Close()
+       if err != nil {
+               return err
+       }
+       rnd, err := os.Open("/dev/urandom")
+       defer rnd.Close()
+       if err != nil {
+               return err
+       }
+       w, err = io.CopyN(f, rnd, to_write)
+       if err != nil {
+               return err
+       }
+       if w != to_write {
+               return errors.New("Short read on /dev/random")
+       }
+       return nil
+}
+
+func TestInfohash(t *testing.T){
+       os.RemoveAll(filepath.Join(os.TempDir(), "torrent-test"))
+       os.MkdirAll(filepath.Join(os.TempDir(), "torrent-test"), 0700)
+       var cl_one *Client
+       var cf_one *Config
+       var err error
+       if err != nil {
+               t.Fatal(err)
+       }
+       cf_one = testingConfig()
+       cf_one.ListenAddr = "localhost:43433"
+       cf_one = addirs(cf_one)
+       cl_one, err = NewClient(cf_one)
+       if err != nil {
+               t.Fatal(err)
+       }
+       tfp := filepath.Join(cf_one.DataDir, "testdata")
+       writeranddata(tfp)
+       b := metainfo.Builder{}
+       b.AddFile(tfp)
+       b.AddDhtNodes([]string{fmt.Sprintf(cl_one.DHT().ID())})
+       ba, err := b.Submit()
+       if err != nil {
+               t.Fatal(err)
+       }
+       ttfp := filepath.Join(cf_one.ConfigDir, "/../torrent")
+       ttf, err := os.Create(ttfp)
+       if err != nil {
+               t.Fatal(err)
+       }
+       ec, _ := ba.Start(ttf, runtime.NumCPU())
+       err = <-ec
+       if err != nil {
+               t.Fatal(err)
+       }
+       ttf.Close()
+
+       tor, err := cl_one.AddTorrentFromFile(ttfp)
+       if err != nil {
+               t.Fatal(err)
+       }
+       <-tor.GotInfo()
+       tor.DownloadAll()
+       if cl_one.WaitAll() == false {
+               t.Fatal(errors.New("One did not download torrent"))
+       }
+}