diff --git a/tests/maintain/test_index.py b/tests/maintain/test_index.py index 28086601463e6e6925b5a8d0749c78eab45834df..82defe4296c0aab4eaf0c303c802793aa44f6e75 100644 --- a/tests/maintain/test_index.py +++ b/tests/maintain/test_index.py @@ -13,7 +13,6 @@ from tests.common.nebula_test_suite import NebulaTestSuite from tests.common.nebula_test_suite import T_EMPTY, T_NULL from tests.common.utils import find_in_rows -status_pattern = re.compile(r'FINISHED|QUEUE|RUNNING') class TestIndex(NebulaTestSuite): @@ -56,25 +55,6 @@ class TestIndex(NebulaTestSuite): resp = self.execute('DROP SPACE index_space;') self.check_resp_succeeded(resp) - @classmethod - def find_result(self, resp, expect): - if resp.is_empty() and len(expect) == 0: - return True - - if resp.is_empty(): - return False - - rows = resp.rows() - if len(rows) < len(expect): - return False - - new_expect = self.convert_expect(expect) - - for exp in new_expect: - if not find_in_rows(exp.values, rows): - return False - - return True def test_tag_index(self): # Single Tag Single Field @@ -112,7 +92,7 @@ class TestIndex(NebulaTestSuite): resp = self.client.execute('CREATE TAG INDEX disorder_tag_index ON tag_1(col3, col2)') self.check_resp_succeeded(resp) - time.sleep(3) + time.sleep(self.delay) # Rebuild Tag Index resp = self.client.execute('REBUILD TAG INDEX single_tag_index') self.check_resp_succeeded(resp) @@ -126,32 +106,29 @@ class TestIndex(NebulaTestSuite): resp = self.client.execute('REBUILD TAG INDEX non_existent_tag_index') self.check_resp_failed(resp) # need to check if index exists in validator in future - time.sleep(3) + time.sleep(self.delay) # Show Tag Index Status - resp0 = self.client.execute('SHOW TAG INDEX STATUS') - self.check_resp_succeeded(resp0) - self.search_result(resp0, [[re.compile(r'single_tag_index'), status_pattern], - [re.compile(r'multi_tag_index'), status_pattern], - [re.compile(r'disorder_tag_index'), status_pattern]], is_regex=True) + resp = self.client.execute('SHOW TAG INDEX STATUS') + self.check_resp_succeeded(resp) + self.search_result(resp, [['single_tag_index', 'FINISHED'], + ['multi_tag_index', 'FINISHED'], + ['disorder_tag_index', 'FINISHED']]) # Lookup - # Only run Lookup when index status is 'FINISHED' - if self.find_result(resp0, [['single_tag_index', 'FINISHED']]): - resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col2 == 18 YIELD tag_1.col1') - self.check_resp_succeeded(resp) - expect = [['101', 'Tom']] - self.check_out_of_order_result(resp, expect) - - if self.find_result(resp0, [['multi_tag_index', 'FINISHED']]): - resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col3 > 35.7 YIELD tag_1.col1') - self.check_resp_succeeded(resp) - expect = [['102', 'Jerry'], ['103', 'Bob']] - self.check_out_of_order_result(resp, expect) - - resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col2 > 18 AND tag_1.col3 < 37.2 YIELD tag_1.col1') - self.check_resp_succeeded(resp) - expect = [['103', 'Bob']] - self.check_out_of_order_result(resp, expect) + resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col2 == 18 YIELD tag_1.col1') + self.check_resp_succeeded(resp) + expect = [['101', 'Tom']] + self.check_out_of_order_result(resp, expect) + + resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col3 > 35.7 YIELD tag_1.col1') + self.check_resp_succeeded(resp) + expect = [['102', 'Jerry'], ['103', 'Bob']] + self.check_out_of_order_result(resp, expect) + + resp = self.client.execute('LOOKUP ON tag_1 WHERE tag_1.col2 > 18 AND tag_1.col3 < 37.2 YIELD tag_1.col1') + self.check_resp_succeeded(resp) + expect = [['103', 'Bob']] + self.check_out_of_order_result(resp, expect) # Describe Tag Index resp = self.client.execute('DESC TAG INDEX single_tag_index') @@ -264,7 +241,7 @@ class TestIndex(NebulaTestSuite): resp = self.client.execute('CREATE EDGE INDEX disorder_edge_index ON edge_1(col3, col2)') self.check_resp_succeeded(resp) - time.sleep(3) + time.sleep(self.delay) # Rebuild Edge Index resp = self.client.execute('REBUILD EDGE INDEX single_edge_index') self.check_resp_succeeded(resp) @@ -278,32 +255,29 @@ class TestIndex(NebulaTestSuite): resp = self.client.execute('REBUILD EDGE INDEX non_existent_edge_index') self.check_resp_failed(resp) - time.sleep(3) + time.sleep(self.delay) # Show Edge Index Status - resp0 = self.client.execute('SHOW EDGE INDEX STATUS') - self.check_resp_succeeded(resp0) - self.search_result(resp0, [[re.compile(r'single_edge_index'), status_pattern], - [re.compile(r'multi_edge_index'), status_pattern], - [re.compile(r'disorder_edge_index'), status_pattern]], is_regex=True) + resp = self.client.execute('SHOW EDGE INDEX STATUS') + self.check_resp_succeeded(resp) + self.search_result(resp, [['single_edge_index', 'FINISHED'], + ['multi_edge_index', 'FINISHED'], + ['disorder_edge_index', 'FINISHED']]) # Lookup - # Only run Lookup when index status is 'FINISHED' - if self.find_result(resp0, [['single_edge_index', 'FINISHED']]): - resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col2 == 22 YIELD edge_1.col2') - self.check_resp_succeeded(resp) - expect = [['102', '103', 0, 22]] - self.check_out_of_order_result(resp, expect) - - if self.find_result(resp0, [['multi_edge_index', 'FINISHED']]): - resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col3 > 43.4 YIELD edge_1.col1') - self.check_resp_succeeded(resp) - expect = [['102', '103', 0, 'Yellow'], ['101', '102', 0, 'Red']] - self.check_out_of_order_result(resp, expect) - - resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col2 > 45 AND edge_1.col3 < 44.3 YIELD edge_1.col1') - self.check_resp_succeeded(resp) - expect = [['103', '101', 0, 'Blue']] - self.check_out_of_order_result(resp, expect) + resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col2 == 22 YIELD edge_1.col2') + self.check_resp_succeeded(resp) + expect = [['102', '103', 0, 22]] + self.check_out_of_order_result(resp, expect) + + resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col3 > 43.4 YIELD edge_1.col1') + self.check_resp_succeeded(resp) + expect = [['102', '103', 0, 'Yellow'], ['101', '102', 0, 'Red']] + self.check_out_of_order_result(resp, expect) + + resp = self.client.execute('LOOKUP ON edge_1 WHERE edge_1.col2 > 45 AND edge_1.col3 < 44.3 YIELD edge_1.col1') + self.check_resp_succeeded(resp) + expect = [['103', '101', 0, 'Blue']] + self.check_out_of_order_result(resp, expect) # Describe Edge Index resp = self.client.execute('DESC EDGE INDEX single_edge_index')