class_docstr: Test class for the DuoApp
docstr: DuoApp - Gather Logs Entry Point
docstr_tok: ["DuoApp","-","Gather","Logs","Entry","Point"]
code: def test_gather_logs(self, requests_mock):
      """DuoApp - Gather Logs Entry Point"""
      log_count = 3
      base_time = 1505591612
      logs = self._get_sample_logs(log_count, base_time)
  
      requests_mock.return_value = Mock(
          status_code=200, json=Mock(return_value={"response": logs})
      )
  
      gathered_logs = self._app._gather_logs()
      assert_equal(len(gathered_logs), log_count)
      assert_equal(self._app._last_timestamp, base_time + log_count - 1)
  
imports: import os
  from mock import Mock, patch
  from moto import mock_ssm
  from nose.tools import assert_equal, assert_false, assert_count_equal, raises
  import requests
  from streamalert.apps._apps.duo import DuoAdminApp, DuoApp, DuoAuthApp
  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 9 for calling the TestDuoApp obj's underlying member method code with example usage: obj.test_gather_logs(requests_mock) without return types