def test_fallback_if_new_tranformations_config_specified( self, trans_config, use_legacy, use_new_fe, conversion_method, fallback_reason): with patch( 'openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_legacy, use_new_fe) args.input_model = "test_model.onnx" args.transformations_config = trans_config with patch( 'openvino.tools.mo.utils.class_registration.apply_transform' ): # skip applying transforms if conversion_method == 'onnx_frontend': with pytest.raises( RuntimeError ): # workaround to use in tests not existed libaries prepare_ir(args) else: prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', conversion_method) if fallback_reason: tm.Telemetry.send_event.assert_any_call( 'mo', 'fallback_reason', fallback_reason) else: with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call( 'mo', 'fallback_reason', fallback_reason)
def test_fallback_if_extension_specified(self, extension, use_legacy, use_new_fe, conversion_method, fallback_reason): with patch( 'openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_legacy, use_new_fe) args.extensions = extension args.input_model = "test_model.onnx" if conversion_method: prepare_ir(args) tm.Telemetry.send_event.assert_any_call( 'mo', 'conversion_method', conversion_method) if fallback_reason: tm.Telemetry.send_event.assert_any_call( 'mo', 'fallback_reason', fallback_reason) else: with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call( 'mo', 'fallback_reason', fallback_reason) else: with pytest.raises( Error): # not supported extensions on new path prepare_ir(args)
def test_exception_if_old_extensions_used_for_pdpd(self): args = base_args_config() args.framework = 'paddle' args.extensions = 'dir_to_extension' args.input_model = 'paddle_dir/relu/relu.pdmodel' with pytest.raises(Error) as ex: # not called prepare_ir(args) assert str(ex) == 'Legacy transformations configuration is not supported for the new frontend'
def test_exeption_if_mixed_types_of_trans_configs(self): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config() args.input_model = "test_model.onnx" args.transformations_config = 'test_config_4.json' with pytest.raises(Error): prepare_ir(args)
def test_exception_if_new_trans_config_on_legacy_path(self): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_legacy_fe=True) args.input_model = "test_model.onnx" args.transformations_config = 'test_config_1.json' with pytest.raises(Error) as ex: # not called prepare_ir(args) assert str(ex) == 'New kind of transformations configuration used on legacy path'
def test_no_fallback_if_pdpd(self, use_new_fe, use_legacy, extension, expected_path): args = base_args_config(use_legacy, use_new_fe) args.framework = 'paddle' args.extensions = extension args.input_model = 'paddle_dir/relu/relu.pdmodel' prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', expected_path) with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason')
def test_fallback_if_legacy_set_as_default(self, trans_config, use_legacy, use_new_fe, expected_path): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = {'onnx': 'legacy', 'tf': 'legacy'} args = base_args_config(use_legacy, use_new_fe) args.input_model = "test_model.onnx" args.transformations_config = trans_config prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', expected_path) with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason')
def test_fallback_if_two_new_extension_specified(self, use_legacy, use_new_fe, conversion_method): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_legacy, use_new_fe) args.extensions = 'onnx_fe_ext.so,onnx_fe_ext_2.so' args.input_model = "test_model.onnx" if conversion_method: prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', conversion_method) else: with pytest.raises(Error): prepare_ir(args)
def test_fallback_if_input_freezing_used_in_deprecated_way(self, input_freezing_value, use_new_fe, use_legacy, conversion_method, fallback_reason): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_legacy, use_new_fe) args.input_model = "test_model.onnx" args.freeze_placeholder_with_value = input_freezing_value prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', conversion_method) if fallback_reason: tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason) else: with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)
def test_fallback_if_both_extension_and_trans_config_specified(self, extension, trans_config, use_new_fe, expected_path, fallback_reason): with patch('openvino.tools.mo.main.get_default_frontends') as default_fe: default_fe.return_value = get_test_default_frontends() args = base_args_config(use_new_fe=use_new_fe) args.extensions = extension args.input_model = "test_model.onnx" args.transformations_config = trans_config prepare_ir(args) tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', expected_path) if fallback_reason: tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason) else: with pytest.raises(AssertionError): # not called tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)
def test_model(self, json_print): args = base_args_config() args.input_model = "test_model.onnx" with patch('sys.exit') as exit_mock: # do not exit execution prepare_ir(args) result = json_print.call_args.args[0] assert 'inputs' in result assert result['inputs'] == json.loads('{"in1": {"shape": [1, 2], "data_type": "float32", "value": "None"}, \ "in2": {"shape": [1, 2], "data_type": "float32", "value": "None"}}') assert 'intermediate' in result assert result['intermediate'] == json.loads('{"in1": {"shape": [1, 2], "data_type": "float32", "value": "None"}, \ "in2": {"shape": [1, 2], "data_type": "float32", "value": "None"}, \ "add_out": {"shape": "None", "data_type": "None", "value": "None"}}')
def test_conersion_if_transformations_config_is_used(self): args = base_args_config() args.input_model = "test_model.onnx" args.transformations_config = "test_config.json" graph, model = prepare_ir(args) assert model.get_friendly_name() == "TestFunction"
def test_conersion_if_extensions_is_used(self): args = base_args_config() args.input_model = "test_model.onnx" args.extensions = get_builtin_extensions_path() graph, model = prepare_ir(args) assert any(op.get_type_name() == "Swish" for op in model.get_ops()) assert all(op.get_type_name() != "Relu" for op in model.get_ops())