From 99acb8408c072b3165d693deacdd29ba9aefdcc5 Mon Sep 17 00:00:00 2001 From: Aiee <18348405+Aiee@users.noreply.github.com> Date: Fri, 9 Jul 2021 16:51:33 +0800 Subject: [PATCH 1/3] Add jobs related pytest --- tests/Makefile | 5 +++- tests/job/test_jobs.py | 57 +++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 360f66d3a..10fc66d04 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -60,7 +60,10 @@ currdir: sess: currdir python3 -m pytest -m "not skip" -k "not tck" job/test_session.py -test: sess +jobs: currdir + python3 -m pytest -m "not skip" -k "not tck" job/test_jobs.py + +test: sess jobs python3 -m pytest -n$(J) --dist=loadfile -m "not skip" -k "not tck" $(TEST_DIR) slow-query: currdir diff --git a/tests/job/test_jobs.py b/tests/job/test_jobs.py index 856743c81..860d957ad 100644 --- a/tests/job/test_jobs.py +++ b/tests/job/test_jobs.py @@ -24,7 +24,7 @@ def test_failed(self): self.check_resp_failed(resp, ttypes.ErrorCode.E_EXECUTION_ERROR) def test_succeeded(self): - resp = self.client.execute('CREATE SPACE space_for_jobs(partition_num=9, replica_factor=1);' + resp = self.client.execute('CREATE SPACE IF NOT EXISTS space_for_jobs(partition_num=9, replica_factor=1, vid_type=FIXED_STRING(20));' 'USE space_for_jobs;') self.check_resp_succeeded(resp) @@ -34,6 +34,7 @@ def test_succeeded(self): self.check_column_names(resp, expect_col_names) expect_values = [[re.compile(r'\d+')]] self.check_result(resp, expect_values, is_regex=True) + time.sleep(1) resp = self.client.execute('SUBMIT JOB FLUSH;') self.check_resp_succeeded(resp) @@ -41,6 +42,7 @@ def test_succeeded(self): self.check_column_names(resp, expect_col_names) expect_values = [[re.compile(r'\d+')]] self.check_result(resp, expect_values, is_regex=True) + time.sleep(1) resp = self.client.execute('SUBMIT JOB STATS;') self.check_resp_succeeded(resp) @@ -54,39 +56,38 @@ def test_succeeded(self): self.check_resp_succeeded(resp) expect_col_names = ['Job Id', 'Command', 'Status', 'Start Time', 'Stop Time'] self.check_column_names(resp, expect_col_names) - expect_values = [[re.compile(r'\d+'), re.compile(r'COMPACT'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')], - [re.compile(r'\d+'), re.compile(r'FLUSH'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')], - [re.compile(r'\d+'), re.compile(r'STATS'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')]] - self.search_result(resp, expect_values, is_regex=True) + assert resp.row_values(0)[1].as_string() == 'STATS' + assert resp.row_values(0)[2].is_string() + assert resp.row_values(0)[3].is_datetime() + assert resp.row_values(0)[4].is_datetime() + assert resp.row_values(1)[1].as_string() == 'FLUSH' + assert resp.row_values(1)[2].is_string() + assert resp.row_values(1)[3].is_datetime() + assert resp.row_values(1)[4].is_datetime() + assert resp.row_values(2)[1].as_string() == 'COMPACT' + assert resp.row_values(2)[2].is_string() + assert resp.row_values(2)[3].is_datetime() + assert resp.row_values(2)[4].is_datetime() job_id = resp.row_values(0)[0].as_int() resp = self.client.execute('SHOW JOB {};'.format(job_id)) self.check_resp_succeeded(resp) expect_col_names = ['Job Id(TaskId)', 'Command(Dest)', 'Status', 'Start Time', 'Stop Time'] self.check_column_names(resp, expect_col_names) - expect_values = [[re.compile(r'\d+'), re.compile(r'COMPACT|FLUSH|STATS'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')]] - self.search_result(resp, expect_values, is_regex=True) + assert resp.row_values(0)[1].as_string() == 'STATS' + assert resp.row_values(0)[2].is_string() + assert resp.row_values(0)[3].is_datetime() + assert resp.row_values(0)[4].is_datetime() job_id = resp.row_values(0)[0].as_int() resp = self.client.execute('STOP JOB {};'.format(job_id)) - self.check_resp_succeeded(resp) - expect_col_names = ['Result'] - self.check_column_names(resp, expect_col_names) - expect_values = [['Job stopped']] - self.check_result(resp, expect_values) - - resp = self.client.execute('SHOW JOBS;') - self.check_resp_succeeded(resp) - expect_col_names = ['Job Id', 'Command', 'Status', 'Start Time', 'Stop Time'] - self.check_column_names(resp, expect_col_names) - expect_values = [[re.compile(r'\d+'), re.compile(r'COMPACT'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')], - [re.compile(r'\d+'), re.compile(r'FLUSH'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')], - [re.compile(r'\d+'), re.compile(r'STATS'), re.compile(r'\S+'), re.compile(r'\d+'), re.compile(r'\d+')]] - self.search_result(resp, expect_values, is_regex=True) - - resp = self.client.execute('RECOVER JOB;') - self.check_resp_succeeded(resp) - expect_col_names = ['Recovered job num'] - self.check_column_names(resp, expect_col_names) - expect_values = [[0]] - self.check_result(resp, expect_values) + # Executin error becuase the job is finished + self.check_resp_failed(resp, ttypes.ErrorCode.E_EXECUTION_ERROR) + + # This is skkiped becuase it is hard to simulate the situation + # resp = self.client.execute('RECOVER JOB;') + # self.check_resp_succeeded(resp) + # expect_col_names = ['Recovered job num'] + # self.check_column_names(resp, expect_col_names) + # expect_values = [[0]] + # self.check_result(resp, expect_values) From 6a57e5d43c194a6e87d076b36ed3e909546d427b Mon Sep 17 00:00:00 2001 From: Aiee <18348405+Aiee@users.noreply.github.com> Date: Fri, 9 Jul 2021 16:52:42 +0800 Subject: [PATCH 2/3] Fix typo --- tests/job/test_jobs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_jobs.py b/tests/job/test_jobs.py index 860d957ad..1dc579521 100644 --- a/tests/job/test_jobs.py +++ b/tests/job/test_jobs.py @@ -84,7 +84,7 @@ def test_succeeded(self): # Executin error becuase the job is finished self.check_resp_failed(resp, ttypes.ErrorCode.E_EXECUTION_ERROR) - # This is skkiped becuase it is hard to simulate the situation + # This is skipped becuase it is hard to simulate the situation # resp = self.client.execute('RECOVER JOB;') # self.check_resp_succeeded(resp) # expect_col_names = ['Recovered job num'] From 15e38a90850636154389b0ef732292cd87d5c6be Mon Sep 17 00:00:00 2001 From: Aiee <18348405+Aiee@users.noreply.github.com> Date: Mon, 12 Jul 2021 15:46:18 +0800 Subject: [PATCH 3/3] Address comments --- tests/job/test_jobs.py | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/tests/job/test_jobs.py b/tests/job/test_jobs.py index 1dc579521..f5bc8b4e9 100644 --- a/tests/job/test_jobs.py +++ b/tests/job/test_jobs.py @@ -24,6 +24,12 @@ def test_failed(self): self.check_resp_failed(resp, ttypes.ErrorCode.E_EXECUTION_ERROR) def test_succeeded(self): + def check_jobs_resp_obj(resp_row, job_name): + assert resp_row[1].as_string() == job_name + assert resp_row[2].is_string() + assert resp_row[3].is_datetime() + assert resp_row[4].is_datetime() + resp = self.client.execute('CREATE SPACE IF NOT EXISTS space_for_jobs(partition_num=9, replica_factor=1, vid_type=FIXED_STRING(20));' 'USE space_for_jobs;') self.check_resp_succeeded(resp) @@ -51,33 +57,20 @@ def test_succeeded(self): expect_values = [[re.compile(r'\d+')]] self.check_result(resp, expect_values, is_regex=True) - time.sleep(3) + time.sleep(10) resp = self.client.execute('SHOW JOBS;') self.check_resp_succeeded(resp) expect_col_names = ['Job Id', 'Command', 'Status', 'Start Time', 'Stop Time'] self.check_column_names(resp, expect_col_names) - assert resp.row_values(0)[1].as_string() == 'STATS' - assert resp.row_values(0)[2].is_string() - assert resp.row_values(0)[3].is_datetime() - assert resp.row_values(0)[4].is_datetime() - assert resp.row_values(1)[1].as_string() == 'FLUSH' - assert resp.row_values(1)[2].is_string() - assert resp.row_values(1)[3].is_datetime() - assert resp.row_values(1)[4].is_datetime() - assert resp.row_values(2)[1].as_string() == 'COMPACT' - assert resp.row_values(2)[2].is_string() - assert resp.row_values(2)[3].is_datetime() - assert resp.row_values(2)[4].is_datetime() + check_jobs_resp_obj(resp.row_values(0), 'STATS') + check_jobs_resp_obj(resp.row_values(1), 'FLUSH') + check_jobs_resp_obj(resp.row_values(2), 'COMPACT') job_id = resp.row_values(0)[0].as_int() resp = self.client.execute('SHOW JOB {};'.format(job_id)) self.check_resp_succeeded(resp) expect_col_names = ['Job Id(TaskId)', 'Command(Dest)', 'Status', 'Start Time', 'Stop Time'] - self.check_column_names(resp, expect_col_names) - assert resp.row_values(0)[1].as_string() == 'STATS' - assert resp.row_values(0)[2].is_string() - assert resp.row_values(0)[3].is_datetime() - assert resp.row_values(0)[4].is_datetime() + check_jobs_resp_obj(resp.row_values(0), 'STATS') job_id = resp.row_values(0)[0].as_int() resp = self.client.execute('STOP JOB {};'.format(job_id))