This is an automated email from the ASF dual-hosted git repository.

piotr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/master by this push:
     new 31a010d8 feat: Add Go BDD and CI (#1922)
31a010d8 is described below

commit 31a010d84233cfb3d9390a723d75722d06230a9c
Author: Chengxi <[email protected]>
AuthorDate: Sun Jun 29 13:51:20 2025 -0400

    feat: Add Go BDD and CI (#1922)
    
    - Add Golang BDD, move the e2e test from golang sdk to BDD.
    - Add Golang CI
---
 .github/changed-files-config.json                  | 12 ++++++
 .../{ci-test-bdd.yml => ci-check-go-sdk.yml}       | 42 ++++++++++-----------
 .github/workflows/ci-check-pr.yml                  |  7 ++++
 .github/workflows/ci-test-bdd.yml                  |  2 +-
 bdd/README.md                                      |  1 +
 bdd/docker-compose.yml                             | 12 ++++++
 .../workflows/ci-test-bdd.yml => bdd/go/Dockerfile | 36 +++++-------------
 bdd/go/go.mod                                      | 26 +++++++++++++
 {foreign => bdd}/go/go.sum                         | 41 ++++++++++----------
 .../go/tests}/tcp_test/client_feature_get_all.go   |  0
 .../go/tests}/tcp_test/consumers_feature_create.go |  0
 .../go/tests}/tcp_test/consumers_feature_delete.go |  0
 .../tests}/tcp_test/consumers_feature_get_all.go   |  0
 .../tests}/tcp_test/consumers_feature_get_by_id.go |  0
 .../go/tests}/tcp_test/consumers_feature_join.go   |  0
 .../go/tests}/tcp_test/consumers_feature_leave.go  |  0
 .../go/tests}/tcp_test/consumers_steps.go          |  0
 .../go/tests}/tcp_test/messages_feature_send.go    |  0
 .../go/tests}/tcp_test/messages_steps.go           |  2 +-
 .../tests}/tcp_test/partitions_feature_create.go   |  0
 .../tests}/tcp_test/partitions_feature_delete.go   |  0
 .../go/tests}/tcp_test/partitions_steps.go         |  0
 .../go/tests}/tcp_test/pat_feature_create.go       |  0
 .../go/tests}/tcp_test/pat_feature_delete.go       |  0
 .../go/tests}/tcp_test/pat_feature_get_all.go      |  0
 .../go/e2e => bdd/go/tests}/tcp_test/pat_steps.go  |  0
 .../e2e => bdd/go/tests}/tcp_test/ping_feature.go  |  0
 .../go/tests}/tcp_test/session_feature_login.go    |  0
 .../go/tests}/tcp_test/session_feature_logout.go   |  0
 .../e2e => bdd/go/tests}/tcp_test/stats_feature.go |  0
 .../go/tests}/tcp_test/stream_feature_create.go    |  0
 .../go/tests}/tcp_test/stream_feature_delete.go    |  0
 .../go/tests}/tcp_test/stream_feature_get_all.go   |  0
 .../go/tests}/tcp_test/stream_feature_get_by_id.go |  0
 .../go/tests}/tcp_test/stream_feature_update.go    |  0
 .../e2e => bdd/go/tests}/tcp_test/stream_steps.go  |  0
 .../go/tests}/tcp_test/tcp_suite_test.go           |  0
 .../e2e => bdd/go/tests}/tcp_test/test_helpers.go  |  7 +++-
 .../go/tests}/tcp_test/test_shared_steps.go        |  0
 .../go/tests}/tcp_test/topic_feature_create.go     |  0
 .../go/tests}/tcp_test/topic_feature_delete.go     |  0
 .../go/tests}/tcp_test/topic_feature_get_all.go    |  0
 .../go/tests}/tcp_test/topic_feature_get_by_id.go  |  0
 .../go/tests}/tcp_test/topic_feature_update.go     |  0
 .../e2e => bdd/go/tests}/tcp_test/topic_steps.go   |  0
 .../go/tests}/tcp_test/users_feature_create.go     |  0
 .../go/tests}/tcp_test/users_feature_delete.go     |  0
 .../go/tests}/tcp_test/users_feature_get_all.go    |  0
 .../go/tests}/tcp_test/users_feature_get_by_id.go  |  0
 .../go/tests}/tcp_test/users_feature_password.go   |  0
 .../tests}/tcp_test/users_feature_permissions.go   |  0
 .../go/tests}/tcp_test/users_feature_update.go     |  0
 .../e2e => bdd/go/tests}/tcp_test/users_steps.go   |  0
 foreign/go/README.md                               |  6 ++-
 foreign/go/go.mod                                  | 16 --------
 foreign/go/go.sum                                  | 44 ----------------------
 scripts/run-bdd-tests.sh                           | 12 +++++-
 57 files changed, 129 insertions(+), 137 deletions(-)

diff --git a/.github/changed-files-config.json 
b/.github/changed-files-config.json
index 0d3f60dc..3b429b74 100644
--- a/.github/changed-files-config.json
+++ b/.github/changed-files-config.json
@@ -23,6 +23,15 @@
     "Dockerfile.*",
     ".github/workflows/ci-prod-rust.yml"
   ],
+  "go-sdk": [
+    "foreign/go/.*\\.go",
+    "foreign/go/go.mod",
+    "foreign/go/go.sum",
+    "bdd/go/.*\\.go",
+    "bdd/go/go.mod",
+    "bdd/go/go.sum",
+    ".github/workflows/ci-check-go-sdk.yml"
+  ],
   "java-sdk": [
     "foreign/java/.*\\.java",
     "foreign/java/.*\\.kts",
@@ -57,6 +66,9 @@
     "bdd/.*\\.feature",
     "bdd/.*\\.py",
     "bdd/.*\\.rs",
+    "bdd/.*\\.go",
+    "bdd/go/go.mod",
+    "bdd/go/go.sum",
     "bdd/.*Dockerfile",
     "bdd/docker-compose.yml",
     "scripts/run-bdd-tests.sh",
diff --git a/.github/workflows/ci-test-bdd.yml 
b/.github/workflows/ci-check-go-sdk.yml
similarity index 59%
copy from .github/workflows/ci-test-bdd.yml
copy to .github/workflows/ci-check-go-sdk.yml
index a72dff83..d3eeeb57 100644
--- a/.github/workflows/ci-test-bdd.yml
+++ b/.github/workflows/ci-check-go-sdk.yml
@@ -14,35 +14,35 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
-name: Cross-SDK BDD Tests
+name: ci-check-go-sdk
 
 on:
+  workflow_dispatch:
   workflow_call:
 
 jobs:
-  bdd-tests:
-    name: BDD tests (${{ matrix.sdk }})
+  build-and-test:
+    name: Go Build And Test
     runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        sdk: [rust, python]
     steps:
-      - name: Checkout code
+      - name: Checkout Code
         uses: actions/checkout@v4
-      
-      - name: Cache Rust dependencies
-        uses: Swatinem/rust-cache@v2
+
+      - name: Setup Go
+        uses: actions/setup-go@v5
         with:
-          workspaces: |
-            . -> target
-            foreign/python -> target
-          cache-on-failure: true
-          key: bdd-${{ matrix.sdk }}
+          go-version: '1.23.0'
+
+      - name: Tidy Check
+        working-directory: foreign/go
+        run: |
+          go mod tidy
+          git diff --exit-code
 
-      - name: Run BDD tests for ${{ matrix.sdk }}
-        run: ./scripts/run-bdd-tests.sh ${{ matrix.sdk }}
+      - name: Build Go Modules
+        working-directory: foreign/go
+        run: go build ./...
 
-      - name: Clean up Docker resources
-        if: always()
-        run: ./scripts/run-bdd-tests.sh clean
\ No newline at end of file
+      - name: Unit Test
+        working-directory: foreign/go
+        run: go test -v ./...
diff --git a/.github/workflows/ci-check-pr.yml 
b/.github/workflows/ci-check-pr.yml
index cc64b34c..70fcbfef 100644
--- a/.github/workflows/ci-check-pr.yml
+++ b/.github/workflows/ci-check-pr.yml
@@ -61,6 +61,7 @@ jobs:
       trigger-shell: ${{ steps.changed-files.outputs.SHELL_FILES_CHANGED }}
       trigger-java-sdk: ${{ steps.changed-files.outputs.JAVA-SDK_FILES_CHANGED 
}}
       trigger-python-sdk: ${{ 
steps.changed-files.outputs.PYTHON-SDK_FILES_CHANGED }}
+      trigger-go-sdk: ${{ steps.changed-files.outputs.GO-SDK_FILES_CHANGED  }}
       trigger-node-sdk: ${{ steps.changed-files.outputs.NODE-SDK_FILES_CHANGED 
}}
       trigger-csharp-sdk: ${{ 
steps.changed-files.outputs.CSHARP-SDK_FILES_CHANGED }}
       trigger-bdd: ${{ steps.changed-files.outputs.BDD_FILES_CHANGED }}
@@ -140,6 +141,11 @@ jobs:
     if: ${{ needs.pr-file-changes.outputs.trigger-python-sdk == 'true' }}
     uses: ./.github/workflows/ci-check-python-sdk.yml
 
+  ci-check-go-sdk:
+    name: ci-check-go-sdk
+    needs: pr-file-changes
+    if: ${{ needs.pr-file-changes.outputs.trigger-go-sdk == 'true' }}
+    uses: ./.github/workflows/ci-check-go-sdk.yml
   ci-check-node-sdk:
     name: ci-check-node-sdk
     needs: pr-file-changes
@@ -169,6 +175,7 @@ jobs:
       - ci-check-shell
       - ci-check-java-sdk
       - ci-check-python-sdk
+      - ci-check-go-sdk
       - ci-check-node-sdk
       - ci-check-csharp-sdk
       - ci-test-bdd
diff --git a/.github/workflows/ci-test-bdd.yml 
b/.github/workflows/ci-test-bdd.yml
index a72dff83..35964a8e 100644
--- a/.github/workflows/ci-test-bdd.yml
+++ b/.github/workflows/ci-test-bdd.yml
@@ -26,7 +26,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        sdk: [rust, python]
+        sdk: [rust, python, go]
     steps:
       - name: Checkout code
         uses: actions/checkout@v4
diff --git a/bdd/README.md b/bdd/README.md
index e32b4f4c..ebda0ca3 100644
--- a/bdd/README.md
+++ b/bdd/README.md
@@ -32,6 +32,7 @@ bdd/
 # Run specific SDK tests
 ../scripts/run-bdd-tests.sh rust
 ../scripts/run-bdd-tests.sh python
+../scripts/run-bdd-tests.sh go
 
 # Clean up Docker resources
 ../scripts/run-bdd-tests.sh clean
diff --git a/bdd/docker-compose.yml b/bdd/docker-compose.yml
index 584982ec..0d262f06 100644
--- a/bdd/docker-compose.yml
+++ b/bdd/docker-compose.yml
@@ -64,5 +64,17 @@ services:
     working_dir: /app
     command: ["pytest", "tests/", "-v"]
 
+  go-bdd:
+    build:
+      context: ..
+      dockerfile: bdd/go/Dockerfile
+    depends_on:
+      iggy-server:
+        condition: service_healthy
+    environment:
+      - IGGY_TCP_ADDRESS=iggy-server:8090
+    volumes:
+      - 
./scenarios/basic_messaging.feature:/app/features/basic_messaging.feature
+    command: [ "ginkgo", "-v", "-r" ]
 volumes:
   iggy_data:
diff --git a/.github/workflows/ci-test-bdd.yml b/bdd/go/Dockerfile
similarity index 52%
copy from .github/workflows/ci-test-bdd.yml
copy to bdd/go/Dockerfile
index a72dff83..658f6f44 100644
--- a/.github/workflows/ci-test-bdd.yml
+++ b/bdd/go/Dockerfile
@@ -15,34 +15,16 @@
 # specific language governing permissions and limitations
 # under the License.
 
-name: Cross-SDK BDD Tests
+FROM golang:1.23.10-alpine
 
-on:
-  workflow_call:
+WORKDIR /app
+COPY . .
 
-jobs:
-  bdd-tests:
-    name: BDD tests (${{ matrix.sdk }})
-    runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        sdk: [rust, python]
-    steps:
-      - name: Checkout code
-        uses: actions/checkout@v4
-      
-      - name: Cache Rust dependencies
-        uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            . -> target
-            foreign/python -> target
-          cache-on-failure: true
-          key: bdd-${{ matrix.sdk }}
+# Install Ginkgo
+RUN go install github.com/onsi/ginkgo/v2/ginkgo@latest
 
-      - name: Run BDD tests for ${{ matrix.sdk }}
-        run: ./scripts/run-bdd-tests.sh ${{ matrix.sdk }}
+# Change workdir to bdd/go
+WORKDIR /app/bdd/go
 
-      - name: Clean up Docker resources
-        if: always()
-        run: ./scripts/run-bdd-tests.sh clean
\ No newline at end of file
+# Default command
+CMD ["ginkgo", "-v", "-r"]
diff --git a/bdd/go/go.mod b/bdd/go/go.mod
new file mode 100644
index 00000000..7570f031
--- /dev/null
+++ b/bdd/go/go.mod
@@ -0,0 +1,26 @@
+module github.com/apache/iggy/bdd/go
+
+go 1.23.0
+
+replace github.com/apache/iggy/foreign/go => ../../foreign/go
+
+require (
+       github.com/apache/iggy/foreign/go v0.0.0-00010101000000-000000000000
+       github.com/google/uuid v1.6.0
+       github.com/onsi/ginkgo/v2 v2.23.4
+       github.com/onsi/gomega v1.37.0
+)
+
+require (
+       github.com/go-logr/logr v1.4.2 // indirect
+       github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
+       github.com/google/go-cmp v0.7.0 // indirect
+       github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
+       github.com/klauspost/compress v1.17.11 // indirect
+       go.uber.org/automaxprocs v1.6.0 // indirect
+       golang.org/x/net v0.38.0 // indirect
+       golang.org/x/sys v0.32.0 // indirect
+       golang.org/x/text v0.23.0 // indirect
+       golang.org/x/tools v0.31.0 // indirect
+       gopkg.in/yaml.v3 v3.0.1 // indirect
+)
diff --git a/foreign/go/go.sum b/bdd/go/go.sum
similarity index 55%
copy from foreign/go/go.sum
copy to bdd/go/go.sum
index cb576a09..f31ed10d 100644
--- a/foreign/go/go.sum
+++ b/bdd/go/go.sum
@@ -1,48 +1,45 @@
-github.com/creack/pty v1.1.9/go.mod 
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
 github.com/go-logr/logr v1.4.2/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-task/slim-sprig/v3 v3.0.0 
h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod 
h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad 
h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
-github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod 
h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 
h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod 
h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/klauspost/compress v1.17.11 
h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
 github.com/klauspost/compress v1.17.11/go.mod 
h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/pretty v0.3.0/go.mod 
h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod 
h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/onsi/ginkgo/v2 v2.22.1 
h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=
-github.com/onsi/ginkgo/v2 v2.22.1/go.mod 
h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=
-github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
-github.com/onsi/gomega v1.36.2/go.mod 
h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
+github.com/onsi/ginkgo/v2 v2.23.4 
h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
+github.com/onsi/ginkgo/v2 v2.23.4/go.mod 
h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
+github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
+github.com/onsi/gomega v1.37.0/go.mod 
h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.6.1 
h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
-github.com/rogpeppe/go-internal v1.6.1/go.mod 
h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/prashantv/gostub v1.1.0 
h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
+github.com/prashantv/gostub v1.1.0/go.mod 
h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
 github.com/stretchr/testify v1.8.4 
h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/stretchr/testify v1.8.4/go.mod 
h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod 
h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
 golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
 golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
-golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
-golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
+golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
 golang.org/x/text v0.23.0/go.mod 
h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
-golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
-golang.org/x/tools v0.28.0/go.mod 
h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
-google.golang.org/protobuf v1.36.1 
h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
-google.golang.org/protobuf v1.36.1/go.mod 
h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
+golang.org/x/tools v0.31.0/go.mod 
h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
+google.golang.org/protobuf v1.36.5 
h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod 
h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 
h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/foreign/go/e2e/tcp_test/client_feature_get_all.go 
b/bdd/go/tests/tcp_test/client_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/client_feature_get_all.go
rename to bdd/go/tests/tcp_test/client_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_create.go 
b/bdd/go/tests/tcp_test/consumers_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_create.go
rename to bdd/go/tests/tcp_test/consumers_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_delete.go 
b/bdd/go/tests/tcp_test/consumers_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_delete.go
rename to bdd/go/tests/tcp_test/consumers_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_get_all.go 
b/bdd/go/tests/tcp_test/consumers_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_get_all.go
rename to bdd/go/tests/tcp_test/consumers_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_get_by_id.go 
b/bdd/go/tests/tcp_test/consumers_feature_get_by_id.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_get_by_id.go
rename to bdd/go/tests/tcp_test/consumers_feature_get_by_id.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_join.go 
b/bdd/go/tests/tcp_test/consumers_feature_join.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_join.go
rename to bdd/go/tests/tcp_test/consumers_feature_join.go
diff --git a/foreign/go/e2e/tcp_test/consumers_feature_leave.go 
b/bdd/go/tests/tcp_test/consumers_feature_leave.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_feature_leave.go
rename to bdd/go/tests/tcp_test/consumers_feature_leave.go
diff --git a/foreign/go/e2e/tcp_test/consumers_steps.go 
b/bdd/go/tests/tcp_test/consumers_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/consumers_steps.go
rename to bdd/go/tests/tcp_test/consumers_steps.go
diff --git a/foreign/go/e2e/tcp_test/messages_feature_send.go 
b/bdd/go/tests/tcp_test/messages_feature_send.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/messages_feature_send.go
rename to bdd/go/tests/tcp_test/messages_feature_send.go
diff --git a/foreign/go/e2e/tcp_test/messages_steps.go 
b/bdd/go/tests/tcp_test/messages_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/messages_steps.go
rename to bdd/go/tests/tcp_test/messages_steps.go
index 862873bc..3f733a49 100644
--- a/foreign/go/e2e/tcp_test/messages_steps.go
+++ b/bdd/go/tests/tcp_test/messages_steps.go
@@ -21,9 +21,9 @@ import (
        "bytes"
        "reflect"
 
-       "github.com/google/uuid"
        "github.com/apache/iggy/foreign/go"
        iggcon "github.com/apache/iggy/foreign/go/contracts"
+       "github.com/google/uuid"
        . "github.com/onsi/ginkgo/v2"
        . "github.com/onsi/gomega"
 )
diff --git a/foreign/go/e2e/tcp_test/partitions_feature_create.go 
b/bdd/go/tests/tcp_test/partitions_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/partitions_feature_create.go
rename to bdd/go/tests/tcp_test/partitions_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/partitions_feature_delete.go 
b/bdd/go/tests/tcp_test/partitions_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/partitions_feature_delete.go
rename to bdd/go/tests/tcp_test/partitions_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/partitions_steps.go 
b/bdd/go/tests/tcp_test/partitions_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/partitions_steps.go
rename to bdd/go/tests/tcp_test/partitions_steps.go
diff --git a/foreign/go/e2e/tcp_test/pat_feature_create.go 
b/bdd/go/tests/tcp_test/pat_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/pat_feature_create.go
rename to bdd/go/tests/tcp_test/pat_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/pat_feature_delete.go 
b/bdd/go/tests/tcp_test/pat_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/pat_feature_delete.go
rename to bdd/go/tests/tcp_test/pat_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/pat_feature_get_all.go 
b/bdd/go/tests/tcp_test/pat_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/pat_feature_get_all.go
rename to bdd/go/tests/tcp_test/pat_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/pat_steps.go 
b/bdd/go/tests/tcp_test/pat_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/pat_steps.go
rename to bdd/go/tests/tcp_test/pat_steps.go
diff --git a/foreign/go/e2e/tcp_test/ping_feature.go 
b/bdd/go/tests/tcp_test/ping_feature.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/ping_feature.go
rename to bdd/go/tests/tcp_test/ping_feature.go
diff --git a/foreign/go/e2e/tcp_test/session_feature_login.go 
b/bdd/go/tests/tcp_test/session_feature_login.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/session_feature_login.go
rename to bdd/go/tests/tcp_test/session_feature_login.go
diff --git a/foreign/go/e2e/tcp_test/session_feature_logout.go 
b/bdd/go/tests/tcp_test/session_feature_logout.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/session_feature_logout.go
rename to bdd/go/tests/tcp_test/session_feature_logout.go
diff --git a/foreign/go/e2e/tcp_test/stats_feature.go 
b/bdd/go/tests/tcp_test/stats_feature.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stats_feature.go
rename to bdd/go/tests/tcp_test/stats_feature.go
diff --git a/foreign/go/e2e/tcp_test/stream_feature_create.go 
b/bdd/go/tests/tcp_test/stream_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_feature_create.go
rename to bdd/go/tests/tcp_test/stream_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/stream_feature_delete.go 
b/bdd/go/tests/tcp_test/stream_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_feature_delete.go
rename to bdd/go/tests/tcp_test/stream_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/stream_feature_get_all.go 
b/bdd/go/tests/tcp_test/stream_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_feature_get_all.go
rename to bdd/go/tests/tcp_test/stream_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/stream_feature_get_by_id.go 
b/bdd/go/tests/tcp_test/stream_feature_get_by_id.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_feature_get_by_id.go
rename to bdd/go/tests/tcp_test/stream_feature_get_by_id.go
diff --git a/foreign/go/e2e/tcp_test/stream_feature_update.go 
b/bdd/go/tests/tcp_test/stream_feature_update.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_feature_update.go
rename to bdd/go/tests/tcp_test/stream_feature_update.go
diff --git a/foreign/go/e2e/tcp_test/stream_steps.go 
b/bdd/go/tests/tcp_test/stream_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/stream_steps.go
rename to bdd/go/tests/tcp_test/stream_steps.go
diff --git a/foreign/go/e2e/tcp_test/tcp_suite_test.go 
b/bdd/go/tests/tcp_test/tcp_suite_test.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/tcp_suite_test.go
rename to bdd/go/tests/tcp_test/tcp_suite_test.go
diff --git a/foreign/go/e2e/tcp_test/test_helpers.go 
b/bdd/go/tests/tcp_test/test_helpers.go
similarity index 95%
rename from foreign/go/e2e/tcp_test/test_helpers.go
rename to bdd/go/tests/tcp_test/test_helpers.go
index 240c7b63..68d4f4e3 100644
--- a/foreign/go/e2e/tcp_test/test_helpers.go
+++ b/bdd/go/tests/tcp_test/test_helpers.go
@@ -19,6 +19,7 @@ package tcp_test
 
 import (
        "math/rand"
+       "os"
        "strings"
        "time"
 
@@ -39,9 +40,13 @@ func createAuthorizedConnection() MessageStream {
 }
 
 func createConnection() MessageStream {
+       addr := os.Getenv("IGGY_TCP_ADDRESS")
+       if addr == "" {
+               addr = "127.0.0.1:8090"
+       }
        factory := &IggyClientFactory{}
        config := IggyConfiguration{
-               BaseAddress: "127.0.0.1:8090",
+               BaseAddress: addr,
                Protocol:    Tcp,
        }
 
diff --git a/foreign/go/e2e/tcp_test/test_shared_steps.go 
b/bdd/go/tests/tcp_test/test_shared_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/test_shared_steps.go
rename to bdd/go/tests/tcp_test/test_shared_steps.go
diff --git a/foreign/go/e2e/tcp_test/topic_feature_create.go 
b/bdd/go/tests/tcp_test/topic_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_feature_create.go
rename to bdd/go/tests/tcp_test/topic_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/topic_feature_delete.go 
b/bdd/go/tests/tcp_test/topic_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_feature_delete.go
rename to bdd/go/tests/tcp_test/topic_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/topic_feature_get_all.go 
b/bdd/go/tests/tcp_test/topic_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_feature_get_all.go
rename to bdd/go/tests/tcp_test/topic_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/topic_feature_get_by_id.go 
b/bdd/go/tests/tcp_test/topic_feature_get_by_id.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_feature_get_by_id.go
rename to bdd/go/tests/tcp_test/topic_feature_get_by_id.go
diff --git a/foreign/go/e2e/tcp_test/topic_feature_update.go 
b/bdd/go/tests/tcp_test/topic_feature_update.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_feature_update.go
rename to bdd/go/tests/tcp_test/topic_feature_update.go
diff --git a/foreign/go/e2e/tcp_test/topic_steps.go 
b/bdd/go/tests/tcp_test/topic_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/topic_steps.go
rename to bdd/go/tests/tcp_test/topic_steps.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_create.go 
b/bdd/go/tests/tcp_test/users_feature_create.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_create.go
rename to bdd/go/tests/tcp_test/users_feature_create.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_delete.go 
b/bdd/go/tests/tcp_test/users_feature_delete.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_delete.go
rename to bdd/go/tests/tcp_test/users_feature_delete.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_get_all.go 
b/bdd/go/tests/tcp_test/users_feature_get_all.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_get_all.go
rename to bdd/go/tests/tcp_test/users_feature_get_all.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_get_by_id.go 
b/bdd/go/tests/tcp_test/users_feature_get_by_id.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_get_by_id.go
rename to bdd/go/tests/tcp_test/users_feature_get_by_id.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_password.go 
b/bdd/go/tests/tcp_test/users_feature_password.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_password.go
rename to bdd/go/tests/tcp_test/users_feature_password.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_permissions.go 
b/bdd/go/tests/tcp_test/users_feature_permissions.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_permissions.go
rename to bdd/go/tests/tcp_test/users_feature_permissions.go
diff --git a/foreign/go/e2e/tcp_test/users_feature_update.go 
b/bdd/go/tests/tcp_test/users_feature_update.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_feature_update.go
rename to bdd/go/tests/tcp_test/users_feature_update.go
diff --git a/foreign/go/e2e/tcp_test/users_steps.go 
b/bdd/go/tests/tcp_test/users_steps.go
similarity index 100%
rename from foreign/go/e2e/tcp_test/users_steps.go
rename to bdd/go/tests/tcp_test/users_steps.go
diff --git a/foreign/go/README.md b/foreign/go/README.md
index 77ebee70..e658ca56 100644
--- a/foreign/go/README.md
+++ b/foreign/go/README.md
@@ -1,3 +1,5 @@
-# Tests
+# Go SDK for Iggy
 
-Use ginkgo to run e2e tests.
+Official Go client SDK for [Apache Iggy](https://iggy.apache.org) message 
streaming.
+
+The client currently supports TCP protocols with blocking implementation.
diff --git a/foreign/go/go.mod b/foreign/go/go.mod
index cc67702f..7aa5f0fc 100644
--- a/foreign/go/go.mod
+++ b/foreign/go/go.mod
@@ -7,20 +7,4 @@ toolchain go1.23.1
 require (
        github.com/google/uuid v1.6.0
        github.com/klauspost/compress v1.17.11
-       github.com/onsi/ginkgo/v2 v2.22.1
-       github.com/onsi/gomega v1.36.2
-)
-
-require (
-       github.com/go-logr/logr v1.4.2 // indirect
-       github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
-       github.com/google/go-cmp v0.6.0 // indirect
-       github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
-       github.com/kr/pretty v0.3.0 // indirect
-       golang.org/x/net v0.38.0 // indirect
-       golang.org/x/sys v0.31.0 // indirect
-       golang.org/x/text v0.23.0 // indirect
-       golang.org/x/tools v0.28.0 // indirect
-       gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
-       gopkg.in/yaml.v3 v3.0.1 // indirect
 )
diff --git a/foreign/go/go.sum b/foreign/go/go.sum
index cb576a09..e99a5df2 100644
--- a/foreign/go/go.sum
+++ b/foreign/go/go.sum
@@ -1,48 +1,4 @@
-github.com/creack/pty v1.1.9/go.mod 
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
-github.com/go-logr/logr v1.4.2/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-task/slim-sprig/v3 v3.0.0 
h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
-github.com/go-task/slim-sprig/v3 v3.0.0/go.mod 
h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad 
h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
-github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod 
h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/klauspost/compress v1.17.11 
h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
 github.com/klauspost/compress v1.17.11/go.mod 
h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
-github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/pretty v0.3.0/go.mod 
h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod 
h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/onsi/ginkgo/v2 v2.22.1 
h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=
-github.com/onsi/ginkgo/v2 v2.22.1/go.mod 
h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=
-github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
-github.com/onsi/gomega v1.36.2/go.mod 
h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
-github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.6.1 
h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
-github.com/rogpeppe/go-internal v1.6.1/go.mod 
h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/stretchr/testify v1.8.4 
h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod 
h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
-golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
-golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
-golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
-golang.org/x/text v0.23.0/go.mod 
h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
-golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
-golang.org/x/tools v0.28.0/go.mod 
h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
-google.golang.org/protobuf v1.36.1 
h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
-google.golang.org/protobuf v1.36.1/go.mod 
h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 
h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/scripts/run-bdd-tests.sh b/scripts/run-bdd-tests.sh
index 4cd05d9f..e3fc2e37 100755
--- a/scripts/run-bdd-tests.sh
+++ b/scripts/run-bdd-tests.sh
@@ -38,13 +38,20 @@ case $SDK in
   docker compose build --no-cache iggy-server python-bdd
   docker compose up --abort-on-container-exit python-bdd
   ;;
+"go")
+  echo "๐Ÿน Running Go BDD tests..."
+  docker compose build --no-cache iggy-server go-bdd
+  docker compose up --abort-on-container-exit go-bdd
+  ;;
 "all")
   echo "๐Ÿš€ Running all SDK BDD tests..."
   echo "๐Ÿฆ€ Starting with Rust tests..."
-  docker compose build --no-cache iggy-server rust-bdd python-bdd
+  docker compose build --no-cache iggy-server rust-bdd python-bdd go-bdd
   docker compose up --abort-on-container-exit rust-bdd
   echo "๐Ÿ Now running Python tests..."
   docker compose up --abort-on-container-exit python-bdd
+  echo "๐Ÿน Now running Go tests..."
+  docker compose up --abort-on-container-exit go-bdd
   ;;
 "clean")
   echo "๐Ÿงน Cleaning up Docker resources..."
@@ -53,10 +60,11 @@ case $SDK in
   ;;
 *)
   echo "โŒ Unknown SDK: $SDK"
-  echo "๐Ÿ“– Usage: $0 [rust|python|all|clean] [feature_file]"
+  echo "๐Ÿ“– Usage: $0 [rust|python|go|all|clean] [feature_file]"
   echo "๐Ÿ“– Examples:"
   echo "   $0 rust                    # Run Rust tests only"
   echo "   $0 python                  # Run Python tests only"
+  echo "   $0 go                      # Run Go tests only"
   echo "   $0 all                     # Run all SDK tests"
   echo "   $0 clean                   # Clean up Docker resources"
   exit 1


Reply via email to