Coder Social home page Coder Social logo

mountebank-grpc's People

Contributors

cbrz avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

mountebank-grpc's Issues

Unable to match predicate of path and value for grpc request

Hi there, first of all thanks a lot for this plugin to bring grpc to mountebank. Hopefully you are still maintaining this project and could help to sort out an issue related to matching precicates for the grpc request. I have posted the original question on stackoverflow. Below is the question replicated for documenting it here in the project:

I am using the grpc plugin to create stubs for grpc requests. It works very well when matching the path only. However, I am facing issues to match both the path and the value. In particular, I am using the jsonpath to select the fields to match. Here is a sample o the request:

{
  "path": "/service.DataProvider/ReadData",
  "value": {
    "identifiers": [
      {
        "unique_id": "unset",
        "data_id": "point1",
        "system_id": "mock"
      }
    ],
    "start_time": {
      "seconds": "1650431509",
      "nanos": 0
    },
    "end_time": {
      "seconds": "1650431569",
      "nanos": 0
    }
  }
}

and the predicates:

        "predicates": [
        {
            "deepEquals": {
              "path": "/service.DataProvider/ReadData"
            }
          },
          {
            "jsonpath": {
              "selector": "$.identifiers[0].data_id"
            },
            "deepEquals": {
              "value": "point1"
            }
          },
          {
            "jsonpath": {
              "selector": "$.identifiers[0].system_id"
            },
            "deepEquals": {
              "value": "mock"
            }
          }
        ]

Any idea of what is wrong on the predicates above? Any comments will be highly appreciated. Thanks!

Unable to install using npm install after cloning

Cloned this to git clone https://github.com/cbrz/mountebank-grpc.git
/root/mountebank-grpc
and installed using npm. Installation failed with error

ERROR_SNIPPET:

../deps/grpc/third_party/upb/upb/upb.h:27:28: fatal error: upb/port_def.inc: No such file or directory
#include "upb/port_def.inc"
^
compilation terminated.
make: *** [Release/obj.target/grpc/deps/grpc/src/core/lib/security/credentials/alts/alts_credentials.o] Error 1
make: Leaving directory /root/mountebank-grpc/node_modules/grpc/build' gyp ERR! build error gyp ERR! stack Error: make` failed with exit code: 2

COMPLETE_INSTALLTION_LOG:

[ root@260ec173eafc:~/mountebank-grpc {master} ]$ npm install

[email protected] install /root/mountebank-grpc/node_modules/grpc
node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://node-precompiled-binaries.grpc.io/grpc/v1.24.0/node-v79-linux-x64-glibc.tar.gz
node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v79 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory /root/mountebank-grpc/node_modules/grpc/build' CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/avl/avl.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/backoff/backoff.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_args.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack_builder.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_trace.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channelz.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channelz_registry.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/connected_channel.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_registry.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/status_util.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/compression.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/compression_args.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/compression_internal.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/message_compress.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression_gzip.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression_identity.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/stats.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/stats_data.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/format_request.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/httpcli.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/parser.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/buffer_list.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/call_combiner.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/cfstream_handle.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/combiner.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_cfstream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/error.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/error_cfstream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_epoll1_linux.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_epollex_linux.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_poll_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/exec_ctx.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/executor.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/executor/mpmcqueue.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/executor/threadpool.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/fork_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/fork_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_fallback.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_host_name_max.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_sysconf.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/grpc_if_nametoindex_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/internal_errqueue.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iocp_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_internal.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/is_epollexclusive_available.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/load_file.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/lockfree_event.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/polling_entity.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_set.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_set_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_set_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resource_quota.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/sockaddr_utils.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_factory_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_mutator.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_common_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_linux.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_cfstream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_windows.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/time_averaged_stats.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_custom.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_generic.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_heap.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_manager.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_uv.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/udp_server.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/unix_sockets_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/unix_sockets_posix_noop.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_pipe.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_posix.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_reader.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_string.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_writer.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/b64.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/percent_encoding.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_buffer.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_intern.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_string_helpers.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/api_trace.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/byte_buffer.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/byte_buffer_reader.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call_details.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call_log_batch.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_init.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_ping.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_stack_type.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/completion_queue.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/completion_queue_factory.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/event_string.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/lame_client.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/metadata_array.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/server.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/validate_metadata.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/version.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/bdp_estimator.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/byte_stream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/connectivity_state.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/error_utils.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/metadata.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/metadata_batch.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/pid_controller.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/static_metadata.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/status_conversion.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/status_metadata.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/timeout_encoding.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/transport.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/transport_op_string.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/uri/uri_parser.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/trace.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_plugin.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/context_list.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_data.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_ping.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_settings.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_table.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/huffsyms.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/incoming_metadata.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/parsing.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/stream_lists.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/stream_map.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/varint.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/writing.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/alpn/alpn.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/filters/http/client/http_client_filter.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/filters/http/http_filters_plugin.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/filters/http/server/http_server_filter.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/httpcli_security_connector.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/security/context/security_context.o CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/security/credentials/alts/alts_credentials.o In file included from ../deps/grpc/third_party/upb/upb/msg.h:14:0, from ../deps/grpc/third_party/upb/upb/generated_util.h:10, from ../deps/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h:12, from ../deps/grpc/src/core/tsi/alts/handshaker/transport_security_common_api.h:29, from ../deps/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h:26, from ../deps/grpc/src/core/lib/security/credentials/alts/alts_credentials.h:26, from ../deps/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc:21: ../deps/grpc/third_party/upb/upb/upb.h:27:28: fatal error: upb/port_def.inc: No such file or directory #include "upb/port_def.inc" ^ compilation terminated. make: *** [Release/obj.target/grpc/deps/grpc/src/core/lib/security/credentials/alts/alts_credentials.o] Error 1 make: Leaving directory /root/mountebank-grpc/node_modules/grpc/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:321:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 3.10.0-1062.9.1.el7.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--library=static_library" "--module=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc" "--napi_version=5" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v79"
gyp ERR! cwd /root/mountebank-grpc/node_modules/grpc
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v79' (1)
node-pre-gyp ERR! stack at ChildProcess. (/root/mountebank-grpc/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:321:20)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:1026:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
node-pre-gyp ERR! System Linux 3.10.0-1062.9.1.el7.x86_64
node-pre-gyp ERR! command "/usr/bin/node" "/root/mountebank-grpc/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd /root/mountebank-grpc/node_modules/grpc
node-pre-gyp ERR! node -v v13.7.0
node-pre-gyp ERR! node-pre-gyp -v v0.13.0
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/root/mountebank-grpc/node_modules/grpc/src/node/extension_binary/node-v79-linux-x64-glibc --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v79' (1)
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-pre-gyp install --fallback-to-build --library=static_library
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-01-27T12_54_12_405Z-debug.log
[ root@260ec173eafc:~/mountebank-grpc {master} ]$

Crashes randomly

I can't reproduce it when subsequently invoke requests manually (using BloomRPC), but it reproduces 50/50 when it invokes through my app.
My guess that's something to do with near simultaneously requests from the app.
What additional info can I provide?

debug: [grpc:4545] [2021-04-14T09:27:28.304Z] sending unary-stream rpc
debug: [grpc:4545] [2021-04-14T09:27:28.304Z] send request to mountebank
debug: [grpc:4545] [2021-04-14T09:27:28.304Z] url='http://localhost:4525/imposters/4545/_requests', data='{"request":{"peer":"ipv4:127.0.0.1:58456","path":"/ru.mts.trading.pub.book.building.BookBuildingService/subscribePlaceOrders","value":{"orderIdFilter":"","instrumentFilter":"BOOB_FIXED"},"metadata":{"initial":{"user-agent":"grpc-java-okhttp/1.35.0","zone-offset":"UTC+03:00","authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}'
debug: [mb:4525] POST /imposters/4545/_requests
debug: [grpc:4545] using predicate match: [{"and":[{"matches":{"path":"BookBuildingService/subscribePlaceOrders"}}]}]
debug: [grpc:4545] generating response from {"is":{"value":[],"metadata":{"initial":{"authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}
debug: [grpc:4545] [2021-04-14T09:27:28.307Z] sending unary-unary rpc
debug: [grpc:4545] [2021-04-14T09:27:28.307Z] send request to mountebank
debug: [grpc:4545] [2021-04-14T09:27:28.307Z] url='http://localhost:4525/imposters/4545/_requests', data='{"request":{"peer":"ipv4:127.0.0.1:58456","path":"/ru.mts.trading.pub.broker_acc_core.BrokerAccountCoreService/GetUserStatus","value":{},"metadata":{"initial":{"user-agent":"grpc-java-okhttp/1.35.0","zone-offset":"UTC+03:00","authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}'
debug: [grpc:4545] [2021-04-14T09:27:28.316Z] response.data="{"response":{"value":[],"metadata":{"initial":{"authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}"
debug: [mb:4525] POST /imposters/4545/_requests
debug: [grpc:4545] using predicate match: [{"matches":{"path":"BrokerAccountCoreService/GetUserStatus"}}]
debug: [grpc:4545] generating response from {"is":{"value":{"status":7},"metadata":{"initial":{"authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}
debug: [http:7777] ::ffff:127.0.0.1:58504 CLOSED
debug: [grpc:4545] [2021-04-14T09:27:28.334Z] response.data="{"response":{"value":{"status":7},"metadata":{"initial":{"authorization":"6a046a79-8e33-4641-9a17-7cad8a38500d"}}}}"
error: [grpc:4545] /Users/Shared/mountebank-grpc/node_modules/grpc/src/server.js:72
call.startBatch(error_batch, function(){});
^

Error: startBatch failed
at handleError (/Users/Shared/mountebank-grpc/node_modules/grpc/src/server.js:72:8)
at ServerUnaryCall.<anonymous> (/Users/Shared/mountebank-grpc/node_modules/grpc/src/server.js:573:5)
at ServerUnaryCall.emit (events.js:314:20)
at /Users/Shared/mountebank-grpc/node_modules/grpc/src/server.js:486:14 {
code: 8
}

error: [grpc:4545] Uh oh! I've crashed! Expect subsequent requests to fail.

"error": "11 OUT_OF_RANGE: invalid message"

Hi,

I'm a big mountebank API user and as my company is moving towards gRCP I'd thought I'd get ahead of the development and have setup a simple service to learn more about it..

I believe I have configured it correctly but it is failing when I send a message :(

Any advice would be appreciated.

Problem: Request is returning

{
  "error": "11 OUT_OF_RANGE: invalid message"
}

Setup

protocols.json

{
    "grpc": {
        "createCommand": "node /Users/tim/mountebank-grpc/src/index.js"
    }
}

Imposters (loaded successfully via postman)

{
    "protocol": "grpc",
    "port": 5050,
    "loglevel": "debug",
    "recordRequests": true,
    "_note_services": "need the name of the package, service and protofile location for this to load",
    "services": {
        "example.ExampleService": {
            "file": "/Users/tim/mountebank-grpc/src/protos/example.proto"
        }
    },
    "options": {
        "protobufjs": {
            "_note": "any options to protobufjs",
            "includeDirs": ""
        }
    },
    "stubs": [{
        "predicates": [
            {
                "matches": { "path": "UnaryUnary" },
                "caseSensitive": false
            }
        ],
        "responses": [
            {
                "is": {
                    "value": {
                        "_note": "gRPC mock unary call response",
                        "_note_streaming": "this is a unary/unary call, streaming requests need the value to be an array",
                        "id": 100,
                        "data": "mock response"
                    },
                    "metadata": {
                        "_note": "gRPC mock initial/trailing metadata response",
                        "initial": {
                            "metadata-initial-key": "metadata-initial-value"
                        },
                        "trailing": {
                            "metadata-trailing-key": "metadata-trailing-value"
                        }
                    },
                    "error": {
                        "_note": "gRPC mock error",
                        "status": "OUT_OF_RANGE",
                        "message": "invalid message"
                    }
                }
            }
        ]
    }]
}

Request (loaded via bloomRPC to 127.0.0.1:5050)

{
  "id": 10,
  "data": "Hello",
  "common": {
    "operators": {
      "eq": true,
      "ne": true,
      "in": true,
      "and": true,
      "or": true
    }
  }
}

Response:

{
  "error": "11 OUT_OF_RANGE: invalid message"
}

mb.log

{"message":"[mb:2525] Loaded custom protocol grpc","level":"info","timestamp":"2021-07-02T06:50:56.496Z"}
{"message":"[mb:2525] mountebank v2.4.0 now taking orders - point your browser to http://localhost:2525/ for help","level":"info","timestamp":"2021-07-02T06:50:56.529Z"}
{"message":"[mb:2525] POST /imposters","level":"info","timestamp":"2021-07-02T06:51:02.461Z"}
{"message":"[grpc:5050] Open for business...","level":"info","timestamp":"2021-07-02T06:51:02.681Z"}
{"message":"[grpc:5050] [2021-07-02T06:51:02.679Z] server started on port '5050'","level":"info","timestamp":"2021-07-02T06:51:02.689Z"}

Stream close immediately

Hello! Thank you for your last answer! I have another one question:
The stream is cut off immediately after the MB has given all the streams answers. Is it possible to prevent the stream from being closed?

Streaming responses are not streamed

I try to mock unary-stream response, but I get answer like unary. I mean that in BloomPRC my mock answered to me one time, it is not streaming. Can someone help me to know what I'm doing wrong and explain how I must configure my imposter to get stream response?

grpc_proxy imposter load failed when different proto files

Hi,

Imposter load fails when proxy is used with different proto files.
Want to know what syntax for proto files is supported.

WORKING_PROTO_FILE:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat /usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/example.proto
syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.example.services";

package example; // service at example.ExampleService
// package example.service; // service at example.service.ExampleService

import "example_request.proto";
import "example_response.proto";

service ExampleService {
rpc ExampleUnaryUnaryCall (ExampleRequest) returns (ExampleResponse) {}
rpc ExampleStreamUnaryCall (stream ExampleRequest) returns (ExampleResponse) {}
rpc ExampleUnaryStreamCall (ExampleRequest) returns (stream ExampleResponse) {}
rpc ExampleStreamStreamCall (stream ExampleRequest) returns (stream ExampleResponse) {}
}
[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

WORKING_IMPOSTER_CONFIG:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat mb_grpc_proxy_templates.ejs
{
"protocol": "grpc",
"port": 4546,
"loglevel": "debug",
"recordRequests": true,
"services": {
"example.ExampleService": {
"file": "/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/example.proto"
}
},
"stubs": [
{
"responses": [
{
"proxy": {
"to": "localhost:4545",
"mode": "proxyAlways",
"predicateGenerators": [{ "matches": {"path": true} }]
}
}
]
}
]
}
[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

WORKING_MB_CONSOLE_LOG:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master } ]$ mb start --protofile protocols.json --loglevel debug --debug true
info: [mb:2525] Loaded custom protocol grpc
info: [mb:2525] mountebank v2.1.2 now taking orders - point your browser to http://localhost:2525/ for help
debug: [mb:2525] config: {"options":{"protofile":"protocols.json","loglevel":"debug","debug":true,"port":2525,"noParse":false,"no-parse":false,"pidfile":"mb.pid","nologfile":false,"logfile":"mb.log","allowInjection":false,"allow-injection":false,"localOnly":false,"local-only":false,"ipWhitelist":["
"],"ip-whitelist":"*","mock":false,"heroku":false},"process":{"nodeVersion":"v13.7.0","architecture":"x64","platform":"linux"}}
info: [mb:2525] POST /imposters
debug: [mb:2525] ::ffff:127.0.0.1:51686 => {"protocol":"grpc","port":4546,"loglevel":"debug","recordRequests":true,"services":{"example.ExampleService":{"file":"/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/example.proto"}},"stubs":[{"responses":[{"proxy":{"to":"localhost:4545","mode":"proxyAlways","predicateGenerators":[{"matches":{"path":true}}]}}]}]}
info: [grpc:4546] Open for business...
info: [grpc:4546] [2020-02-07T13:33:49.849Z] server started on port '4546'
^Cinfo: [mb:2525] Adios - see you soon?
[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

IMPOSTER_CONFIG_WITH_ISSUE:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat mb_grpc_proxy.ejs
{
"protocol": "grpc",
"port": 4546,
"loglevel": "debug",
"recordRequests": true,
"services": {
"example.ExampleService": {
"file": "/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/reverse.proto"
}
},
"stubs": [
{
"responses": [
{
"proxy": {
"to": "135.249.22.155:50051",
"mode": "proxyAlways",
"predicateGenerators": [{ "matches": {"path": true} }]
}
}
]
}
]
}
[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

MB_CONSOLE_ERRORLOG:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master } ]$ mb start --protofile protocols.json --loglevel debug --debug true
info: [mb:2525] Loaded custom protocol grpc
info: [mb:2525] mountebank v2.1.2 now taking orders - point your browser to http://localhost:2525/ for help
debug: [mb:2525] config: {"options":{"protofile":"protocols.json","loglevel":"debug","debug":true,"port":2525,"noParse":false,"no-parse":false,"pidfile":"mb.pid","nologfile":false,"logfile":"mb.log","allowInjection":false,"allow-injection":false,"localOnly":false,"local-only":false,"ipWhitelist":["
"],"ip-whitelist":"*","mock":false,"heroku":false},"process":{"nodeVersion":"v13.7.0","architecture":"x64","platform":"linux"}}
info: [mb:2525] POST /imposters
debug: [mb:2525] ::ffff:127.0.0.1:51696 => {"protocol":"grpc","port":4546,"loglevel":"debug","recordRequests":true,"services":{"example.ExampleService":{"file":"/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/reverse.proto"}},"stubs":[{"responses":[{"proxy":{"to":"135.249.22.155:50051","mode":"proxyAlways","predicateGenerators":[{"matches":{"path":true}}]}}]}]}
error: [grpc:4546] /usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:47
Object.keys(serviceDefinition).forEach(key => {
^

TypeError: Cannot convert undefined or null to object
at Function.keys ()
at createImplementation (/usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:47:12)
at /usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:37:30
at Array.forEach ()
at Object.getServerInstance (/usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:32:37)
at Server. (/usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js:23:41)
at Object.onceWrapper (events.js:427:28)
at Server.emit (events.js:321:20)
at emitCloseNT (net.js:1653:8)
at processTicksAndRejections (internal/process/task_queues.js:83:21)

error: [mb:2525] error creating imposter: {"code":"cannot start server","message":""grpc" start command failed (exit code 1)","source":"node /usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js","domainThrown":true,"name":"Error","stack":"Error\n at Object.from (/usr/lib/node_modules/mountebank/src/util/inherit.js:15:17)\n at createError (/usr/lib/node_modules/mountebank/src/util/errors.js:10:26)\n at Object.ProtocolError (/usr/lib/node_modules/mountebank/src/util/errors.js:21:34)\n at ChildProcess. (/usr/lib/node_modules/mountebank/src/models/protocols.js:68:44)\n at Object.onceWrapper (events.js:428:26)\n at ChildProcess.emit (events.js:321:20)\n at ChildProcess.EventEmitter.emit (domain.js:547:15)\n at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)"}

ERRORED_IMPOSTER_LOAD:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ curl -X POST -d @mb_grpc_proxy.ejs http://localhost:2525/imposters --header "Content-Type:application/json"
{
"errors": [
{
"code": "cannot start server",
"message": ""grpc" start command failed (exit code 1)",
"source": "node /usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js",
"domainThrown": true
}
]
}[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

ERRORED_PROTO_FILE:

[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat /usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/reverse.proto
syntax = "proto3";

package reverse;

service ReverseService {
rpc ReverseString (ReverseRequest) returns (ReverseReply) {}
}

message ReverseRequest {
string data = 1;
}

message ReverseReply {
string reversed = 2;
}[ root@d5dc81eadab6:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

Thanks and Regards,
Muthukrishnan.P

mountebank-grpc:imposter load - failed @ protobufjs/src/root.js

Hi,

I am using mountebank with grpc provided in this git

https://github.com/cbrz/mountebank-grpc

Loading imposter is failing with error in mb console. Please find below the error output,

MB_CONSOLE_LOG:
[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master } ]$ mb start --protofile protocols.json --loglevel debug
info: [mb:2525] Loaded custom protocol grpc
info: [mb:2525] mountebank v2.1.2 now taking orders - point your browser to http://localhost:2525/ for help
debug: [mb:2525] config: {"options":{"protofile":"protocols.json","loglevel":"debug","port":2525,"noParse":false,"no-parse":false,"pidfile":"mb.pid","nologfile":false,"logfile":"mb.log","allowInjection":false,"allow-injection":false,"localOnly":false,"local-only":false,"ipWhitelist":["
"],"ip-whitelist":"*","mock":false,"debug":false,"heroku":false},"process":{"nodeVersion":"v13.7.0","architecture":"x64","platform":"linux"}}
info: [mb:2525] POST /imposters
debug: [mb:2525] ::ffff:127.0.0.1:43380 => {"protocol":"grpc","port":4545,"loglevel":"debug","recordRequests":true,"services":{"_note":"need the name of the service and protofile location for this to load","example.ExampleService":{"file":"/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/example.proto"}},"options":{"protobufjs":{"_note":"any options to protobufjs","includeDirs":["/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos"]}},"stubs":[{"predicates":[{"matches":{"path":"UnaryUnary"},"caseSensitive":false}],"responses":[{"is":{"value":{"_note":"gRPC mock unary call response","_note_streaming":"this is a unary/unary call, streaming requests need the value to be an array","id":100,"data":"mock response"},"metadata":{"_note":"gRPC mock initial/trailing metadata response","initial":{"metadata-initial-key":"metadata-initial-value"},"trailing":{"metadata-trailing-key":"metadata-trailing-value"}},"error":{"_note":"gRPC mock error","status":"OUT_OF_RANGE","message":"invalid message"}}}]}]}
info: [grpc:4545] Open for business...
error: [grpc:4545] /usr/lib/node_modules/mountebank/mountebank-grpc/node_modules/protobufjs/src/root.js:193
for (var i = 0, resolved; i < filename.length; ++i)
^

TypeError: Cannot read property 'length' of undefined
at Root.load (/usr/lib/node_modules/mountebank/mountebank-grpc/node_modules/protobufjs/src/root.js:193:44)
at Root.loadSync (/usr/lib/node_modules/mountebank/mountebank-grpc/node_modules/protobufjs/src/root.js:236:17)
at Object.loadSync (/usr/lib/node_modules/mountebank/mountebank-grpc/node_modules/@grpc/proto-loader/build/src/index.js:221:27)
at Object.getServiceDefinition (/usr/lib/node_modules/mountebank/mountebank-grpc/src/grpc/service.js:38:36)
at /usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:35:41
at Array.forEach ()
at Object.getServerInstance (/usr/lib/node_modules/mountebank/mountebank-grpc/src/mock.js:32:37)
at Server. (/usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js:23:41)
at Object.onceWrapper (events.js:427:28)
at Server.emit (events.js:321:20)

error: [grpc:4545] Uh oh! I've crashed! Expect subsequent requests to fail.

IMPOSTER_LOAD_COMMAND:

[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ curl -X POST -d @mb_grpc_templates.ejs http://localhost:2525/imposters --header "Content-Type:application/json"
{
"errors": [
{
"code": "cannot start server",
"message": ""grpc" start command failed (exit code 1)",
"source": "node /usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js",
"domainThrown": true
}
]
}[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

Tried to add debug in protobufjs/src/root.js by adding arguments print in console, mountebank is crashing during imposter load now.
error: [grpc:4545] /usr/lib/node_modules/mountebank/mountebank-grpc/node_modules/protobufjs/src/root.js:193

Root.prototype.load = function load(filename, options, callback) {
console.log(arguments); << added this line for debugging
if (typeof options === "function") {

IMPOSTER_CONTENT:

[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat /usr/lib/node_modules/mountebank/mountebank-grpc/mb_grpc_templates.ejs
{
"protocol": "grpc",
"port": 4545,
"loglevel": "debug",
"recordRequests": true,
"services": {
"_note": "need the name of the service and protofile location for this to load",
"example.ExampleService": {
"file": "/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos/example.proto"
}
},
"options": {
"protobufjs": {
"_note": "any options to protobufjs",
"includeDirs": ["/usr/lib/node_modules/mountebank/mountebank-grpc/src/protos"]
}
},
"stubs": [{
"predicates": [
{
"matches": { "path": "UnaryUnary" },
"caseSensitive": false
}
],
"responses": [
{
"is": {
"value": {
"_note": "gRPC mock unary call response",
"_note_streaming": "this is a unary/unary call, streaming requests need the value to be an array",
"id": 100,
"data": "mock response"
},
"metadata": {
"_note": "gRPC mock initial/trailing metadata response",
"initial": {
"metadata-initial-key": "metadata-initial-value"
},
"trailing": {
"metadata-trailing-key": "metadata-trailing-value"
}
},
"error": {
"_note": "gRPC mock error",
"status": "OUT_OF_RANGE",
"message": "invalid message"
}
}
}
]
}]
}
[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

MOUNTEBANK_GRPC_PRTOCOLS_FILE_CONTENT:
[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$ cat /usr/lib/node_modules/mountebank/mountebank-grpc/protocols.json
{
"grpc": {
"createCommand": "node /usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js"
}
}
[ root@86a565a751fb:/usr/lib/node_modules/mountebank/mountebank-grpc {master *} ]$

/usr/lib/node_modules/mountebank/mountebank-grpc/src/index.js << content https://github.com/cbrz/mountebank-grpc/blob/master/src/index.js

Thanks and Regards,
Muthukrishnan.P

Docker image for Docker compose

Is it possible for you to provide a docker image?
So I can use the plugin via docker using docker compose file and I only need to provide protocols files and imposter files.

Working Dockerfile for mountebank-grpc

Hi,

I was hoping someone could help me and provide me a working docker file for mountebank-grpc.

I've been poking at it for a couple of days now and always end up with error creating imposter: [{"code":"bad data","message":"the grpc protocol is not yet supported"}]

Current attempt:

FROM node:8.2

EXPOSE 2525
#CMD ["mb", "--configfile", "/tmp/perf_sven_grpc_poc/grpc_impostor.ejs", "--protofile","/tmp/perf_sven_grpc_poc/protocols.json","--allowInjection",  "--logfile", "/var/log/mb_gprc.log", "--port", "6105" ]

ENV MOUNTEBANK_VERSION=1.15.0

RUN cd /usr/lib/node_modules; npm install -g mountebank@${MOUNTEBANK_VERSION} --production \
 && npm cache clean --force 2>/dev/null \
 && rm -rf /tmp/npm* \
 && npm install xml2js \
 && npm install dateformat \
 && npm install node-uuid \
 && npm install url \
 && npm install sax \
 && npm install xmlbuilder

RUN mkdir /tmp/perf_sven_grpc_poc
RUN cd /tmp/perf_sven_grpc_poc
RUN git clone https://github.com/cbrz/mountebank-grpc
RUN npm install

COPY ./protocols.json /tmp/perf_sven_grpc_poc/protocols.json
COPY ./01_grpc_unary_unary.ejs /tmp/perf_sven_grpc_poc/01_grpc_unary_unary.ejs
COPY ./grpc_impostor.ejs /tmp/perf_sven_grpc_poc/grpc_impostor.ejs
COPY ./start_mb_grpc.sh /tmp/perf_sven_grpc_poc/start_mb_grpc.sh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.