From 5dbd993b4b8929feccd682fcb80c8ad8effd91f3 Mon Sep 17 00:00:00 2001 From: Marcos Date: Thu, 23 Jun 2016 20:57:21 +0200 Subject: [PATCH] Execute system call only once even if the node is not found --- src/Provider/Node/SystemNodeProvider.php | 3 ++- tests/src/Provider/Node/SystemNodeProviderTest.php | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Provider/Node/SystemNodeProvider.php b/src/Provider/Node/SystemNodeProvider.php index d3a27b3..cbcd089 100644 --- a/src/Provider/Node/SystemNodeProvider.php +++ b/src/Provider/Node/SystemNodeProvider.php @@ -25,7 +25,7 @@ class SystemNodeProvider implements NodeProviderInterface /** * Returns the system node ID * - * @return string System node ID as a hexadecimal string + * @return string|false System node ID as a hexadecimal string, or false if it is not found */ public function getNode() { @@ -40,6 +40,7 @@ class SystemNodeProvider implements NodeProviderInterface // Search the ifconfig output for all MAC addresses and return // the first one found + $node = false; if (preg_match_all($pattern, $this->getIfconfig(), $matches, PREG_PATTERN_ORDER)) { $node = $matches[1][0]; $node = str_replace(':', '', $node); diff --git a/tests/src/Provider/Node/SystemNodeProviderTest.php b/tests/src/Provider/Node/SystemNodeProviderTest.php index c28ceb7..edc49c3 100644 --- a/tests/src/Provider/Node/SystemNodeProviderTest.php +++ b/tests/src/Provider/Node/SystemNodeProviderTest.php @@ -71,6 +71,20 @@ class SystemNodeProviderTest extends TestCase $this->assertEquals('AABBCCDDEEFF', $node); } + public function testGetNodeWillNotExecuteSystemCallIfFailedFirstTime() + { + $provider = $this->getMockBuilder('Ramsey\Uuid\Provider\Node\SystemNodeProvider') + ->setMethods(['getIfconfig']) + ->getMock(); + + $provider->expects($this->once()) + ->method('getIfconfig') + ->willReturn('some string that does not match the mac address'); + + $provider->getNode(); + $provider->getNode(); + } + public function osCommandDataProvider() { return [