From 13926217d9ada76cc63c8f269e04c50f799486b3 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 6 Jan 2019 18:07:59 +0100 Subject: [PATCH] oui_test: fix data race when overriding ouiURL --- internal/oui/oui.go | 13 ++++++++++++- internal/oui/oui_test.go | 12 ++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/internal/oui/oui.go b/internal/oui/oui.go index 56abca5..c08707b 100644 --- a/internal/oui/oui.go +++ b/internal/oui/oui.go @@ -32,15 +32,26 @@ type DB struct { orgs map[string]string } +type option func(d *DB) + +func ouiURL(u string) option { + return func(d *DB) { + d.ouiURL = u + } +} + // NewDB loads a database from the cached version in dir, if any, and // asynchronously triggers an update. Use WaitUntilLoaded() to ensure Lookup() // will work, or use Lookup() opportunistically at any time. -func NewDB(dir string) *DB { +func NewDB(dir string, opts ...option) *DB { db := &DB{ dir: dir, ouiURL: "http://standards-oui.ieee.org/oui/oui.csv", } db.cond = sync.NewCond(&db.Mutex) + for _, o := range opts { + o(db) + } go db.update() return db } diff --git a/internal/oui/oui_test.go b/internal/oui/oui_test.go index a37fcb6..295377f 100644 --- a/internal/oui/oui_test.go +++ b/internal/oui/oui_test.go @@ -33,8 +33,7 @@ MA-L,4409B8,"Salcomp (Shenzhen) CO., LTD.","Salcomp Road, Furong Industrial Area })) defer srv.Close() - db := NewDB(tmpdir) - db.ouiURL = srv.URL + db := NewDB(tmpdir, ouiURL(srv.URL)) if err := db.WaitUntilLoaded(); err != nil { t.Fatal(err) } @@ -56,8 +55,7 @@ MA-L,4409B8,"Salcomp (Shenzhen) CO., LTD.","Salcomp Road, Furong Industrial Area })) defer srv.Close() - db := NewDB(tmpdir) - db.ouiURL = srv.URL + db := NewDB(tmpdir, ouiURL(srv.URL)) if err := db.WaitUntilLoaded(); err != nil { t.Fatal(err) } @@ -87,8 +85,7 @@ MA-L,4409B8,"Salcomp (Shenzhen) CO., LTD.","Salcomp Road, Furong Industrial Area })) defer srv.Close() - db := NewDB(tmpdir) - db.ouiURL = srv.URL + db := NewDB(tmpdir, ouiURL(srv.URL)) if err := db.WaitUntilLoaded(); err != nil { t.Fatal(err) } @@ -121,8 +118,7 @@ MA-L,F09FC2,Obiquiti Networks Inc.,2580 Orchard Parkway San Jose CA US 95131 })) defer srv.Close() - db := NewDB(tmpdir) - db.ouiURL = srv.URL + db := NewDB(tmpdir, ouiURL(srv.URL)) if err := db.WaitUntilLoaded(); err != nil { t.Fatal(err) }