]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add a test case for #114 (#117)
authorMichael Howell <michael@notriddle.com>
Fri, 16 Sep 2016 14:01:15 +0000 (07:01 -0700)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 16 Sep 2016 14:01:15 +0000 (00:01 +1000)
client_test.go

index 1e67ba3d92eb14be9f2b31b77488435302034927..e23f7250f24cbf2a23c7c73343e3c05a75c7d7a4 100644 (file)
@@ -1022,3 +1022,56 @@ func TestSetMaxEstablishedConn(t *testing.T) {
        addPeers()
        waitTotalConns(6)
 }
+
+func makeMagnet(t *testing.T, cl *Client, dir string, name string) string {
+       var err error
+       file, err := os.Create(dir + "/" + name)
+       require.NoError(t, err)
+       file.Write([]byte(name))
+       file.Close()    
+       mi := metainfo.MetaInfo{}
+       mi.SetDefaults()
+       info := metainfo.Info{ PieceLength: 256 * 1024 }
+       err = info.BuildFromFilePath(dir + "/" + name)
+       require.NoError(t, err)
+       mi.InfoBytes, err = bencode.Marshal(info)
+       require.NoError(t, err)
+       magnet := mi.Magnet(name, mi.HashInfoBytes()).String()
+       tr, err := cl.AddTorrent(&mi)
+       require.NoError(t, err)
+       assert.True(t, tr.Seeding())
+       return magnet
+}
+
+// https://github.com/anacrolix/torrent/issues/114
+func TestMultipleTorrentsWithEncryption(t *testing.T) {
+       cfg := TestingConfig
+       cfg.DisableUTP = true
+       cfg.Seed = true
+       cfg.DataDir = cfg.DataDir + "/server"
+       cfg.Debug = true
+       cfg.ForceEncryption = true
+       os.Mkdir(cfg.DataDir, 0755)
+       server, err := NewClient(&cfg)
+       defer server.Close()
+       require.NoError(t, err)
+       magnet1 := makeMagnet(t, server, cfg.DataDir, "test1")
+       makeMagnet(t, server, cfg.DataDir, "test2")
+       cfg = TestingConfig
+       cfg.DisableUTP = true
+       cfg.DataDir = cfg.DataDir + "/client"
+       cfg.Debug = true
+       cfg.ForceEncryption = true
+       client, err := NewClient(&cfg)
+       require.NoError(t, err)
+       defer client.Close()
+       tr, err := client.AddMagnet(magnet1)
+       require.NoError(t, err)
+       tr.AddPeers([]Peer{Peer{
+               IP: missinggo.AddrIP(server.ListenAddr()),
+               Port: missinggo.AddrPort(server.ListenAddr()),
+               }})
+       <- tr.GotInfo()
+       tr.DownloadAll()
+       client.WaitAll()
+}