Skip to content
This repository has been archived by the owner on Dec 1, 2022. It is now read-only.

[Minor] Add job-related pytest #1233

Merged
merged 7 commits into from
Jul 14, 2021
Merged
Show file tree
Hide file tree
Changes from 4 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
5 changes: 4 additions & 1 deletion tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
54 changes: 24 additions & 30 deletions tests/job/test_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,13 @@ 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);'
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)

Expand All @@ -34,13 +40,15 @@ 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)
expect_col_names = ['New Job Id']
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)
Expand All @@ -49,44 +57,30 @@ 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)
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)
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)
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)
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))
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 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']
# self.check_column_names(resp, expect_col_names)
# expect_values = [[0]]
# self.check_result(resp, expect_values)