Skip to content

Commit

Permalink
update readme (#30)
Browse files Browse the repository at this point in the history
change docker upstream
  • Loading branch information
jekiapp authored Oct 3, 2019
2 parents 5b6fe34 + fed49c3 commit 2e2ebc7
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,25 @@ GripMock has 2 main components:

Matched stub will be returned to GRPC service then further parse it to response the rpc call.


## Quick Usage
First, prepare your `.proto` file. or you can use `hello.proto` in `example/pb/` folder. Suppose you put it in `/mypath/hello.proto`. We gonna use Docker image for easier example test.
basic syntax to run GripMock is
`gripmock <protofile>`

- Install [Docker](https://docs.docker.com/install/)
- Run `docker pull ahmadmuzakki/gripmock` to pull the image
- We gonna mount `/mypath/hello.proto` (it must a fullpath) into container and also we expose ports needed. Run `docker run -p 4770:4770 -p 4771:4771 -v /mypath:/proto ahmadmuzakki/gripmock /proto/hello.proto`
- Run `docker pull tkpd/gripmock` to pull the image
- We gonna mount `/mypath/hello.proto` (it must a fullpath) into container and also we expose ports needed. Run `docker run -p 4770:4770 -p 4771:4771 -v /mypath:/proto tkpd/gripmock /proto/hello.proto`
- On separate terminal we gonna add stub into stub service. Run `curl -X POST -d '{"service":"Greeter","method":"SayHello","input":{"equals":{"name":"gripmock"}},"output":{"data":{"message":"Hello GripMock"}}}' localhost:4771/add `
- Now we are ready to test it with our client. you can find client example file under `example/client/`. Execute one of your preferred language. Example for go: `go run example/client/go/*.go`

Check [`example`](https://github.com/tokopedia/gripmock/tree/master/example) folder for various usecase of gripmock.

## Stubbing

Stubbing is the essential mocking of GripMock. It will match and return the expected result into GRPC service. This is where you put all your request expectation and response

Stub Server running on `http://localhost:4771`
### Dynamic stubbing
You could add stubbing on the fly with simple REST. HTTP stub server running on port `:4771`

- `GET /` Will list all stubs mapping.
- `POST /add` Will add stub with provided stub data
Expand Down Expand Up @@ -68,6 +70,14 @@ For our `hello` service example we put stub with below text:
}
```

### Static stubbing
You could initialize gripmock with stub json files and provide the path using `--stub` argument. For example you may
mount your stub file in `/mystubs` folder then mount it to docker like

`docker run -p 4770:4770 -p 4771:4771 -v /mypath:/proto -v /mystubs:/stub tkpd/gripmock --stub=/stub /proto/hello.proto`

Please note that Gripmock still serve http stubbing to modify stored stubs on the fly.

## <a name="input_matching"></a>Input Matching
Stub will responding the expected response if only requested with matching rule of input. Stub service will serve `/find` endpoint with format:
```
Expand Down

0 comments on commit 2e2ebc7

Please sign in to comment.