File tree 5 files changed +95
-12
lines changed
test_integration/test_examples
5 files changed +95
-12
lines changed Original file line number Diff line number Diff line change
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ import asyncio
19
+
20
+
21
+ async def sleep (secs ):
22
+ """Tests can use this function to sleep."""
23
+ await asyncio .sleep (secs )
Original file line number Diff line number Diff line change
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ import time
19
+
20
+
21
+ def sleep (secs ):
22
+ """Tests can use this function to sleep."""
23
+ time .sleep (secs )
Original file line number Diff line number Diff line change 15
15
# specific language governing permissions and limitations
16
16
# under the License.
17
17
18
+ from hashlib import md5
18
19
from unittest import SkipTest
19
20
20
21
import pytest
21
22
22
- from ..async_examples .vectors import create , search
23
+ from tests .async_sleep import sleep
24
+
25
+ from ..async_examples import vectors
23
26
24
27
25
28
@pytest .mark .asyncio
26
- async def test_vector_search (async_write_client , es_version ):
29
+ async def test_vector_search (async_write_client , es_version , mocker ):
27
30
# this test only runs on Elasticsearch >= 8.11 because the example uses
28
- # a dense vector without giving them an explicit size
31
+ # a dense vector without specifying an explicit size
29
32
if es_version < (8 , 11 ):
30
33
raise SkipTest ("This test requires Elasticsearch 8.11 or newer" )
31
34
32
- await create ()
33
- results = await (await search ("work from home" )).execute ()
34
- assert results [0 ].name == "Work From Home Policy"
35
+ class MockModel :
36
+ def __init__ (self , model ):
37
+ pass
38
+
39
+ def encode (self , text ):
40
+ vector = [int (ch ) for ch in md5 (text .encode ()).digest ()]
41
+ total = sum (vector )
42
+ return [float (v ) / total for v in vector ]
43
+
44
+ mocker .patch .object (vectors , "SentenceTransformer" , new = MockModel )
45
+
46
+ await vectors .create ()
47
+ for i in range (10 ):
48
+ results = await (await vectors .search ("Welcome to our team!" )).execute ()
49
+ if len (results .hits ) > 0 :
50
+ break
51
+ await sleep (0.1 )
52
+ assert results [0 ].name == "New Employee Onboarding Guide"
Original file line number Diff line number Diff line change 15
15
# specific language governing permissions and limitations
16
16
# under the License.
17
17
18
+ from hashlib import md5
18
19
from unittest import SkipTest
19
20
20
21
import pytest
21
22
22
- from ..examples .vectors import create , search
23
+ from tests .sleep import sleep
24
+
25
+ from ..examples import vectors
23
26
24
27
25
28
@pytest .mark .sync
26
- def test_vector_search (write_client , es_version ):
29
+ def test_vector_search (write_client , es_version , mocker ):
27
30
# this test only runs on Elasticsearch >= 8.11 because the example uses
28
- # a dense vector without giving them an explicit size
31
+ # a dense vector without specifying an explicit size
29
32
if es_version < (8 , 11 ):
30
33
raise SkipTest ("This test requires Elasticsearch 8.11 or newer" )
31
34
32
- create ()
33
- results = (search ("work from home" )).execute ()
34
- assert results [0 ].name == "Work From Home Policy"
35
+ class MockModel :
36
+ def __init__ (self , model ):
37
+ pass
38
+
39
+ def encode (self , text ):
40
+ vector = [int (ch ) for ch in md5 (text .encode ()).digest ()]
41
+ total = sum (vector )
42
+ return [float (v ) / total for v in vector ]
43
+
44
+ mocker .patch .object (vectors , "SentenceTransformer" , new = MockModel )
45
+
46
+ vectors .create ()
47
+ for i in range (10 ):
48
+ results = (vectors .search ("Welcome to our team!" )).execute ()
49
+ if len (results .hits ) > 0 :
50
+ break
51
+ sleep (0.1 )
52
+ assert results [0 ].name == "New Employee Onboarding Guide"
Original file line number Diff line number Diff line change @@ -69,6 +69,7 @@ def main(check=False):
69
69
"async_write_client" : "write_client" ,
70
70
"async_pull_request" : "pull_request" ,
71
71
"async_examples" : "examples" ,
72
+ "async_sleep" : "sleep" ,
72
73
"assert_awaited_once_with" : "assert_called_once_with" ,
73
74
"pytest_asyncio" : "pytest" ,
74
75
}
You can’t perform that action at this time.
0 commit comments