예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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'
예제 #4
0
    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)
예제 #5
0
    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'
예제 #6
0
    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')
예제 #7
0
    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')
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    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"}}')
예제 #12
0
    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"
예제 #13
0
    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())