From d9a734cb7f7c6d231b916b22796ec41ed574ae35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Kub=C3=AD=C4=8Dek?= Date: Thu, 15 Dec 2022 14:45:21 +0100 Subject: [PATCH] Add callback: UploadTestResult --- main.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/main.py b/main.py index 460efd8..2ec175c 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ from openhtf.util import conf, format_string, data from openhtf.output.callbacks import json_factory from openhtf.core.test_record import PhaseOutcome +LOG_FILENAME_PATTERN = 'cache/test_results/{dut_id}_{start_time_millis}.test.json' conf.declare('label_printer', default_value='eledio', description='Label printer') @@ -45,7 +46,41 @@ def trigger(test, prompts): test.dut_id = response['dutID'] +class UploadTestResult(json_factory.OutputToJSON): + def __init__(self, folder_pattern, indent=4): + self.folder_pattern = folder_pattern + super().__init__(indent=indent) + + def __call__(self, test_record): + if test_record.is_started(): + record_dict = data.convert_to_base_types( + test_record, ignore_keys=('code_info', 'phases', 'log_records')) + + output_folder = format_string(self.folder_pattern, record_dict) + + _record = self.serialize_test_record(test_record) + with open(output_folder, 'w') as f: + f.write(_record) + + # Upload test results here to the ERP + """ + import json + from test_tools.tester_core.plugs.erp import ErpPlug + + erp = ErpPlug() + erp.graphql('test_tools/tester_core/graphql/upload_device_files.graphql', files=[output_folder], + sn=json.loads(_record)["dut_id"]) + if record_dict['outcome'] == 'PASS': + erp.graphql('test_tools/tester_core/graphql/set_device_state.graphql', state='ok', + sn=json.loads(_record)["dut_id"]) + else: + erp.graphql('test_tools/tester_core/graphql/set_device_state.graphql', state='defective', + sn=json.loads(_record)["dut_id"]) + """ + + if __name__ == '__main__': with open('station_config/config.yaml') as f: conf.load_from_file(f) + plan.add_callbacks(UploadTestResult(LOG_FILENAME_PATTERN, indent=2)) plan.run(launch_browser=False) \ No newline at end of file