sysmon: Report network addresses as metrics

BUG=chromium:757494
TEST=unittests, manually run sysmon to verify metrics

Change-Id: I7f5f0fe7170ce178bfd746ce54af266de28ce1ad
Reviewed-on: https://chromium-review.googlesource.com/624461
Commit-Ready: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Prathmesh Prabhu <pprabhu@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
Reviewed-by: Allen Li <ayatane@chromium.org>
diff --git a/scripts/sysmon/net_metrics_unittest.py b/scripts/sysmon/net_metrics_unittest.py
index 08a0918..7bc29c4 100644
--- a/scripts/sysmon/net_metrics_unittest.py
+++ b/scripts/sysmon/net_metrics_unittest.py
@@ -10,6 +10,7 @@
 from __future__ import print_function
 
 import mock
+import socket
 
 import psutil
 
@@ -19,6 +20,7 @@
 
 snetio = psutil._common.snetio
 snicstats = psutil._common.snicstats
+snic = psutil._common.snic
 
 
 class TestNetMetrics(cros_test_lib.TestCase):
@@ -34,7 +36,8 @@
     with mock.patch('psutil.net_io_counters', autospec=True) \
              as net_io_counters, \
          mock.patch('psutil.net_if_stats', autospec=True) as net_if_stats, \
-         mock.patch('socket.getfqdn', autospec=True) as getfqdn:
+         mock.patch('socket.getfqdn', autospec=True) as getfqdn, \
+         mock.patch('psutil.net_if_addrs', autospec=True) as net_if_addrs:
       net_io_counters.return_value = {
           'lo': snetio(
               bytes_sent=17247495681, bytes_recv=172474956,
@@ -45,6 +48,17 @@
           'lo': snicstats(isup=True, duplex=0, speed=0, mtu=65536),
       }
       getfqdn.return_value = 'foo.example.com'
+      net_if_addrs.return_value = {
+          'lo': [
+              snic(family=psutil.AF_LINK, address='11:22:33:44:55:66',
+                   netmask=None, broadcast=None, ptp=None),
+              snic(family=socket.AF_INET, address='10.1.1.1', netmask=None,
+                   broadcast=None, ptp=None),
+              snic(family=socket.AF_INET6,
+                   address='fc00:0000:0000:0000:0000:0000:0000:0001',
+                   netmask=None, broadcast=None, ptp=None),
+          ],
+      }
       net_metrics.collect_net_info()
 
     setter = self.store.set
@@ -75,6 +89,13 @@
                   65536, enforce_ge=mock.ANY),
         mock.call('net/fqdn', (), None,
                   'foo.example.com', enforce_ge=mock.ANY),
+        mock.call('dev/net/address', ('AF_LINK', 'lo'), None,
+                  '11:22:33:44:55:66', enforce_ge=mock.ANY),
+        mock.call('dev/net/address', ('AF_INET', 'lo',), None,
+                  '10.1.1.1', enforce_ge=mock.ANY),
+        mock.call('dev/net/address', ('AF_INET6', 'lo'), None,
+                  'fc00:0000:0000:0000:0000:0000:0000:0001',
+                  enforce_ge=mock.ANY),
     ]
     setter.assert_has_calls(calls)
     self.assertEqual(len(setter.mock_calls), len(calls))