From 7cfa862f2cb2e4be9927b42d962f17a81580e5b7 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Sun, 11 Oct 2015 02:33:05 -0400 Subject: [PATCH] decouple HTTP tests from API usage --- http/announce_test.go | 57 ++++++++++++++++++++----------------------- http/http_test.go | 15 +++++++++--- http/scrape_test.go | 3 +-- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/http/announce_test.go b/http/announce_test.go index 1406cea..64d79ef 100644 --- a/http/announce_test.go +++ b/http/announce_test.go @@ -5,9 +5,7 @@ package http import ( - "net/http" "net/http/httptest" - "net/url" "reflect" "strconv" "testing" @@ -20,7 +18,7 @@ import ( ) func TestPublicAnnounce(t *testing.T) { - srv, err := setupTracker(&config.DefaultConfig) + srv, err := setupTracker(nil, nil) if err != nil { t.Fatal(err) } @@ -49,24 +47,25 @@ func TestPublicAnnounce(t *testing.T) { } func TestTorrentPurging(t *testing.T) { - cfg := config.DefaultConfig - srv, err := setupTracker(&cfg) + tkr, err := tracker.New(&config.DefaultConfig) + if err != nil { + t.Fatalf("failed to create new tracker instance: %s", err) + } + + srv, err := setupTracker(nil, tkr) if err != nil { t.Fatal(err) } defer srv.Close() - torrentAPIPath := srv.URL + "/torrents/" + url.QueryEscape(infoHash) - // Add one seeder. peer := makePeerParams("peer1", true) announce(peer, srv) - _, status, err := fetchPath(torrentAPIPath) + // Make sure the torrent was created. + _, err = tkr.FindTorrent(infoHash) if err != nil { - t.Fatal(err) - } else if status != http.StatusOK { - t.Fatalf("expected torrent to exist (got %s)", http.StatusText(status)) + t.Fatalf("expected torrent to exist after announce: %s", err) } // Remove seeder. @@ -74,11 +73,9 @@ func TestTorrentPurging(t *testing.T) { peer["event"] = "stopped" announce(peer, srv) - _, status, err = fetchPath(torrentAPIPath) - if err != nil { - t.Fatal(err) - } else if status != http.StatusNotFound { - t.Fatalf("expected torrent to have been purged (got %s)", http.StatusText(status)) + _, err = tkr.FindTorrent(infoHash) + if err != models.ErrTorrentDNE { + t.Fatalf("expected torrent to have been purged: %s", err) } } @@ -87,23 +84,25 @@ func TestStalePeerPurging(t *testing.T) { cfg.MinAnnounce = config.Duration{10 * time.Millisecond} cfg.ReapInterval = config.Duration{10 * time.Millisecond} - srv, err := setupTracker(&cfg) + tkr, err := tracker.New(&cfg) + if err != nil { + t.Fatalf("failed to create new tracker instance: %s", err) + } + + srv, err := setupTracker(&cfg, tkr) if err != nil { t.Fatal(err) } defer srv.Close() - torrentAPIPath := srv.URL + "/torrents/" + url.QueryEscape(infoHash) - // Add one seeder. peer1 := makePeerParams("peer1", true) announce(peer1, srv) - _, status, err := fetchPath(torrentAPIPath) + // Make sure the torrent was created. + _, err = tkr.FindTorrent(infoHash) if err != nil { - t.Fatal(err) - } else if status != http.StatusOK { - t.Fatalf("expected torrent to exist (got %s)", http.StatusText(status)) + t.Fatalf("expected torrent to exist after announce: %s", err) } // Add a leecher. @@ -115,11 +114,9 @@ func TestStalePeerPurging(t *testing.T) { // Let them both expire. time.Sleep(30 * time.Millisecond) - _, status, err = fetchPath(torrentAPIPath) - if err != nil { - t.Fatal(err) - } else if status != http.StatusNotFound { - t.Fatalf("expected torrent to have been purged (got %s)", http.StatusText(status)) + _, err = tkr.FindTorrent(infoHash) + if err != models.ErrTorrentDNE { + t.Fatalf("expected torrent to have been purged: %s", err) } } @@ -170,7 +167,7 @@ func TestPreferredSubnet(t *testing.T) { cfg.PreferredIPv6Subnet = 16 cfg.DualStackedPeers = false - srv, err := setupTracker(&cfg) + srv, err := setupTracker(&cfg, nil) if err != nil { t.Fatal(err) } @@ -235,7 +232,7 @@ func TestPreferredSubnet(t *testing.T) { } func TestCompactAnnounce(t *testing.T) { - srv, err := setupTracker(&config.DefaultConfig) + srv, err := setupTracker(nil, nil) if err != nil { t.Fatal(err) } diff --git a/http/http_test.go b/http/http_test.go index 19a7aca..8e102dc 100644 --- a/http/http_test.go +++ b/http/http_test.go @@ -27,10 +27,17 @@ func init() { stats.DefaultStats = stats.New(config.StatsConfig{}) } -func setupTracker(cfg *config.Config) (*httptest.Server, error) { - tkr, err := tracker.New(cfg) - if err != nil { - return nil, err +func setupTracker(cfg *config.Config, tkr *tracker.Tracker) (*httptest.Server, error) { + if cfg == nil { + cfg = &config.DefaultConfig + } + + if tkr == nil { + var err error + tkr, err = tracker.New(cfg) + if err != nil { + return nil, err + } } return createServer(tkr, cfg) } diff --git a/http/scrape_test.go b/http/scrape_test.go index 8dc89f1..e2c174a 100644 --- a/http/scrape_test.go +++ b/http/scrape_test.go @@ -13,11 +13,10 @@ import ( "testing" "github.com/chihaya/bencode" - "github.com/chihaya/chihaya/config" ) func TestPublicScrape(t *testing.T) { - srv, err := setupTracker(&config.DefaultConfig) + srv, err := setupTracker(nil, nil) if err != nil { t.Fatal(err) }