示例#1
0
    def _send_to_es_and_check(self,
                              doc,
                              update=False,
                              es_merge_update=False,
                              delete=False,
                              esgetter=None):
        if update and es_merge_update:
            old_doc = self.es_interface.get_doc(self.es_alias,
                                                TEST_INDEX_INFO.type,
                                                doc['_id'])

        send_to_elasticsearch(TEST_INDEX_INFO,
                              doc_type=TEST_INDEX_INFO.type,
                              doc_id=doc['_id'],
                              es_getter=esgetter or get_es_new,
                              name='test',
                              data=doc,
                              es_merge_update=es_merge_update,
                              delete=delete)

        if not delete:
            self.assertEqual(1, get_doc_count(self.es, self.index))
            es_doc = self.es_interface.get_doc(self.es_alias,
                                               TEST_INDEX_INFO.type,
                                               doc['_id'])
            if es_merge_update:
                old_doc.update(es_doc)
                for prop in doc:
                    self.assertEqual(doc[prop], old_doc[prop])
            else:
                for prop in doc:
                    self.assertEqual(doc[prop], es_doc[prop])
                self.assertTrue(all(prop in doc for prop in es_doc))
        else:
            self.assertEqual(0, get_doc_count(self.es, self.index))
示例#2
0
    def _send_to_es_and_check(self, doc, update=False, es_merge_update=False,
                              delete=False, esgetter=None):
        if update and es_merge_update:
            old_doc = self.es.get_source(self.index, TEST_INDEX_INFO.type, doc['_id'])

        send_to_elasticsearch(
            index=self.index,
            doc_type=TEST_INDEX_INFO.type,
            doc_id=doc['_id'],
            es_getter=esgetter or get_es_new,
            name='test',
            data=doc,
            update=update,
            es_merge_update=es_merge_update,
            delete=delete,
            except_on_failure=True,
            retries=1
        )

        if not delete:
            self.assertEqual(1, get_doc_count(self.es, self.index))
            es_doc = self.es.get_source(self.index, TEST_INDEX_INFO.type, doc['_id'])
            if es_merge_update:
                old_doc.update(es_doc)
                for prop in doc:
                    self.assertEqual(doc[prop], old_doc[prop])
            else:
                for prop in doc:
                    self.assertEqual(doc[prop], es_doc[prop])
                self.assertTrue(all(prop in doc for prop in es_doc))
        else:
            self.assertEqual(0, get_doc_count(self.es, self.index))
示例#3
0
    def _send_to_es_and_check(self,
                              doc,
                              update=False,
                              delete=False,
                              esgetter=None):
        send_to_elasticsearch(index=self.index,
                              doc_type=TEST_INDEX_INFO.type,
                              doc_id=doc['_id'],
                              es_getter=esgetter or get_es_new,
                              name='test',
                              data=doc,
                              update=update,
                              delete=delete,
                              except_on_failure=True,
                              retries=1)

        if not delete:
            self.assertEqual(1, get_doc_count(self.es, self.index))
            es_doc = self.es.get_source(self.index, TEST_INDEX_INFO.type,
                                        doc['_id'])
            for prop in doc:
                self.assertEqual(doc[prop], es_doc[prop])
            self.assertTrue(all(prop in doc for prop in es_doc))
        else:
            self.assertEqual(0, get_doc_count(self.es, self.index))
示例#4
0
 def test_assume_alias(self):
     initialize_index_and_mapping(self.es, TEST_INDEX_INFO)
     doc_id = uuid.uuid4().hex
     doc = {'_id': doc_id, 'doc_type': 'CommCareCase', 'type': 'mother'}
     send_to_elasticsearch(self.index, TEST_INDEX_INFO.type, doc_id, get_es_new, 'test', doc)
     self.assertEqual(1, get_doc_count(self.es, self.index))
     assume_alias(self.es, self.index, TEST_INDEX_INFO.alias)
     es_doc = self.es.get_source(TEST_INDEX_INFO.alias, TEST_INDEX_INFO.type, doc_id)
     for prop in doc:
         self.assertEqual(doc[prop], es_doc[prop])
示例#5
0
 def test_assume_alias(self):
     initialize_index_and_mapping(self.es, TEST_INDEX_INFO)
     doc_id = uuid.uuid4().hex
     doc = {'_id': doc_id, 'doc_type': 'CommCareCase', 'type': 'mother'}
     send_to_elasticsearch(self.index, TEST_INDEX_INFO.type, doc_id,
                           get_es_new, 'test', doc)
     self.assertEqual(1, get_doc_count(self.es, self.index))
     assume_alias(self.es, self.index, TEST_INDEX_INFO.alias)
     es_doc = self.es_interface.get_doc(TEST_INDEX_INFO.alias,
                                        TEST_INDEX_INFO.type, doc_id)
     for prop in doc:
         self.assertEqual(doc[prop], es_doc[prop])
示例#6
0
 def test_missing_merge(self):
     doc = {'_id': uuid.uuid4().hex, 'doc_type': 'MyCoolDoc', 'property': 'bar'}
     send_to_elasticsearch(
         TEST_INDEX_INFO,
         doc_type=TEST_INDEX_INFO.type,
         doc_id=doc['_id'],
         es_getter=get_es_new,
         name='test',
         data=doc,
         es_merge_update=True,
     )
     self.assertEqual(0, get_doc_count(self.es, self.index))
示例#7
0
 def _send_to_es(self, doc, es_merge_update=False, delete=False,
                 esgetter=None):
     send_to_elasticsearch(
         TEST_INDEX_INFO,
         doc_type=TEST_INDEX_INFO.type,
         doc_id=doc['_id'],
         es_getter=esgetter or get_es_new,
         name='test',
         data=doc,
         es_merge_update=es_merge_update,
         delete=delete
     )
示例#8
0
 def _set_up_sms_es(self):
     sms_doc = {
         '_id': 'some_sms_id',
         'domain': self.domain.name,
         'direction': INCOMING,
         'date': json_format_datetime(datetime.datetime.utcnow()),
         'doc_type': SMS_INDEX_INFO.type,
     }
     send_to_elasticsearch(
         alias=SMS_INDEX_INFO.alias,
         doc_type=SMS_INDEX_INFO.type,
         doc_id=sms_doc['_id'],
         es_getter=get_es_new,
         name='ElasticProcessor',
         data=sms_doc,
         update=False,
     )
     refresh_elasticsearch_index('sms')
示例#9
0
    def _send_to_es_mock_errors(self, exception, retries):
        doc = {'_id': uuid.uuid4().hex, 'doc_type': 'MyCoolDoc', 'property': 'bar'}

        with mock.patch("pillowtop.processors.elastic._propagate_failure", return_value=False), \
             mock.patch("pillowtop.processors.elastic._retries", return_value=retries), \
             mock.patch("pillowtop.processors.elastic._sleep_between_retries"), \
             mock.patch("pillowtop.processors.elastic._get_es_interface") as _get_es_interface, \
             capture_log_output("pillowtop") as log:
            es_interface = mock.Mock()
            es_interface.index_doc.side_effect = exception
            _get_es_interface.return_value = es_interface
            send_to_elasticsearch(
                TEST_INDEX_INFO,
                doc_type=TEST_INDEX_INFO.type,
                doc_id=doc['_id'],
                es_getter=None,
                name='test',
                data=doc,
                es_merge_update=False,
                delete=False
            )
        return log.get_output()