From 764a6bdf1dfdeec10b9e7a561894f0c76bf95e47 Mon Sep 17 00:00:00 2001 From: Diptanu Choudhury Date: Wed, 28 Oct 2015 15:58:40 -0700 Subject: [PATCH] Introduced an interface to detect network devices so that we can mock it for tests --- client/fingerprint/network_unix.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/client/fingerprint/network_unix.go b/client/fingerprint/network_unix.go index 04f54285f..053743e63 100644 --- a/client/fingerprint/network_unix.go +++ b/client/fingerprint/network_unix.go @@ -19,13 +19,30 @@ import ( // NetworkFingerprint is used to fingerprint the Network capabilities of a node type NetworkFingerprint struct { - logger *log.Logger + logger *log.Logger + interfaceDetector NetworkInterfaceDetector +} + +type NetworkInterfaceDetector interface { + Interfaces() ([]net.Interface, error) + InterfaceByName(name string) (*net.Interface, error) +} + +type BasicNetworkInterfaceDetector struct { +} + +func (b *BasicNetworkInterfaceDetector) Interfaces() ([]net.Interface, error) { + return net.Interfaces() +} + +func (b *BasicNetworkInterfaceDetector) InterfaceByName(name string) (*net.Interface, error) { + return net.InterfaceByName(name) } // NewNetworkFingerprinter returns a new NetworkFingerprinter with the given // logger func NewNetworkFingerprinter(logger *log.Logger) Fingerprint { - f := &NetworkFingerprint{logger: logger} + f := &NetworkFingerprint{logger: logger, interfaceDetector: &BasicNetworkInterfaceDetector{}} return f } @@ -195,12 +212,12 @@ func (f *NetworkFingerprint) findInterface(deviceName string) (*net.Interface, e var err error if deviceName != "" { - return net.InterfaceByName(deviceName) + return f.interfaceDetector.InterfaceByName(deviceName) } var intfs []net.Interface - if intfs, err = net.Interfaces(); err != nil { + if intfs, err = f.interfaceDetector.Interfaces(); err != nil { return nil, err }