pact-ffi 0.0.2-x86_64-linux → 0.4.22-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +69 -5
- data/ffi/linux-x64/libpact_ffi.so +0 -0
- data/lib/pact/detect_os.rb +13 -12
- data/lib/pact/ffi/async_message_pact.rb +29 -0
- data/lib/pact/ffi/http_consumer.rb +40 -0
- data/lib/pact/ffi/logger.rb +34 -0
- data/lib/pact/ffi/message_consumer.rb +129 -0
- data/lib/pact/ffi/mock_server.rb +84 -0
- data/lib/pact/ffi/plugin_consumer.rb +40 -0
- data/lib/pact/ffi/sync_http_consumer.rb +36 -0
- data/lib/pact/ffi/sync_message_consumer.rb +38 -0
- data/lib/pact/ffi/utils.rb +150 -0
- data/lib/pact/ffi/verifier.rb +62 -0
- data/lib/pact/ffi/version.rb +5 -0
- data/lib/pact/ffi.rb +271 -259
- metadata +47 -9
- data/lib/pact/fiddle.rb +0 -1292
@@ -0,0 +1,150 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module Utils
|
7
|
+
extend FFI::Library
|
8
|
+
ffi_lib DetectOS.get_bin_path
|
9
|
+
|
10
|
+
# DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
|
11
|
+
(typedef :uint32, :uint32_type)
|
12
|
+
FfiSpecificationVersion = Hash[
|
13
|
+
'SPECIFICATION_VERSION_UNKNOWN' => 0,
|
14
|
+
'SPECIFICATION_VERSION_V1' => 1,
|
15
|
+
'SPECIFICATION_VERSION_V1_1' => 2,
|
16
|
+
'SPECIFICATION_VERSION_V2' => 3,
|
17
|
+
'SPECIFICATION_VERSION_V3' => 4,
|
18
|
+
'SPECIFICATION_VERSION_V4' => 5,
|
19
|
+
]
|
20
|
+
FfiWritePactResponse = Hash[
|
21
|
+
'SUCCESS' => 0,
|
22
|
+
'GENERAL_PANIC' => 1,
|
23
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 2,
|
24
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
25
|
+
]
|
26
|
+
FfiWriteMessagePactResponse = Hash[
|
27
|
+
'SUCCESS' => 0,
|
28
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 1,
|
29
|
+
'MESSAGE_HANDLE_INVALID' => 2,
|
30
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
31
|
+
]
|
32
|
+
FfiConfigurePluginResponse = Hash[
|
33
|
+
'SUCCESS' => 0,
|
34
|
+
'GENERAL_PANIC' => 1,
|
35
|
+
'FAILED_TO_LOAD_PLUGIN' => 2,
|
36
|
+
'PACT_HANDLE_INVALID' => 3,
|
37
|
+
]
|
38
|
+
FfiPluginInteractionResponse = Hash[
|
39
|
+
'SUCCESS' => 0,
|
40
|
+
'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
|
41
|
+
'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
|
42
|
+
'INTERACTION_HANDLE_IS_INVALID' => 3,
|
43
|
+
'CONTENT_TYPE_IS_NOT_VALID' => 4,
|
44
|
+
'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
|
45
|
+
'PLUGIN_RETURNED_AN_ERROR' => 6,
|
46
|
+
]
|
47
|
+
FfiInteractionPart = Hash[
|
48
|
+
'INTERACTION_PART_REQUEST' => 0,
|
49
|
+
'INTERACTION_PART_RESPONSE' => 1,
|
50
|
+
]
|
51
|
+
# /*
|
52
|
+
# -1 A null pointer was received
|
53
|
+
# -2 The pact JSON could not be parsed
|
54
|
+
# -3 The mock server could not be started
|
55
|
+
# -4 The method panicked
|
56
|
+
# -5 The address is not valid
|
57
|
+
# -6 Could not create the TLS configuration with the self-signed certificate
|
58
|
+
# */
|
59
|
+
FfiPluginCreateMockServerErrors = Hash[
|
60
|
+
'NULL_POINTER' => -1,
|
61
|
+
'JSON_PARSE_ERROR' => -2,
|
62
|
+
'MOCK_SERVER_START_FAIL' => -3,
|
63
|
+
'CORE_PANIC' => -4,
|
64
|
+
'ADDRESS_NOT_VALID' => -5,
|
65
|
+
'TLS_CONFIG' => -6,
|
66
|
+
]
|
67
|
+
|
68
|
+
FfiPluginFunctionResult = Hash[
|
69
|
+
'RESULT_OK' => 0,
|
70
|
+
'RESULT_FAILED' => 1,
|
71
|
+
]
|
72
|
+
|
73
|
+
attach_function :add_text_comment, :pactffi_add_text_comment, %i[uint32_type string], :bool
|
74
|
+
attach_function :set_comment, :pactffi_set_comment, %i[uint32_type string string], :bool
|
75
|
+
attach_function :set_pending, :pactffi_set_pending, %i[uint32_type bool], :bool
|
76
|
+
attach_function :set_key, :pactffi_set_key, %i[uint32_type string], :bool
|
77
|
+
attach_function :match_message, :pactffi_match_message, %i[pointer pointer], :pointer
|
78
|
+
attach_function :mismatches_get_iter, :pactffi_mismatches_get_iter, %i[pointer], :pointer
|
79
|
+
attach_function :mismatches_delete, :pactffi_mismatches_delete, %i[pointer], :void
|
80
|
+
attach_function :mismatches_iter_next, :pactffi_mismatches_iter_next, %i[pointer], :pointer
|
81
|
+
attach_function :mismatches_iter_delete, :pactffi_mismatches_iter_delete, %i[pointer], :void
|
82
|
+
attach_function :mismatch_to_json, :pactffi_mismatch_to_json, %i[pointer], :string
|
83
|
+
attach_function :mismatch_type, :pactffi_mismatch_type, %i[pointer], :string
|
84
|
+
attach_function :mismatch_summary, :pactffi_mismatch_summary, %i[pointer], :string
|
85
|
+
attach_function :mismatch_description, :pactffi_mismatch_description, %i[pointer], :string
|
86
|
+
attach_function :mismatch_ansi_description, :pactffi_mismatch_ansi_description, %i[pointer], :string
|
87
|
+
attach_function :get_error_message, :pactffi_get_error_message, %i[string int32], :int32
|
88
|
+
attach_function :parse_pact_json, :pactffi_parse_pact_json, %i[string], :pointer
|
89
|
+
attach_function :pact_model_delete, :pactffi_pact_model_delete, %i[pointer], :void
|
90
|
+
attach_function :pact_model_interaction_iterator, :pactffi_pact_model_interaction_iterator, %i[pointer], :pointer
|
91
|
+
attach_function :pact_spec_version, :pactffi_pact_spec_version, %i[pointer], :int32
|
92
|
+
attach_function :pact_interaction_delete, :pactffi_pact_interaction_delete, %i[pointer], :void
|
93
|
+
attach_function :consumer_get_name, :pactffi_consumer_get_name, %i[pointer], :string
|
94
|
+
attach_function :pact_get_consumer, :pactffi_pact_get_consumer, %i[pointer], :pointer
|
95
|
+
attach_function :pact_consumer_delete, :pactffi_pact_consumer_delete, %i[pointer], :void
|
96
|
+
attach_function :parse_matcher_definition, :pactffi_parse_matcher_definition, %i[string], :pointer
|
97
|
+
attach_function :matcher_definition_error, :pactffi_matcher_definition_error, %i[pointer], :string
|
98
|
+
attach_function :matcher_definition_value, :pactffi_matcher_definition_value, %i[pointer], :string
|
99
|
+
attach_function :matcher_definition_delete, :pactffi_matcher_definition_delete, %i[pointer], :void
|
100
|
+
attach_function :matcher_definition_generator, :pactffi_matcher_definition_generator, %i[pointer], :pointer
|
101
|
+
attach_function :matcher_definition_value_type, :pactffi_matcher_definition_value_type, %i[pointer], :int32
|
102
|
+
attach_function :matching_rule_iter_delete, :pactffi_matching_rule_iter_delete, %i[pointer], :void
|
103
|
+
attach_function :matcher_definition_iter, :pactffi_matcher_definition_iter, %i[pointer], :pointer
|
104
|
+
attach_function :matching_rule_iter_next, :pactffi_matching_rule_iter_next, %i[pointer], :pointer
|
105
|
+
attach_function :matching_rule_id, :pactffi_matching_rule_id, %i[pointer], :uint16
|
106
|
+
attach_function :matching_rule_value, :pactffi_matching_rule_value, %i[pointer], :string
|
107
|
+
attach_function :matching_rule_pointer, :pactffi_matching_rule_pointer, %i[pointer], :pointer
|
108
|
+
attach_function :matching_rule_reference_name, :pactffi_matching_rule_reference_name, %i[pointer], :string
|
109
|
+
attach_function :validate_datetime, :pactffi_validate_datetime, %i[string string], :int32
|
110
|
+
attach_function :generator_to_json, :pactffi_generator_to_json, %i[pointer], :string
|
111
|
+
attach_function :generator_generate_string, :pactffi_generator_generate_string, %i[pointer string], :string
|
112
|
+
attach_function :generator_generate_integer, :pactffi_generator_generate_integer, %i[pointer string], :uint16
|
113
|
+
attach_function :generators_iter_delete, :pactffi_generators_iter_delete, %i[pointer], :void
|
114
|
+
attach_function :generators_iter_next, :pactffi_generators_iter_next, %i[pointer], :pointer
|
115
|
+
attach_function :generators_iter_pair_delete, :pactffi_generators_iter_pair_delete, %i[pointer], :void
|
116
|
+
attach_function :matching_rule_to_json, :pactffi_matching_rule_to_json, %i[pointer], :string
|
117
|
+
attach_function :matching_rules_iter_delete, :pactffi_matching_rules_iter_delete, %i[pointer], :void
|
118
|
+
attach_function :matching_rules_iter_next, :pactffi_matching_rules_iter_next, %i[pointer], :pointer
|
119
|
+
attach_function :matching_rules_iter_pair_delete, :pactffi_matching_rules_iter_pair_delete, %i[pointer], :void
|
120
|
+
attach_function :provider_state_iter_next, :pactffi_provider_state_iter_next, %i[pointer], :pointer
|
121
|
+
attach_function :provider_state_iter_delete, :pactffi_provider_state_iter_delete, %i[pointer], :void
|
122
|
+
attach_function :provider_get_name, :pactffi_provider_get_name, %i[pointer], :string
|
123
|
+
attach_function :pact_get_provider, :pactffi_pact_get_provider, %i[pointer], :pointer
|
124
|
+
attach_function :pact_provider_delete, :pactffi_pact_provider_delete, %i[pointer], :void
|
125
|
+
attach_function :provider_state_get_name, :pactffi_provider_state_get_name, %i[pointer], :string
|
126
|
+
attach_function :provider_state_get_param_iter, :pactffi_provider_state_get_param_iter, %i[pointer], :pointer
|
127
|
+
attach_function :provider_state_param_iter_next, :pactffi_provider_state_param_iter_next, %i[pointer], :pointer
|
128
|
+
attach_function :provider_state_delete, :pactffi_provider_state_delete, %i[pointer], :void
|
129
|
+
attach_function :provider_state_param_iter_delete, :pactffi_provider_state_param_iter_delete, %i[pointer], :void
|
130
|
+
attach_function :provider_state_param_pair_delete, :pactffi_provider_state_param_pair_delete, %i[pointer], :void
|
131
|
+
attach_function :string_delete, :pactffi_string_delete, %i[string], :void
|
132
|
+
attach_function :generate_datetime_string, :pactffi_generate_datetime_string, %i[string], :pointer
|
133
|
+
attach_function :check_regex, :pactffi_check_regex, %i[string string], :bool
|
134
|
+
attach_function :generate_regex_value, :pactffi_generate_regex_value, %i[string], :pointer
|
135
|
+
attach_function :free_string, :pactffi_free_string, %i[string], :void
|
136
|
+
attach_function :new_pact, :pactffi_new_pact, %i[string string], :uint16
|
137
|
+
attach_function :interaction_contents, :pactffi_interaction_contents, %i[uint32_type int32 string string],
|
138
|
+
:uint32_type
|
139
|
+
attach_function :matches_string_value, :pactffi_matches_string_value, %i[pointer string string uint8], :string
|
140
|
+
attach_function :matches_u64_value, :pactffi_matches_u64_value, %i[pointer ulong_long ulong_long uint8], :string
|
141
|
+
attach_function :matches_i64_value, :pactffi_matches_i64_value, %i[pointer int64 int64 uint8], :string
|
142
|
+
attach_function :matches_f64_value, :pactffi_matches_f64_value, %i[pointer double double uint8], :string
|
143
|
+
attach_function :matches_bool_value, :pactffi_matches_bool_value, %i[pointer uint8 uint8 uint8], :string
|
144
|
+
attach_function :matches_binary_value, :pactffi_matches_binary_value,
|
145
|
+
%i[pointer pointer ulong_long pointer ulong_long uint8], :string
|
146
|
+
attach_function :matches_json_value, :pactffi_matches_json_value, %i[pointer string string uint8], :string
|
147
|
+
attach_function :pact_handle_to_pointer, :pactffi_pact_handle_to_pointer, %i[uint16], :pointer
|
148
|
+
attach_function :handle_get_pact_spec_version, :pactffi_handle_get_pact_spec_version, %i[uint16], :int32
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# require 'pact/native_verifier/version'
|
2
|
+
# require 'pact/native_verifier/app'
|
3
|
+
|
4
|
+
# require 'pact-ffi/version'
|
5
|
+
require 'ffi'
|
6
|
+
require 'pact/detect_os'
|
7
|
+
|
8
|
+
module PactFfi
|
9
|
+
module Verifier
|
10
|
+
extend FFI::Library
|
11
|
+
ffi_lib DetectOS.get_bin_path
|
12
|
+
# DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
|
13
|
+
(typedef :uint32, :uint32_type)
|
14
|
+
|
15
|
+
# /*
|
16
|
+
# * | Error | Description |
|
17
|
+
# * |-------|-------------|
|
18
|
+
# * | 1 | The verification process failed, see output for errors |
|
19
|
+
# * | 2 | A null pointer was received |
|
20
|
+
# * | 3 | The method panicked |
|
21
|
+
# * | 4 | Invalid arguments were provided to the verification process |
|
22
|
+
# */
|
23
|
+
Response = Hash[
|
24
|
+
'VERIFICATION_SUCCESSFUL' => 0,
|
25
|
+
'VERIFICATION_FAILED' => 1,
|
26
|
+
'NULL_POINTER_RECEIVED' => 2,
|
27
|
+
'METHOD_PANICKED' => 3,
|
28
|
+
'INVALID_ARGUMENTS' => 4,
|
29
|
+
]
|
30
|
+
|
31
|
+
attach_function :verify, :pactffi_verify, %i[string], :int32
|
32
|
+
attach_function :new, :pactffi_verifier_new, %i[], :pointer
|
33
|
+
attach_function :new_for_application, :pactffi_verifier_new_for_application, %i[string string], :pointer
|
34
|
+
attach_function :shutdown, :pactffi_verifier_shutdown, %i[pointer], :void
|
35
|
+
attach_function :set_provider_info, :pactffi_verifier_set_provider_info,
|
36
|
+
%i[pointer string string string uint16 string], :void
|
37
|
+
attach_function :add_provider_transport, :pactffi_verifier_add_provider_transport,
|
38
|
+
%i[pointer string uint16 string string], :void
|
39
|
+
attach_function :set_filter_info, :pactffi_verifier_set_filter_info, %i[pointer string string uint8], :void
|
40
|
+
attach_function :set_provider_state, :pactffi_verifier_set_provider_state, %i[pointer string uint8 uint8], :void
|
41
|
+
attach_function :set_verification_options, :pactffi_verifier_set_verification_options, %i[pointer uint8 ulong_long],
|
42
|
+
:int32
|
43
|
+
attach_function :set_coloured_output, :pactffi_verifier_set_coloured_output, %i[pointer uint8], :int32
|
44
|
+
attach_function :set_no_pacts_is_error, :pactffi_verifier_set_no_pacts_is_error, %i[pointer uint8], :int32
|
45
|
+
attach_function :set_publish_options, :pactffi_verifier_set_publish_options,
|
46
|
+
%i[pointer string string pointer uint16 string], :int32
|
47
|
+
attach_function :set_consumer_filters, :pactffi_verifier_set_consumer_filters, %i[pointer pointer uint16], :void
|
48
|
+
attach_function :add_custom_header, :pactffi_verifier_add_custom_header, %i[pointer string string], :void
|
49
|
+
attach_function :add_file_source, :pactffi_verifier_add_file_source, %i[pointer string], :void
|
50
|
+
attach_function :add_directory_source, :pactffi_verifier_add_directory_source, %i[pointer string], :void
|
51
|
+
attach_function :url_source, :pactffi_verifier_url_source, %i[pointer string string string string], :void
|
52
|
+
attach_function :broker_source, :pactffi_verifier_broker_source, %i[pointer string string string string], :void
|
53
|
+
attach_function :broker_source_with_selectors, :pactffi_verifier_broker_source_with_selectors,
|
54
|
+
%i[pointer string string string string uint8 string pointer uint16 string pointer uint16 pointer uint16], :void
|
55
|
+
attach_function :execute, :pactffi_verifier_execute, %i[pointer], :int32
|
56
|
+
attach_function :cli_args, :pactffi_verifier_cli_args, %i[], :string
|
57
|
+
attach_function :logs, :pactffi_verifier_logs, %i[pointer], :string
|
58
|
+
attach_function :logs_for_provider, :pactffi_verifier_logs_for_provider, %i[string], :string
|
59
|
+
attach_function :output, :pactffi_verifier_output, %i[pointer uint8], :string
|
60
|
+
attach_function :json, :pactffi_verifier_json, %i[pointer], :string
|
61
|
+
end
|
62
|
+
end
|