def testReportMetrics_NoFailures(self, containsMock, addMock, removeMock,
                                     sendEmailMock):
        monitoredResource = ""
        emailParams = {}
        metrics = []

        # Test
        monitor._reportMetrics(monitoredResource, metrics, emailParams)

        self.assertFalse(containsMock.called)
        self.assertFalse(addMock.called)
        self.assertFalse(sendEmailMock.called)
        self.assertTrue(removeMock.called)
  def testReportMetrics_NoFailures(self, containsMock, addMock, removeMock,
                                   sendEmailMock):
    monitoredResource = ""
    emailParams = {}
    metrics = []

    # Test
    monitor._reportMetrics(monitoredResource, metrics, emailParams)

    self.assertFalse(containsMock.called)
    self.assertFalse(addMock.called)
    self.assertFalse(sendEmailMock.called)
    self.assertTrue(removeMock.called)
    def testReportMetrics_HasFailures(self, containsMock, addMock, removeMock,
                                      sendEmailMock):
        monitoredResource = ""
        metrics = ["1", "2", "3"]
        emailParams = {}
        containsMock.return_value = False

        # Test
        monitor._reportMetrics(monitoredResource, metrics, emailParams)

        self.assertTrue(containsMock.called)
        self.assertTrue(addMock.called)
        self.assertTrue(sendEmailMock.called)

        sendEmailMock.assert_called_once_with(
            monitorName=monitor._MONITOR_NAME,
            resourceName=monitoredResource,
            message=
            ("The following rows of metric_data table were out of order:\nUID "
             "\tcount(rowid) \tmin(rowid) \tmax(rowid) \tmin(timestamp) "
             "\tmax(timestamp) \tmetric name\n1\n2\n3\n"),
            params={})

        self.assertFalse(removeMock.called)
  def testReportMetrics_HasFailures(self, containsMock, addMock, removeMock,
                                    sendEmailMock):
    monitoredResource = ""
    metrics = ["1", "2", "3"]
    emailParams = {}
    containsMock.return_value = False

    # Test
    monitor._reportMetrics(monitoredResource, metrics, emailParams)

    self.assertTrue(containsMock.called)
    self.assertTrue(addMock.called)
    self.assertTrue(sendEmailMock.called)

    sendEmailMock.assert_called_once_with(
      monitorName=monitor._MONITOR_NAME,
      resourceName=monitoredResource,
      message=(
        "The following rows of metric_data table were out of order:\nUID "
        "\tcount(rowid) \tmin(rowid) \tmax(rowid) \tmin(timestamp) "
        "\tmax(timestamp) \tmetric name\n1\n2\n3\n"),
      params={})

    self.assertFalse(removeMock.called)