Selaa lähdekoodia

[indexer] Add some integration tests with Solr

Romain Rigaux 10 vuotta sitten
vanhempi
commit
f980bd6
2 muutettua tiedostoa jossa 67 lisäystä ja 5 poistoa
  1. 0 1
      apps/impala/src/impala/tests.py
  2. 67 4
      desktop/libs/indexer/src/indexer/tests.py

+ 0 - 1
apps/impala/src/impala/tests.py

@@ -44,7 +44,6 @@ from impala.conf import SERVER_HOST
 LOG = logging.getLogger(__name__)
 
 
-
 class MockDbms:
   def get_databases(self):
     return ['db1', 'db2']

+ 67 - 4
desktop/libs/indexer/src/indexer/tests.py

@@ -15,17 +15,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import json
 
-from nose.tools import assert_equal
-from desktop.lib.django_test_util import make_logged_in_client
+from nose.tools import assert_equal, assert_true, assert_false
+
+from django.utils.unittest.case import SkipTest
+from django.contrib.auth.models import User
+from django.core.urlresolvers import reverse
 
+from desktop.lib.django_test_util import make_logged_in_client
+from desktop.lib.test_utils import add_to_group, grant_access
+from hadoop.pseudo_hdfs4 import is_live_cluster, get_db_prefix
 from libzookeeper.conf import ENSEMBLE
 
-from indexer.controller import get_solr_ensemble
+from indexer.controller import get_solr_ensemble, CollectionManagerController
 
 
 def test_get_ensemble():
-  c = make_logged_in_client()
 
   clear = ENSEMBLE.set_for_testing('zoo:2181')
   try:
@@ -39,3 +45,60 @@ def test_get_ensemble():
     assert_equal('zoo:2181,zoo2:2181/solr', get_solr_ensemble())
   finally:
     clear()
+
+
+
+class TestIndexerWithSolr:
+
+  @classmethod
+  def setup_class(cls):
+
+    if not is_live_cluster():
+      raise SkipTest
+
+    cls.client = make_logged_in_client()
+    cls.user = User.objects.get(username='test')
+    add_to_group('test')
+    grant_access("test", "test", "indexer")
+
+    resp = cls.client.post(reverse('indexer:install_examples'))
+    content = json.loads(resp.content)
+
+    assert_equal(content.get('status'), 0)
+
+  @classmethod
+  def teardown_class(cls):
+    pass
+
+  def test_is_solr_cloud_mode(self):
+    assert_true(CollectionManagerController(self.user).is_solr_cloud_mode())
+
+  def test_collection_exists(self):
+    db = CollectionManagerController(self.user)
+    assert_false(db.collection_exists('does_not_exist'))
+
+  def test_get_collections(self):
+    db = CollectionManagerController(self.user)
+    db.get_collections()
+
+  def test_create_collection(self):
+    db = CollectionManagerController(self.user)
+
+    name = get_db_prefix(name='solr') + 'test_create_collection'
+    fields = [{'name': 'my_test', 'type': 'text'}]
+
+    try:
+      db.create_collection(name, fields, unique_key_field='id', df='text')
+    finally:
+      db.delete_collection(name, core=False)
+
+  def test_collections_fields(self):
+    db = CollectionManagerController(self.user)
+
+    db.get_fields('log_analytics')
+    resp = self.client.post(reverse('indexer:install_examples'))
+    content = json.loads(resp.content)
+
+    assert_equal(content.get('status'), 0)
+    assert_equal(content.get('fields'), 0)
+    assert_equal(content.get('unique_key'), 0)