Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: third_party/gsutil/boto/tests/unit/cloudsearch/test_search.py

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: added readme Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/gsutil/boto/tests/unit/cloudsearch/test_search.py
diff --git a/third_party/gsutil/boto/tests/unit/cloudsearch/test_search.py b/third_party/gsutil/boto/tests/unit/cloudsearch/test_search.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6c23dd4f17492fdde2a4f7283ee1d7c10b6465f
--- /dev/null
+++ b/third_party/gsutil/boto/tests/unit/cloudsearch/test_search.py
@@ -0,0 +1,325 @@
+#!/usr/bin env python
+
+from tests.unit import unittest
+from httpretty import HTTPretty
+
+import urlparse
+import json
+
+from boto.cloudsearch.search import SearchConnection
+
+HOSTNAME = "search-demo-userdomain.us-east-1.cloudsearch.amazonaws.com"
+FULL_URL = 'http://%s/2011-02-01/search' % HOSTNAME
+
+
+class CloudSearchSearchTest(unittest.TestCase):
+
+ hits = [
+ {
+ 'id': '12341',
+ 'title': 'Document 1',
+ },
+ {
+ 'id': '12342',
+ 'title': 'Document 2',
+ },
+ {
+ 'id': '12343',
+ 'title': 'Document 3',
+ },
+ {
+ 'id': '12344',
+ 'title': 'Document 4',
+ },
+ {
+ 'id': '12345',
+ 'title': 'Document 5',
+ },
+ {
+ 'id': '12346',
+ 'title': 'Document 6',
+ },
+ {
+ 'id': '12347',
+ 'title': 'Document 7',
+ },
+ ]
+
+ response = {
+ 'rank': '-text_relevance',
+ 'match-expr':"Test",
+ 'hits': {
+ 'found': 30,
+ 'start': 0,
+ 'hit':hits
+ },
+ 'info': {
+ 'rid':'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08',
+ 'time-ms': 2,
+ 'cpu-time-ms': 0
+ }
+
+ }
+
+ def get_args(self, requestline):
+ (_, request, _) = requestline.split(" ")
+ (_, request) = request.split("?", 1)
+ args = urlparse.parse_qs(request)
+ return args
+
+ def setUp(self):
+ HTTPretty.enable()
+ HTTPretty.register_uri(HTTPretty.GET, FULL_URL,
+ body=json.dumps(self.response),
+ content_type="text/xml")
+
+ def tearDown(self):
+ HTTPretty.disable()
+
+ def test_cloudsearch_qsearch(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test')
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['q'], ["Test"])
+ self.assertEqual(args['start'], ["0"])
+ self.assertEqual(args['size'], ["10"])
+
+ def test_cloudsearch_bqsearch(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(bq="'Test'")
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['bq'], ["'Test'"])
+
+ def test_cloudsearch_search_details(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', size=50, start=20)
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['q'], ["Test"])
+ self.assertEqual(args['size'], ["50"])
+ self.assertEqual(args['start'], ["20"])
+
+ def test_cloudsearch_facet_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet=["Author"])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet'], ["Author"])
+
+ def test_cloudsearch_facet_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet=["author", "cat"])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet'], ["author,cat"])
+
+ def test_cloudsearch_facet_constraint_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(
+ q='Test',
+ facet_constraints={'author': "'John Smith','Mark Smith'"})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-constraints'],
+ ["'John Smith','Mark Smith'"])
+
+ def test_cloudsearch_facet_constraint_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(
+ q='Test',
+ facet_constraints={'author': "'John Smith','Mark Smith'",
+ 'category': "'News','Reviews'"})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-constraints'],
+ ["'John Smith','Mark Smith'"])
+ self.assertEqual(args['facet-category-constraints'],
+ ["'News','Reviews'"])
+
+ def test_cloudsearch_facet_sort_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet_sort={'author': 'alpha'})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-sort'], ['alpha'])
+
+ def test_cloudsearch_facet_sort_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet_sort={'author': 'alpha',
+ 'cat': 'count'})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-sort'], ['alpha'])
+ self.assertEqual(args['facet-cat-sort'], ['count'])
+
+ def test_cloudsearch_top_n_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet_top_n={'author': 5})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-top-n'], ['5'])
+
+ def test_cloudsearch_top_n_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', facet_top_n={'author': 5, 'cat': 10})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['facet-author-top-n'], ['5'])
+ self.assertEqual(args['facet-cat-top-n'], ['10'])
+
+ def test_cloudsearch_rank_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', rank=["date"])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['rank'], ['date'])
+
+ def test_cloudsearch_rank_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', rank=["date", "score"])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['rank'], ['date,score'])
+
+ def test_cloudsearch_result_fields_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', return_fields=['author'])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['return-fields'], ['author'])
+
+ def test_cloudsearch_result_fields_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', return_fields=['author', 'title'])
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['return-fields'], ['author,title'])
+
+
+ def test_cloudsearch_t_field_single(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', t={'year':'2001..2007'})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['t-year'], ['2001..2007'])
+
+ def test_cloudsearch_t_field_multiple(self):
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ search.search(q='Test', t={'year':'2001..2007', 'score':'10..50'})
+
+ args = self.get_args(HTTPretty.last_request.raw_requestline)
+
+ self.assertEqual(args['t-year'], ['2001..2007'])
+ self.assertEqual(args['t-score'], ['10..50'])
+
+
+ def test_cloudsearch_results_meta(self):
+ """Check returned metadata is parsed correctly"""
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ results = search.search(q='Test')
+
+ # These rely on the default response which is fed into HTTPretty
+ self.assertEqual(results.rank, "-text_relevance")
+ self.assertEqual(results.match_expression, "Test")
+
+ def test_cloudsearch_results_info(self):
+ """Check num_pages_needed is calculated correctly"""
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ results = search.search(q='Test')
+
+ # This relies on the default response which is fed into HTTPretty
+ self.assertEqual(results.num_pages_needed, 3.0)
+
+ def test_cloudsearch_results_matched(self):
+ """
+ Check that information objects are passed back through the API
+ correctly.
+ """
+ search = SearchConnection(endpoint=HOSTNAME)
+ query = search.build_query(q='Test')
+
+ results = search(query)
+
+ self.assertEqual(results.search_service, search)
+ self.assertEqual(results.query, query)
+
+ def test_cloudsearch_results_hits(self):
+ """Check that documents are parsed properly from AWS"""
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ results = search.search(q='Test')
+
+ hits = map(lambda x: x['id'], results.docs)
+
+ # This relies on the default response which is fed into HTTPretty
+ self.assertEqual(
+ hits, ["12341", "12342", "12343", "12344",
+ "12345", "12346", "12347"])
+
+ def test_cloudsearch_results_iterator(self):
+ """Check the results iterator"""
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ results = search.search(q='Test')
+ results_correct = iter(["12341", "12342", "12343", "12344",
+ "12345", "12346", "12347"])
+ for x in results:
+ self.assertEqual(x['id'], results_correct.next())
+
+
+ def test_cloudsearch_results_internal_consistancy(self):
+ """Check the documents length matches the iterator details"""
+ search = SearchConnection(endpoint=HOSTNAME)
+
+ results = search.search(q='Test')
+
+ self.assertEqual(len(results), len(results.docs))
+
+ def test_cloudsearch_search_nextpage(self):
+ """Check next page query is correct"""
+ search = SearchConnection(endpoint=HOSTNAME)
+ query1 = search.build_query(q='Test')
+ query2 = search.build_query(q='Test')
+
+ results = search(query2)
+
+ self.assertEqual(results.next_page().query.start,
+ query1.start + query1.size)
+ self.assertEqual(query1.q, query2.q)

Powered by Google App Engine
This is Rietveld 408576698