Пример #1
0
    def test_import_all_flag(self):
        self.test_many_results()

        # Borro un dato, y me aseguro que se regenera con import_all
        Query.objects.first().delete()
        enqueue_new_import_analytics_task(requests_lib=FakeRequests([{
            'next':
            None,
            'count':
            1,
            'results': [{
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-07T05:00:00-03:00',
                'id': 1,
                'uri': '/series/api/series/',
            }, {
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-08T05:00:01-03:00',
                'id': 2,
                'uri': '/series/api/series/',
            }]
        }]),
                                          import_all=True)
        self.assertEqual(Query.objects.count(), 2)
Пример #2
0
    def test_cursor_is_preserved_between_runs(self):
        return_value = [{
            'next':
            'http://next_page_url/?cursor=next_cursor',
            'count':
            2,
            'results': [{
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-07T05:00:00-03:00',
                'id': 2,
                'uri': '/series/api/series/',
            }]
        }, {
            'next':
            None,
            'count':
            2,
            'results': [{
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-07T05:00:00-03:00',
                'id': 3,
                'uri': '/series/api/series/',
            }]
        }]
        enqueue_new_import_analytics_task(requests_lib=FakeRequests(
            responses=return_value))

        self.assertIsNotNone(ImportConfig.get_solo().last_cursor)
Пример #3
0
    def test_multiple_page_results(self):
        """Emula una query con dos páginas de resultados, cada una con una query"""
        return_value = [{
            'next':
            'http://next_page_url/?cursor=next_cursor',
            'count':
            2,
            'results': [{
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-07T05:00:00-03:00',
                'id': 2,
                'uri': '/series/api/series/',
            }]
        }, {
            'next':
            None,
            'count':
            2,
            'results': [{
                'ip_address': '127.0.0.1',
                'querystring': '',
                'start_time': '2018-06-07T05:00:00-03:00',
                'id': 3,
                'uri': '/series/api/series/',
            }]
        }]
        enqueue_new_import_analytics_task(requests_lib=FakeRequests(
            responses=return_value))

        self.assertEqual(Query.objects.count(), 2)
 def test_import_response_time(self):
     request_time = str(
         fake.pyfloat(left_digits=1, right_digits=10, positive=True))
     enqueue_new_import_analytics_task(index_to_es=False,
                                       requests_lib=FakeRequests([{
                                           'next':
                                           None,
                                           'count':
                                           1,
                                           'results': [{
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               1,
                                               'request_time':
                                               request_time,
                                               'uri':
                                               '/series/api/series',
                                           }]
                                       }]))
     self.assertEqual(Query.objects.count(), 1)
     self.assertEqual(Query.objects.first().request_time,
                      Decimal(request_time))
 def test_many_results(self):
     enqueue_new_import_analytics_task(index_to_es=False,
                                       requests_lib=FakeRequests([{
                                           'next':
                                           None,
                                           'count':
                                           1,
                                           'results': [{
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               1,
                                               'uri':
                                               '/series/api/series/',
                                           }, {
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:01-03:00',
                                               'id':
                                               2,
                                               'uri':
                                               '/series/api/series/',
                                           }]
                                       }]))
     self.assertEqual(Query.objects.count(), 2)
 def test_import_user_agent_field(self):
     agent = fake.word()
     enqueue_new_import_analytics_task(index_to_es=False,
                                       requests_lib=FakeRequests([{
                                           'next':
                                           None,
                                           'count':
                                           1,
                                           'results': [{
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               1,
                                               'user_agent':
                                               agent,
                                               'uri':
                                               '/series/api/series',
                                           }]
                                       }]))
     self.assertEqual(Query.objects.count(), 1)
     self.assertEqual(Query.objects.first().user_agent, agent)
 def test_import_status_code_field(self):
     status_code = 200
     enqueue_new_import_analytics_task(index_to_es=False,
                                       requests_lib=FakeRequests([{
                                           'next':
                                           None,
                                           'count':
                                           1,
                                           'results': [{
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               1,
                                               'status_code':
                                               status_code,
                                               'uri':
                                               '/series/api/series',
                                               'request_method':
                                               'GET',
                                           }]
                                       }]))
     self.assertEqual(Query.objects.count(), 1)
     self.assertEqual(Query.objects.first().status_code, status_code)
Пример #8
0
    def test_single_empty_result(self):
        enqueue_new_import_analytics_task(
            requests_lib=FakeRequests([{
                'next': None,
                'count': 0,
                'results': []
            }]))

        self.assertEqual(Query.objects.count(), 0)
Пример #9
0
    def test_without_import_all_model_is_not_recreated(self):
        self.test_many_results()

        # Borro un dato. Si no le paso import_all=True, no se va a crear de nuevo
        Query.objects.all().order_by('-timestamp').last().delete()
        enqueue_new_import_analytics_task(requests_lib=FakeRequests([{
            'next':
            None,
            'count':
            0,
            'results': []
        }]),
                                          import_all=False)
        self.assertEqual(Query.objects.count(), 1)
Пример #10
0
 def test_ignore_not_series_uri(self):
     enqueue_new_import_analytics_task(requests_lib=FakeRequests([{
         'next':
         None,
         'count':
         1,
         'results': [{
             'ip_address': '127.0.0.1',
             'querystring': '',
             'start_time': '2018-06-07T05:00:00-03:00',
             'id': 1,
             'uri': '/series/not_series_endpoint/',
         }]
     }]))
     self.assertEqual(Query.objects.count(), 0)
Пример #11
0
 def test_import_uri_field(self):
     uri = '/series/api/series'
     enqueue_new_import_analytics_task(requests_lib=FakeRequests([{
         'next':
         None,
         'count':
         1,
         'results': [{
             'ip_address': '127.0.0.1',
             'querystring': '',
             'start_time': '2018-06-07T05:00:00-03:00',
             'id': 1,
             'uri': uri,
         }]
     }]))
     self.assertEqual(Query.objects.count(), 1)
     self.assertEqual(Query.objects.first().uri, uri)
Пример #12
0
 def test_run_import_twice(self):
     results = [{
         'next':
         None,
         'count':
         1,
         'results': [{
             'ip_address': '127.0.0.1',
             'querystring': '',
             'start_time': '2018-06-07T05:00:00-03:00',
             'id': 1,
             'uri': '/series/api/series/',
         }]
     }]
     enqueue_new_import_analytics_task(requests_lib=FakeRequests(results))
     enqueue_new_import_analytics_task(requests_lib=FakeRequests(results))
     # Esperado: que haya un solo objeto query, no se dupliquen los resultados
     self.assertEqual(Query.objects.count(), 1)
Пример #13
0
 def test_not_initialized_model(self):
     enqueue_new_import_analytics_task()
     self.assertTrue('Error' in AnalyticsImportTask.objects.last().logs)
Пример #14
0
 def test_filter_options_queries(self):
     request_time = str(
         fake.pyfloat(left_digits=1, right_digits=10, positive=True))
     enqueue_new_import_analytics_task(index_to_es=False,
                                       requests_lib=FakeRequests([{
                                           'next':
                                           None,
                                           'count':
                                           4,
                                           'results': [{
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               1,
                                               'uri':
                                               '/series/api/series/',
                                               'request_method':
                                               'GET',
                                           }, {
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               2,
                                               'uri':
                                               '/series/api/series/',
                                               'request_method':
                                               'OPTIONS',
                                           }, {
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               3,
                                               'uri':
                                               '/series/api/series/',
                                               'request_method':
                                               'HEAD',
                                           }, {
                                               'ip_address':
                                               '127.0.0.1',
                                               'querystring':
                                               '',
                                               'start_time':
                                               '2018-06-07T05:00:00-03:00',
                                               'id':
                                               4,
                                               'uri':
                                               '/series/api/series/',
                                               'request_method':
                                               'OPTIONS',
                                           }]
                                       }]))
     self.assertEqual(Query.objects.count(), 2)
Пример #15
0
 def test_not_initialized_model(self):
     enqueue_new_import_analytics_task(index_to_es=False)
Пример #16
0
 def handle(self, *args, **options):
     import_all = options['all']
     enqueue_new_import_analytics_task(import_all=import_all)