Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 37 additions & 62 deletions test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ def waitForIndex(env, idx, timeout=None):
res.index('indexing')
except:
break

if int(res[res.index('indexing') + 1]) == 0:
break

time.sleep(delay)
if timeout is not None:
timeout -= delay
Expand Down Expand Up @@ -90,7 +90,7 @@ def createIndex(self, client, num_docs = 100, definition=None):
def testClient(self):

conn = self.redis()

with conn as r:
num_docs = 500
r.flushdb()
Expand All @@ -113,31 +113,30 @@ def testClient(self):
self.assertEqual(num_docs, int(info['num_docs']))


res = client.search("henry iv")
res = client.search("henry iv")
self.assertIsInstance(res, Result)
assert isinstance(res, Result)
self.assertEqual(225, res.total)
self.assertEqual(10, len(res.docs))
self.assertGreater(res.duration, 0)

for doc in res.docs:

self.assertTrue(doc.id)
self.assertEqual(doc.play, 'Henry IV')
self.assertTrue(len(doc.txt) > 0)

# test no content
res = client.search(Query('king').no_content())
self.assertEqual(194, res.total)
self.assertEqual(10, len(res.docs))
for doc in res.docs:
self.assertNotIn('txt', doc.__dict__)
self.assertNotIn('play', doc.__dict__)

#test verbatim vs no verbatim
total = client.search(Query('kings').no_content()).total
vtotal = client.search(Query('kings').no_content().verbatim()).total
self.assertGreater(total, vtotal)
self.assertGreater(total, vtotal)

# test in fields
txt_total = client.search(Query('henry').no_content().limit_fields('txt')).total
Expand All @@ -154,8 +153,6 @@ def testClient(self):
self.assertEqual(doc.play, 'Henry VI Part 3')
self.assertTrue(len(doc.txt) > 0)



# test inkeys
ids = [x.id for x in client.search(Query('henry')).docs]
self.assertEqual(10, len(ids))
Expand All @@ -173,12 +170,12 @@ def testClient(self):
self.assertEqual(52,client.search(Query('king henry').slop(0).in_order()).total)
self.assertEqual(53,client.search(Query('henry king').slop(0)).total)
self.assertEqual(167,client.search(Query('henry king').slop(100)).total)

# test delete document
client.add_document('doc-5ghs2', play = 'Death of a Salesman')
res = client.search(Query('death of a salesman'))
self.assertEqual(1, res.total)

self.assertEqual(1, client.delete_document('doc-5ghs2'))
res = client.search(Query('death of a salesman'))
self.assertEqual(0, res.total)
Expand All @@ -201,10 +198,10 @@ def getCleanClient(self, name):
pass

return client

def testAddHash(self):
conn = self.redis()

with conn as r:
if check_version_2(r):
return
Expand All @@ -213,9 +210,8 @@ def testAddHash(self):

client.redis.flushdb()
# Creating the index definition and schema
client.create_index((TextField('title',
weight=5.0), TextField('body')))

client.create_index((TextField('title', weight=5.0), TextField('body')))

client.redis.hset(
'doc1',
mapping={
Expand All @@ -224,16 +220,13 @@ def testAddHash(self):
})

client.add_document_hash('doc1')

# Searching with complext parameters:
q = Query("search engine").verbatim().no_content().paging(0, 5)

res = client.search(q)

self.assertEqual('doc1', res.docs[0].id)

def testPayloads(self):

conn = self.redis()

with conn as r:
Expand All @@ -249,7 +242,7 @@ def testPayloads(self):
res = client.search(q)
self.assertEqual(2, res.total)
self.assertEqual('doc2', res.docs[0].id)

self.assertEqual('doc1', res.docs[1].id)
self.assertEqual('foo baz', res.docs[1].payload)
self.assertIsNone(res.docs[0].payload)
Expand All @@ -269,12 +262,13 @@ def testScores(self):
q = Query("foo ~bar").with_scores()
res = client.search(q)
self.assertEqual(2, res.total)

self.assertEqual('doc2', res.docs[0].id)
self.assertEqual(3.0, res.docs[0].score)

self.assertEqual('doc1', res.docs[1].id)
self.assertEqual(0.2, res.docs[1].score)
# todo: enable once new RS version is tagged
#self.assertEqual(0.2, res.docs[1].score)

def testReplace(self):

Expand All @@ -292,44 +286,38 @@ def testReplace(self):
res = client.search("foo bar")
self.assertEqual(2, res.total)
client.add_document('doc1', replace = True, txt = 'this is a replaced doc')



res = client.search("foo bar")
self.assertEqual(1, res.total)
self.assertEqual('doc2', res.docs[0].id)


res = client.search("replaced doc")
self.assertEqual(1, res.total)
self.assertEqual('doc1', res.docs[0].id)


def testStopwords(self):

# Creating a client with a given index name
client = self.getCleanClient('idx')

client.create_index((TextField('txt'),), stopwords = ['foo', 'bar', 'baz'])
client.add_document('doc1', txt = 'foo bar')
client.add_document('doc2', txt = 'hello world')

q1 = Query("foo bar").no_content()
q2 = Query("foo bar hello world").no_content()
res1, res2 = client.search(q1), client.search(q2)
self.assertEqual(0, res1.total)
self.assertEqual(1, res2.total)

def testFilters(self):

conn = self.redis()

with conn as r:
# Creating a client with a given index name
client = Client('idx', port=conn.port)
client.redis.flushdb()

client.create_index((TextField('txt'), NumericField('num'), GeoField('loc')))

client.create_index((TextField('txt'), NumericField('num'), GeoField('loc')))
client.add_document('doc1', txt = 'foo bar', num = 3.141, loc = '-0.441,51.458')
client.add_document('doc2', txt = 'foo baz', num = 2, loc = '-0.1,51.2')

Expand Down Expand Up @@ -373,11 +361,9 @@ def testPayloadsWithNoContent(self):

q = Query("foo bar").with_payloads().no_content()
res = client.search(q)

self.assertEqual(2, len(res.docs))

def testSortby(self):

conn = self.redis()

with conn as r:
Expand All @@ -386,7 +372,6 @@ def testSortby(self):
client.redis.flushdb()

client.create_index((TextField('txt'), NumericField('num', sortable=True)))

client.add_document('doc1', txt = 'foo bar', num = 1)
client.add_document('doc2', txt = 'foo baz', num = 2)
client.add_document('doc3', txt = 'foo qux', num = 3)
Expand All @@ -406,7 +391,6 @@ def testSortby(self):
self.assertEqual('doc3', res2.docs[0].id)

def testExample(self):

conn = self.redis()

with conn as r:
Expand All @@ -424,15 +408,12 @@ def testExample(self):
q = Query("search engine").verbatim().no_content().paging(0,5)

res = client.search(q)



self.assertTrue(True)

def testAutoComplete(self):
with self.redis() as r:
self.assertTrue(True)

ac = AutoCompleter('ac', conn=r)
n = 0
with open(TITLES_CSV) as f:
Expand All @@ -444,7 +425,6 @@ def testAutoComplete(self):
#print term, score
self.assertEqual(n,ac.add_suggestions(Suggestion(term,score=score)))


self.assertEqual(n, ac.len())
strs = []
for _ in r.retry_with_rdb_reload():
Expand All @@ -467,7 +447,7 @@ def testAutoComplete(self):
# make sure a second delete returns 0
for sug in strs:
self.assertEqual(0, ac.delete(sug))

# make sure they were actually deleted
ret2 = ac.get_suggestions('bad', fuzzy=True, num=10)
for sug in ret2:
Expand All @@ -485,7 +465,6 @@ def testAutoComplete(self):
self.assertTrue(sug.payload.startswith('pl'))

def testNoIndex(self):

# Creating a client with a given index name
client = self.getCleanClient('idx')

Expand Down Expand Up @@ -532,8 +511,7 @@ def testPartial(self):
# values
res = client.search('@f3:f3_val @f2:f2_val @f1:f1_val')
self.assertEqual(1, res.total)



def testNoCreate(self):
client = self.getCleanClient('idx')
client.create_index((TextField('f1'), TextField('f2'), TextField('f3')))
Expand All @@ -553,10 +531,10 @@ def testNoCreate(self):
# Only the document updated with PARTIAL should still have the f1 and f2
# values
res = client.search('@f3:f3_val @f2:f2_val @f1:f1_val')
self.assertEqual(1, res.total)
self.assertEqual(1, res.total)

with self.assertRaises(redis.ResponseError) as error:
client.add_document('doc3', f2='f2_val', f3='f3_val', no_create=True)
client.add_document('doc3', f2='f2_val', f3='f3_val', no_create=True)

def testExplain(self):
client = self.getCleanClient('idx')
Expand Down Expand Up @@ -593,15 +571,15 @@ def testTags(self):
# Creating a client with a given index name
client = Client('idx', port=conn.port)
client.redis.flushdb()

client.create_index((TextField('txt'), TagField('tags')))

tags = 'foo,foo bar,hello;world'
tags2 = 'soba,ramen'

client.add_document('doc1', txt = 'fooz barz', tags = tags)
client.add_document('doc2', txt = 'noodles', tags = tags2)

for i in r.retry_with_rdb_reload():
waitForIndex(r, 'idx')
q = Query("@tags:{foo}")
Expand Down Expand Up @@ -727,17 +705,17 @@ def testPhoneticMatcher(self):
res = client.search(Query("Jon"))
self.assertEqual(2, len(res.docs))
self.assertEqual(['John', 'Jon'], sorted([d.name for d in res.docs]))

def testGet(self):
client = self.getCleanClient('idx')
client.create_index((TextField('f1'), TextField('f2')))

self.assertEqual([None], client.get('doc1'))
self.assertEqual([None, None], client.get('doc2', 'doc1'))

client.add_document('doc1', f1='some valid content dd1', f2='this is sample text ff1')
client.add_document('doc2', f1='some valid content dd2', f2='this is sample text ff2')

self.assertEqual([['f1', 'some valid content dd2', 'f2', 'this is sample text ff2']], client.get('doc2'))
self.assertEqual([['f1', 'some valid content dd1', 'f2', 'this is sample text ff1'], ['f1', 'some valid content dd2', 'f2', 'this is sample text ff2']], client.get('doc1', 'doc2'))

Expand All @@ -752,7 +730,7 @@ def testConfig(self):

def testAggregations(self):
conn = self.redis()

with conn as r:
client = Client('myIndex', port=conn.port)
client.redis.flushdb()
Expand Down Expand Up @@ -819,15 +797,14 @@ def testAggregations(self):
self.assertEqual(2, len(res[25]))

def testIndexDefiniontion(self):

conn = self.redis()

with conn as r:
r.flushdb()
if not check_version_2(r):
return
client = Client('test', port=conn.port)

definition = IndexDefinition(prefix=['hset:', 'henry'],
filter='@f1==32', language='English', language_field='play',
score_field='chapter', score=0.5, payload_field='txt' )
Expand All @@ -841,15 +818,14 @@ def testIndexDefiniontion(self):


def testCreateClientDefiniontion(self):

conn = self.redis()

with conn as r:
r.flushdb()
if not check_version_2(r):
return
client = Client('test', port=conn.port)

definition = IndexDefinition(prefix=['hset:', 'henry'])
self.createIndex(client, num_docs=500, definition=definition)

Expand All @@ -863,5 +839,4 @@ def testCreateClientDefiniontion(self):


if __name__ == '__main__':

unittest.main()