From a244cc8471b618b24f797c6238ddda81f349f901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20M=C3=B6slinger?= <dominik.moeslinger@univie.ac.at> Date: Tue, 6 Jul 2021 16:53:23 +0200 Subject: [PATCH] TST: Running Version, various small bug fixes Progress View: Tooltip info correctly shown --- Tst/log_viewer/log_viewer.cfg | 4 +- Tst/progress_view/progress_view.cfg | 10 ++- Tst/progress_view/progress_view.py | 72 ++++++++++++------- Tst/tst/file_management.py | 2 +- Tst/tst/generator_templates/co_footer.py | 5 +- .../co_post_condition_entry.py | 10 --- .../co_pre_condition_entry.py | 15 ---- Tst/tst/view.py | 19 +++-- 8 files changed, 74 insertions(+), 63 deletions(-) diff --git a/Tst/log_viewer/log_viewer.cfg b/Tst/log_viewer/log_viewer.cfg index d08fc61..8972046 100644 --- a/Tst/log_viewer/log_viewer.cfg +++ b/Tst/log_viewer/log_viewer.cfg @@ -6,7 +6,7 @@ level = DEBUG log-file-path = ${logging:log-dir}/log_viewer/log_viewer.log [log-viewer-filter] -level-debug = True +level-debug = False level-info = True level-warning = True level-error = True @@ -27,5 +27,5 @@ thread = False threadname = False [log-viewer-history] -last-folder = /home/sebastian/CCS/Tst/logs_test_runs +last-folder = /data/home/moeslinged94/smile/CCS/Tst/logs_test_runs diff --git a/Tst/progress_view/progress_view.cfg b/Tst/progress_view/progress_view.cfg index aea4dcf..e91c11c 100644 --- a/Tst/progress_view/progress_view.cfg +++ b/Tst/progress_view/progress_view.cfg @@ -3,4 +3,12 @@ progress-view = egse.tst.progressview [progress-viewer-logging] level = DEBUG -log-file-path = ${logging:log-dir}/progress_view/progress_view.log \ No newline at end of file +log-file-path = ${logging:log-dir}/progress_view/progress_view.log + +[progress-viewer-window-size] +minimum-height = 1000 +minimum-width-step-mode = 500 +minimum-width-run-mode = 700 +basic-height = 1000 +basic-width-step-mode = 900 +basic-width-run-mode = 1100 \ No newline at end of file diff --git a/Tst/progress_view/progress_view.py b/Tst/progress_view/progress_view.py index dd529da..4dc5d25 100644 --- a/Tst/progress_view/progress_view.py +++ b/Tst/progress_view/progress_view.py @@ -204,8 +204,8 @@ class TestProgressView(Gtk.ApplicationWindow): self.view.expand_all() self.scroll_win = Gtk.ScrolledWindow() - self.scroll_win.set_min_content_height(1200) - self.scroll_win.set_min_content_width(900) + self.scroll_win.set_min_content_height(int(confignator.get_option(section='progress-viewer-window-size', option='minimum-height'))) + self.scroll_win.set_min_content_width(int(confignator.get_option(section='progress-viewer-window-size', option='minimum-width-step-mode'))) self.scroll_win.add(self.view) self.box.pack_start(self.scroll_win, True, True, 0) @@ -221,6 +221,9 @@ class TestProgressView(Gtk.ApplicationWindow): context = self.get_style_context() Gtk.StyleContext.add_class(context, 'tst-css') self.on_apply_css() + self.resize( + int(confignator.get_option(section='progress-viewer-window-size', option='basic-width-step-mode')), + int(confignator.get_option(section='progress-viewer-window-size', option='basic-height'))) self.show_all() logger.debug('__init__ succeeded') @@ -289,11 +292,11 @@ class TestProgressView(Gtk.ApplicationWindow): def make_treeview(self): # self.view.set_enable_tree_lines(True) - + print(self.get_size()) if self.sort_button.get_active(): # Only if sorted by executions # column 0 renderer_number = Gtk.CellRendererText() - #renderer_number.set_property('scale', 2) + renderer_number.set_property('scale', 2) renderer_number.set_property('single-paragraph-mode', True) execution_number = Gtk.TreeViewColumn('Run ', renderer_number, text=11) execution_number.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) @@ -371,6 +374,7 @@ class TestProgressView(Gtk.ApplicationWindow): column_result.set_min_width(50) # column_result.set_cell_data_func(cell_renderer=renderer_result, func=set_bkgrd_clr, func_data=None) self.view.append_column(column_result) + print(self.get_size()) return def tooltip_treeview(self, widget, *args): @@ -543,9 +547,12 @@ class TestProgressView(Gtk.ApplicationWindow): def on_remake_treeview(self, *args): if self.sort_button.get_active(): self.progress_tree_store = Gtk.TreeStore(str, str, str, str, str, str, str, str, str, str, str, str, str) + self.scroll_win.set_min_content_width(int(confignator.get_option(section='progress-viewer-window-size', option='minimum-width-run-mode'))) + self.resize(int(confignator.get_option(section='progress-viewer-window-size', option='basic-width-run-mode')),int(confignator.get_option(section='progress-viewer-window-size', option='basic-height'))) else: self.progress_tree_store = Gtk.TreeStore(str, str, str, str, str, str, str, str, str, str, str) - + self.scroll_win.set_min_content_width(int(confignator.get_option(section='progress-viewer-window-size', option='minimum-width-step-mode'))) + self.resize(int(confignator.get_option(section='progress-viewer-window-size', option='basic-width-step-mode')), int(confignator.get_option(section='progress-viewer-window-size', option='basic-height'))) self.sorted_model = Gtk.TreeModelSort(model=self.progress_tree_store) self.sorted_model.set_sort_column_id(1, Gtk.SortType.ASCENDING) self.view.set_model(self.sorted_model) @@ -625,7 +632,6 @@ class TestProgressView(Gtk.ApplicationWindow): if row is not None: # update existing row - row[10] = 'Hello' if sort_button_active: if exec_int: row[12] = exec_int @@ -692,7 +698,13 @@ class TestProgressView(Gtk.ApplicationWindow): row[7] = entry_background return row + # No longer used def add_detailed_row(self, inner_row_iter, tree_store): + """ + Was used to add an additional row (only if sorted by steps) to show more detailed information about a step, it + was seen that only the description is needed and it is easier shown as a tooltip text, stays here if more + information is wanted some day + """ detailed_info=[] for count, item in enumerate(tree_store[inner_row_iter]): if count in [0,7,9]: # Stepnumber, colour, colour @@ -763,6 +775,7 @@ class TestProgressView(Gtk.ApplicationWindow): else: # analyse the command log self.cmd_steps = analyse_command_log.get_steps_and_commands(filepath) + print(self.cmd_steps) self.load_cmd_into_tree_store(self.progress_tree_store, self.cmd_steps) self.set_test_title() @@ -797,7 +810,8 @@ class TestProgressView(Gtk.ApplicationWindow): new_drawer_row = self.build_row_list(step_number=str(step_number), step_desc=step_desc, - sort_button_active=self.sort_button.get_active()) + sort_button_active=self.sort_button.get_active(), + tooltip_text=step.description) tree_store.append(None, new_drawer_row) tree_store_steps.append(step_number) @@ -860,7 +874,7 @@ class TestProgressView(Gtk.ApplicationWindow): all_exec_numbers[str(item['run_id'])] = [] # get all steps for every execution for item in cmd_steps: - all_exec_numbers[str(item['run_id'])].append(item['step']) + all_exec_numbers[str(item['run_id'])].append(item) # make execution drawers for exec_num in all_exec_numbers.keys(): @@ -877,14 +891,15 @@ class TestProgressView(Gtk.ApplicationWindow): for row in tree_store: if row[12]: exec_num = row[12] - for step_num in all_exec_numbers[exec_num]: - if not step_num in tree_store_exec[exec_num]: - step_desc = 'Step ' + str(step_num[:-2]) - new_step_row = self.build_row_list(step_number=str(step_num), - step_desc=step_desc, - sort_button_active=self.sort_button.get_active()) + for step in all_exec_numbers[exec_num]: + if not step['step'] in tree_store_exec[exec_num]: + step_desc = 'Step ' + str(step['step'][:-2]) + new_step_row = self.build_row_list(step_number=str(step['step']), + step_desc=step_desc, + sort_button_active=self.sort_button.get_active(), + tooltip_text=step['descr']) new_row_iter = tree_store.append(row.iter, new_step_row) - tree_store_exec[exec_num].append(step_num) + tree_store_exec[exec_num].append(step['step']) # clear all command rows, before adding for row in tree_store: @@ -947,7 +962,8 @@ class TestProgressView(Gtk.ApplicationWindow): step_desc = 'Step ' + str(step_number[:-2]) new_drawer_row = self.build_row_list(step_number=str(step_number), step_desc=step_desc, - sort_button_active=self.sort_button.get_active()) + sort_button_active=self.sort_button.get_active(), + tooltip_text=item['descr']) tree_store.append(None, new_drawer_row) tree_store_steps.append(step_number) # clear all command rows, before adding @@ -998,7 +1014,7 @@ class TestProgressView(Gtk.ApplicationWindow): tcs=tcs_str, sort_button_active=self.sort_button.get_active()) - self.add_detailed_row(new_row_iter, tree_store) + #self.add_detailed_row(new_row_iter, tree_store) self.restore_expanded_states(tree_store) @@ -1026,7 +1042,7 @@ class TestProgressView(Gtk.ApplicationWindow): all_exec_numbers[str(item['run_id'])] = [] # get all steps for every execution for item in vrc_steps: - all_exec_numbers[str(item['run_id'])].append(item['step']) + all_exec_numbers[str(item['run_id'])].append(item) # make execution drawers for exec_num in all_exec_numbers.keys(): @@ -1043,14 +1059,15 @@ class TestProgressView(Gtk.ApplicationWindow): for row in tree_store: if row[12]: exec_num = row[12] - for step_num in all_exec_numbers[exec_num]: - if not step_num in tree_store_exec[exec_num]: - step_desc = 'Step ' + str(step_num[:-2]) - new_step_row = self.build_row_list(step_number=str(step_num), - step_desc=step_desc, - sort_button_active=self.sort_button.get_active()) + for step in all_exec_numbers[exec_num]: + if not step['step'] in tree_store_exec[exec_num]: + step_desc = 'Step ' + str(step['step'][:-2]) + new_step_row = self.build_row_list(step_number=str(step['step']), + step_desc=step_desc, + sort_button_active=self.sort_button.get_active(), + tooltip_text=step['descr']) new_row_iter = tree_store.append(row.iter, new_step_row) - tree_store_exec[exec_num].append(step_num) + tree_store_exec[exec_num].append(step['step']) # clear all verification rows, before adding for row in tree_store: @@ -1109,7 +1126,8 @@ class TestProgressView(Gtk.ApplicationWindow): step_desc = 'Step ' + str(step_number[:-2]) new_drawer_row = self.build_row_list(step_number=str(step_number), step_desc=step_desc, - sort_button_active=self.sort_button.get_active()) + sort_button_active=self.sort_button.get_active(), + tooltip_text=item['descr']) tree_store.append(None, new_drawer_row) tree_store_steps.append(step_number) # clear all verification rows, before adding @@ -1155,7 +1173,7 @@ class TestProgressView(Gtk.ApplicationWindow): self.build_row_list(row=new_row, result=False, sort_button_active=self.sort_button.get_active()) - self.add_detailed_row(new_row_iter, tree_store) + #self.add_detailed_row(new_row_iter, tree_store) self.restore_expanded_states(tree_store) diff --git a/Tst/tst/file_management.py b/Tst/tst/file_management.py index ae1c8bc..55005a6 100644 --- a/Tst/tst/file_management.py +++ b/Tst/tst/file_management.py @@ -31,10 +31,10 @@ def save_file(file_path, test_spec, file_extension=None, logger=module_logger, * with open(file_path, 'w') as file: try: json.dump(test_spec, fp=file, indent=1, default=test_spec.serialize) + logger.info('Saved file "{}"'.format(file_path)) except Exception as e: logger.exception(e) logger.error('Failed to json-dump the instance into a file') - logger.info('Saved file "{}"'.format(file_path)) def _to_json_string(test_to_save): diff --git a/Tst/tst/generator_templates/co_footer.py b/Tst/tst/generator_templates/co_footer.py index 9372702..8aad388 100644 --- a/Tst/tst/generator_templates/co_footer.py +++ b/Tst/tst/generator_templates/co_footer.py @@ -27,8 +27,7 @@ # if preconditions are met, execute the steps and note the results if self.precond_ok: # define the steps array - steps = [$testStepsList - ] + steps = [$testStepsList] self.number_of_steps = len(steps) # execute all test steps for step in steps: @@ -37,7 +36,7 @@ t_start = time.time() res = step(pool_name=pool_name) t_end = time.time() - logger.debug('runtime of step: {}s\n'.format(t_end - t_start)) + logger.info('runtime of step: {}s\n'.format(t_end - t_start)) except Exception as error: self.test_passed = False res = report.StepSummary(step_number=step.__name__, result=False) diff --git a/Tst/tst/generator_templates/co_post_condition_entry.py b/Tst/tst/generator_templates/co_post_condition_entry.py index 75c7e19..2a8786a 100644 --- a/Tst/tst/generator_templates/co_post_condition_entry.py +++ b/Tst/tst/generator_templates/co_post_condition_entry.py @@ -13,13 +13,3 @@ print('Hello, I am the whole post-condition') #reset = tc.reset_all_housekeepings(pool_name=pool_name) success = True - - -#####-Save-##### - - - -#####-Save-##### - - - diff --git a/Tst/tst/generator_templates/co_pre_condition_entry.py b/Tst/tst/generator_templates/co_pre_condition_entry.py index 503f308..1270098 100644 --- a/Tst/tst/generator_templates/co_pre_condition_entry.py +++ b/Tst/tst/generator_templates/co_pre_condition_entry.py @@ -12,18 +12,3 @@ success = True print('No pre-conditions have been given') success = True - - - - - -#####-Save-##### - - - - - -#####-Save-##### - - - diff --git a/Tst/tst/view.py b/Tst/tst/view.py index 2e2edb7..0e7b657 100644 --- a/Tst/tst/view.py +++ b/Tst/tst/view.py @@ -302,6 +302,9 @@ class Board(Gtk.Box): self.model.precon = precon_name # update the data model viewer self.app.update_model_viewer() + current_model = self.app.current_model() + if current_model: + current_model.precon = precon_name return def set_postcon_model(self): @@ -319,10 +322,13 @@ class Board(Gtk.Box): self.model.postcon = postcon_name # update the data model viewer self.app.update_model_viewer() + current_model = self.app.current_model() + if current_model: + current_model.postcon = postcon_name return def precon_edit_clicked(self, widget): - dialog = Edit_Pre_Post_Con_Dialog(self, 'pre') + dialog = Edit_Pre_Post_Con_Dialog(self, 'pre', self.precon_selection.get_active()) response = dialog.run() if response == Gtk.ResponseType.OK: dialog.destroy() @@ -330,7 +336,7 @@ class Board(Gtk.Box): dialog.destroy() def postcon_edit_clicked(self, widget): - dialog = Edit_Pre_Post_Con_Dialog(self, 'post') + dialog = Edit_Pre_Post_Con_Dialog(self, 'post', self.postcon_selection.get_active()) response = dialog.run() if response == Gtk.ResponseType.OK: dialog.destroy() @@ -1345,13 +1351,14 @@ class StepRightClickMenu(Gtk.Menu): self.step_widget.board.update_widget_data() class Edit_Pre_Post_Con_Dialog(Gtk.Dialog): - def __init__(self, parent, pre_post): + def __init__(self, parent, pre_post, selection): #Gtk.Dialog.__init__(self, title='PRE-Conditions', transient_for=parent, flags=0) Gtk.Dialog.__init__(self, title=pre_post.upper() + ' -Conditions') self.add_buttons( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK ) self.set_default_size(200, 200) + self.first_entry = selection self.win = parent self.file_path = os.path.join(confignator.get_option('paths', 'tst'), 'tst/generator_templates/co_'+pre_post+'_condition_entry.py') @@ -1377,6 +1384,7 @@ class Edit_Pre_Post_Con_Dialog(Gtk.Dialog): self.selection = Gtk.ComboBox.new_with_model_and_entry(self.get_con_sections_model()) self.selection.connect("changed", self.on_name_combo_changed) self.selection.set_entry_text_column(0) + self.selection.set_active(self.first_entry) self.save_button = Gtk.Button.new_with_label('Save') self.save_button.connect("clicked", self.save_button_clicked) @@ -1419,10 +1427,13 @@ class Edit_Pre_Post_Con_Dialog(Gtk.Dialog): name, start_line, end_line = model[tree_iter] new = False else: - entry = widget.get_child() + entry = self.selection.get_child() name = entry.get_text() new = True + if not name: + return + buf = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter(), True) if new: -- GitLab