def testGetDeviceSnapshotForDate_noDateWithCluster(self, mock_get):
   # Test GetDeviceSnapshotForDate() without date for a cluster
   devices = [mock.MagicMock()]
   mock_get.return_value = devices
   snapshot = device_info_reporter.GetDeviceSnapshotForDate(cluster_prefix='c')
   self.assertEqual(devices, snapshot.devices)
   mock_get.assert_called_once_with(cluster_prefix='c')
Beispiel #2
0
    def GetDeviceSnapshot(self, request):
        """Gets a snapshot of all the devices and their properties for a given date.

    If no date is provided, it will return a snapshot of the current state of
    devices that would be reported.

    Args:
      request: an API request.
    Returns:
      a DeviceSnapshot object.
    """
        logging.info('GetDevicesSnapshot request: %s', request)
        date = None
        if request.date:
            date = dateutil.parser.parse(request.date).date()
        device_snapshot = device_info_reporter.GetDeviceSnapshotForDate(date)
        snapshot = DeviceSnapshot()
        snapshot.updateTime = device_snapshot.update_time
        # Message class does not support datetime.date so it has to be converted
        # to a datetime.datetime object
        report_date = datetime.datetime.combine(device_snapshot.date,
                                                ZERO_TIME)
        snapshot.date = report_date
        snapshot.devices = [
            datastore_entities.ToMessage(device_snapshot)
            for device_snapshot in device_snapshot.devices
        ]
        return snapshot
 def testGetDeviceSnapshotForDate_withCluster(self):
   # Test GetDeviceSnapshotForDate() with date for a cluster
   date_0 = datetime.date(2016, 7, 25)
   devices = device_info_reporter.GetDevicesToReport()
   device_snapshot_0 = device_info_reporter.DeviceSnapshot(
       date=date_0, update_time=TIMESTAMP, devices=devices)
   device_info_reporter.StoreDeviceSnapshot(device_snapshot_0)
   snapshot_0 = device_info_reporter.GetDeviceSnapshotForDate(
       date=date_0, cluster_prefix='fre')
   self.assertEqual(2, len(snapshot_0.devices))
   self.assertEqual(date_0, snapshot_0.date)
   self.assertEqual(TIMESTAMP, snapshot_0.update_time)
   snapshot_1 = device_info_reporter.GetDeviceSnapshotForDate(
       date=date_0, cluster_prefix='fro')
   self.assertEqual(0, len(snapshot_1.devices))
   self.assertEqual(date_0, snapshot_1.date)
   self.assertEqual(TIMESTAMP, snapshot_1.update_time)
 def testGetDeviceSnapshotForDate(self):
   # Test GetDeviceSnapshotForDate()
   date_0 = datetime.date(2016, 7, 25)
   date_1 = datetime.date(2016, 7, 26)
   devices = device_info_reporter.GetDevicesToReport()
   device_snapshot_0 = device_info_reporter.DeviceSnapshot(
       date=date_0, update_time=TIMESTAMP, devices=devices)
   device_info_reporter.StoreDeviceSnapshot(device_snapshot_0)
   device_snapshot_1 = device_info_reporter.DeviceSnapshot(
       date=date_1, update_time=TIMESTAMP, devices=[])
   device_info_reporter.StoreDeviceSnapshot(device_snapshot_1)
   snapshot_20160725 = device_info_reporter.GetDeviceSnapshotForDate(date_0)
   self.assertEqual(2, len(snapshot_20160725.devices))
   self.assertEqual(date_0, snapshot_20160725.date)
   self.assertEqual(TIMESTAMP, snapshot_20160725.update_time)
   snapshot_20160726 = device_info_reporter.GetDeviceSnapshotForDate(date_1)
   self.assertEqual(0, len(snapshot_20160726.devices))
   self.assertEqual(date_1, snapshot_20160726.date)
   self.assertEqual(TIMESTAMP, snapshot_20160726.update_time)
Beispiel #5
0
def BuildDailyRecord(date, aggregation, states, cluster_prefix=None):
  """Helper to build a DailyRecord.

  Args:
    date: Date of the records
    aggregation: Property to aggregate the devices by
    states: Device states to count
    cluster_prefix: cluster prefix filter
  Returns:
    A DailyRecord
  """
  snapshot = device_info_reporter.GetDeviceSnapshotForDate(
      date=date, cluster_prefix=cluster_prefix)
  devices = snapshot.devices
  record_groups = BuildRecordGroups(
      devices=devices, aggregation=aggregation, states=states)
  # Message class does not support datetime.date so it has to be converted
  # to a datetime.datetime object
  report_date = datetime.datetime.combine(snapshot.date, ZERO_TIME)
  return DailyRecord(
      date=report_date, updateDate=snapshot.update_time,
      recordGroups=record_groups)
 def testGetDeviceSnapshotForDate_noDate(self):
   # Test GetDeviceSnapshotForDate() when date is None
   snapshot = device_info_reporter.GetDeviceSnapshotForDate()
   self.assertEqual(2, len(snapshot.devices))