class_docstr: Test class for the AppIntegration
class_docstr_tok: ["Test","class","for","the","AppIntegration"]
docstr: App Integration - Finalize, Same Time Error
code: def test_finalize_same_time(self, log_mock):
      """App Integration - Finalize, Same Time Error"""
      self._app._last_timestamp = self._app._config.start_last_timestamp
      self._app._finalize()
      calls = [
          call(
              "Ending last timestamp is the same as "
              "the beginning last timestamp. This could occur if "
              "there were no logs collected for this execution."
          ),
          call(
              "[%s] App complete; gathered %d logs in %d polls.",
              self._app,
              0,
              0,
          ),
      ]
      log_mock.assert_has_calls(calls)
  
imports: import os
  from botocore.exceptions import ClientError
  from mock import call, Mock, patch
  from moto import mock_ssm
  from nose.tools import assert_equal, assert_false, assert_is_instance, assert_is_none, assert_true, raises
  import requests
  from requests.exceptions import ConnectTimeout
  from streamalert.apps import StreamAlertApp
  from streamalert.apps.app_base import AppIntegration, safe_timeout, _report_time
  from streamalert.apps._apps.duo import DuoAuthApp
  from streamalert.apps.exceptions import AppException
  from tests.unit.streamalert.apps.test_helpers import get_event, put_mock_params
  from tests.unit.streamalert.shared.test_config import get_mock_lambda_context
label_desc: Use image node_id 15 for calling the TestAppIntegration obj's underlying member method code with example usage: obj.test_finalize_same_time(log_mock) without return types