66 lines
2.5 KiB
Markdown
66 lines
2.5 KiB
Markdown
# Developer Guide
|
|
|
|
So you want to contribute code to the OpenSearch Go Client? Excellent! We're glad you're here. Here's what you need to do:
|
|
|
|
## Getting Started
|
|
|
|
### Git Clone OpenSearch Go Client Repository
|
|
|
|
Fork [opensearch-project/opensearch-go](https://github.com/opensearch-project/opensearch-go) and clone locally,
|
|
e.g. `git clone https://github.com/[your username]/opensearch-go.git`.
|
|
|
|
### Install Prerequisites
|
|
|
|
#### Go 1.11
|
|
OpenSearch Go Client builds using [Go](https://golang.org/doc/install) 1.11 at a minimum.
|
|
|
|
#### Docker
|
|
|
|
[Docker](https://docs.docker.com/install/) is required for building some OpenSearch artifacts and executing integration tests.
|
|
|
|
### Unit Testing
|
|
Go has a simple tool for running tests, and we simplified it further by creating this make command:
|
|
```
|
|
make test-unit
|
|
```
|
|
|
|
Individual unit tests can be run with the following command:
|
|
```
|
|
cd folder-path/to/test;
|
|
go test -v -run TestName;
|
|
```
|
|
|
|
### Integration Testing
|
|
In order to test opensearch-go client, you need a running OpenSearch cluster. You can use Docker to accomplish this.
|
|
The [Docker Compose file](.ci/opensearch/docker-compose.yml) supports the ability to run integration tests for the project in local environments.
|
|
If you have not installed docker-compose, you can install it from this [link](https://docs.docker.com/compose/install/).
|
|
|
|
In order to differentiate unit tests from integration tests, Go has a built-in mechanism for allowing you to logically separate your tests
|
|
with [build tags](https://pkg.go.dev/cmd/go#hdr-Build_constraints). The build tag needs to be placed as close to the top of the file as possible, and must have a blank line beneath it.
|
|
Hence, create all integration tests with build tag 'integration'.
|
|
|
|
#### Execute integration tests from your terminal
|
|
1. Run below command to start containers. By default, it will launch latest OpenSearch cluster.
|
|
```
|
|
make cluster.opensearch.build cluster.opensearch.start
|
|
```
|
|
2. Run all integration tests.
|
|
```
|
|
make test-integ race=true
|
|
```
|
|
3. Stop and clean containers.
|
|
```
|
|
make cluster.opensearch.stop cluster.clean
|
|
```
|
|
## Use an Editor
|
|
|
|
### GoLand
|
|
You can import the OpenSearch project into GoLand as follows:
|
|
|
|
1. Select **File | Open**
|
|
2. In the subsequent dialog navigate to the ~/go/src/opensearch-go and click **Open**
|
|
|
|
After you have opened your project, you need to specify the location of the Go SDK.
|
|
You can either specify a local path to the SDK or download it. To set the Go SDK, navigate to **Go | GOROOT** and
|
|
set accordingly.
|