def test_index_creation(es_client): ixmgr = IndexManager(hostname='example.org', es_client=es_client) page = TypeMapping('page', { 'title': {'type': 'string'} }) # create an index index = ixmgr.ensure_index( schema='foo_bar', language='en', mapping=page ) assert index == 'example_org-foo_bar-en-page' assert ixmgr.created_indices == {index + '-' + page.version} assert ixmgr.query_indices() == ixmgr.created_indices assert ixmgr.query_aliases() == {index} # the slight change in the index name should be normalized away index = ixmgr.ensure_index( schema='foo-bar', language='en', mapping=page ) assert index == 'example_org-foo_bar-en-page' assert ixmgr.created_indices == {index + '-' + page.version} assert ixmgr.query_indices() == ixmgr.created_indices assert ixmgr.query_aliases() == {index} # if we change a mapping (which we won't usually do at runtime), we # should get a new index new_page = TypeMapping('page', { 'title': {'type': 'string'}, 'body': {'type': 'string'} }) index = ixmgr.ensure_index( schema='foo-bar', language='en', mapping=new_page ) assert index == 'example_org-foo_bar-en-page' assert ixmgr.created_indices == { index + '-' + page.version, index + '-' + new_page.version } assert ixmgr.query_indices() == ixmgr.created_indices assert ixmgr.query_aliases() == {index} # this leads to some indices no longer being used assert ixmgr.remove_expired_indices(current_mappings=[new_page]) == 1
def test_index_manager_separation(es_client): foo = IndexManager(hostname='foo', es_client=es_client) bar = IndexManager(hostname='bar', es_client=es_client) page = TypeMapping('page', { 'title': {'type': 'string'} }) foo.ensure_index('foo', 'en', page) bar.ensure_index('bar', 'en', page) assert foo.query_indices() == {'foo-foo-en-page' + '-' + page.version} assert bar.query_indices() == {'bar-bar-en-page' + '-' + page.version} assert foo.query_aliases() == {'foo-foo-en-page'} assert bar.query_aliases() == {'bar-bar-en-page'}