func TestHashPieceAfterStorageClosed(t *testing.T) { td, err := ioutil.TempDir("", "") require.NoError(t, err) defer os.RemoveAll(td) cs := storage.NewFile(td) tt := &Torrent{} tt.info = &testutil.GreetingMetaInfo().Info tt.makePieces() tt.storage, err = cs.OpenTorrent(tt.info) require.NoError(t, err) require.NoError(t, tt.storage.Close()) tt.hashPiece(0) }
func TestReaderReadContext(t *testing.T) { cl, err := NewClient(&TestingConfig) require.NoError(t, err) defer cl.Close() tt, err := cl.AddTorrent(testutil.GreetingMetaInfo()) require.NoError(t, err) defer tt.Drop() ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Millisecond)) r := tt.NewReader() defer r.Close() _, err = r.ReadContext(make([]byte, 1), ctx) require.EqualValues(t, context.DeadlineExceeded, err) }
func newGreetingLayout() (tl testLayout, err error) { tl.BaseDir, err = ioutil.TempDir("", "torrentfs") if err != nil { return } tl.Completed = filepath.Join(tl.BaseDir, "completed") os.Mkdir(tl.Completed, 0777) tl.MountDir = filepath.Join(tl.BaseDir, "mnt") os.Mkdir(tl.MountDir, 0777) testutil.CreateDummyTorrentData(tl.Completed) tl.Metainfo = testutil.GreetingMetaInfo() return }
func TestSetMaxEstablishedConn(t *testing.T) { var tts []*Torrent ih := testutil.GreetingMetaInfo().Info.Hash() cfg := TestingConfig for i := range iter.N(3) { cl, err := NewClient(&cfg) require.NoError(t, err) defer cl.Close() tt, _ := cl.AddTorrentInfoHash(ih) tt.SetMaxEstablishedConns(2) testutil.ExportStatusWriter(cl, fmt.Sprintf("%d", i)) tts = append(tts, tt) } addPeers := func() { for i, tt := range tts { for _, _tt := range tts[:i] { addClientPeer(tt, _tt.cl) } } } waitTotalConns := func(num int) { for totalConns(tts) != num { time.Sleep(time.Millisecond) } } addPeers() waitTotalConns(6) tts[0].SetMaxEstablishedConns(1) waitTotalConns(4) tts[0].SetMaxEstablishedConns(0) waitTotalConns(2) tts[0].SetMaxEstablishedConns(1) addPeers() waitTotalConns(4) tts[0].SetMaxEstablishedConns(2) addPeers() waitTotalConns(6) }