Skip to content

Commit

Permalink
Migrating Kuksa Go Client from kuksa.val
Browse files Browse the repository at this point in the history
  • Loading branch information
erikbosch committed Mar 26, 2024
1 parent 266c4b9 commit 8a48bb3
Show file tree
Hide file tree
Showing 23 changed files with 2,315 additions and 21 deletions.
41 changes: 20 additions & 21 deletions .github/workflows/check_license.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,30 @@ on:
pull_request

concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true

jobs:
check-spdx-headers:
runs-on: ubuntu-latest

steps:

- name: Checkout code
uses: actions/checkout@v4
with:
# required to grab the history of the PR
fetch-depth: 0
submodules: 'true'

- name: Get changed files
run: |
echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} | tr '\n' ',')" >> $GITHUB_ENV
- name: Set license
run: |
echo "licenses=Apache-2.0" >> $GITHUB_ENV
- uses: eclipse-kuksa/kuksa-actions/spdx@2
with:
files: "${{ env.files }}"
licenses: "${{ env.licenses }}"
- name: Checkout code
uses: actions/checkout@v4
with:
# required to grab the history of the PR
fetch-depth: 0

- name: Get changed files
run: |
echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} | tr '\n' ',')" >> $GITHUB_ENV
- name: Set license
run: |
echo "licenses=Apache-2.0" >> $GITHUB_ENV
- uses: eclipse-kuksa/kuksa-actions/spdx@2
with:
files: "${{ env.files }}"
licenses: "${{ env.licenses }}"
59 changes: 59 additions & 0 deletions .github/workflows/kuksa_go_client.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# /********************************************************************************
# * Copyright (c) 2022 Contributors to the Eclipse Foundation
# *
# * See the NOTICE file(s) distributed with this work for additional
# * information regarding copyright ownership.
# *
# * This program and the accompanying materials are made available under the
# * terms of the Apache License 2.0 which is available at
# * http://www.apache.org/licenses/LICENSE-2.0
# *
# * SPDX-License-Identifier: Apache-2.0
# ********************************************************************************/

name: kuksa_go_client

on:
push:
pull_request:
paths:
- ".github/workflows/kuksa_go_client.yaml"
- "kuksa_go_client/**"
workflow_dispatch:

concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true

jobs:

kuksa-go-client-test:
runs-on: ubuntu-latest

steps:
- name: Checkout kuksa-incubation
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: 'kuksa_go_client/go.mod'
cache-dependency-path: 'kuksa_go_client/go.sum'
- run: go version
- name: Run go tests
run: |
cd kuksa_go_client
# We cannot use sudo apt install protobuf-compiler
# as default in Ubuntu 22.04 (3.12) consider optional as experimental feature
go run protocInstall/protocInstall.go
export PATH=$PATH:$HOME/protoc/bin
sudo chmod +x $HOME/protoc/bin/protoc
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
export PATH=$PATH:$HOME/go/bin
go generate .
go test .
- name: golangci-lint
uses: golangci/golangci-lint-action@v4
with:
version: latest
working-directory: kuksa_go_client
skip-pkg-cache: true
25 changes: 25 additions & 0 deletions NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Notices for Eclipse Kuksa

This content is produced and maintained by the Eclipse Kuksa project.

* Project home: https://projects.eclipse.org/projects/automotive.kuksa

## Trademarks

Eclipse Kuksa is a trademark of the Eclipse Foundation.

## Copyright

All content is the property of the respective authors or their employers. For
more information regarding authorship of content, please consult the listed
source code repository logs.

## Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Apache License, Version 2.0

You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0

SPDX-License-Identifier: Apache-2.0
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Component | Content | Comment/Status
[Seat Service](seat_service) | C++ service example
[eCAL Provider](ecal2val) | Python provider for [eCAL](https://projects.eclipse.org/projects/automotive.ecal)
[PS4/PS5 - 2021 Formula Provider](./fone2val) | F1 Telemetrydata source for [KUKSA Databroker](https://github.com/eclipse/kuksa.val/tree/master/kuksa_databroker)
[KUKSA GO Client](kuksa_go_client) | Example client written in the [GO](https://go.dev/) programming language for easy interaction with KUKSA Databroker and Server

## Contribution

Expand Down
3 changes: 3 additions & 0 deletions kuksa_go_client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
kuksa_go_client
.vscode
*.zip
101 changes: 101 additions & 0 deletions kuksa_go_client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Running the KUKSA golang Client

## Execute the example

### Set everything up for the KUKSA.val GO client
- If you do not have GO installed follow this [page](https://go.dev/doc/install) and install v1.18 or above
- If you do not have a protobuf compiler installed execute the following from this directory:
```
> go run protocInstall/protocInstall.go
```
Or install the protobuf compiler yourself(https://grpc.io/docs/protoc-installation/)
- Add the protobuf compiler (e.g. HOME_DIR/protoc/bin) to your PATH variable. For example for linux do:
```
> export PATH=$PATH:$HOME/protoc/bin
```

If using a newer Linux version that has protoc >= 3.19 by default you may alternatively install the protobuf compiler with apt:

```
> sudo apt install protobuf-compiler
```

if you use `apt`you must manually create a folder called `proto`


```
> mkdir proto
```

- Run the following command to install the needed GO protocol buffers plugins:
```
> go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
> go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
```
The plugins will be installed in $GOBIN, defaulting to $GOPATH/bin which is default HOME_DIR/go/bin. It must be in your $PATH for the protocol compiler protoc to find it.
For linux execute:
```
> export PATH=$PATH:$HOME/go/bin
```
- Then execute
```
> go generate .
```
if you encounter a problem, you have to give the protoc executable the right to be executed e.g in Linux run
```
> sudo chmod +x <HOME_DIR>/protoc/bin/protoc
```
### Run the KUKSA.val GO client
#### Start KUKSA.val Server or Databroker
- Build kuksa.val and start the server
```
> cd kuksa.val/kuksa-val-server/build/src/
> ./kuksa-val-server
```
- Alternatively, start the appropriate docker container.
```
> docker run -it --rm --net=host -p 127.0.0.1:8090:8090 -e LOG_LEVEL=ALL ghcr.io/eclipse/kuksa.val/kuksa-val:master
```
- Build and run KUKSA.val Databroker by executing:
```
> cargo run --bin databroker
```
- Alternatively, start the apropriate docker container.
```
> docker run -it --rm --net=host ghcr.io/eclipse/kuksa.val/databroker:master
```
- To run the GO Client execute:
```
> go build .
> go run .
```
- Alternatively, execute:
```
> ./kuksa_go_client
```

### Configuration of the KUKSA.val GO client
The GO clients reads the configuration file `kuksa-client.json`. In this repository example configurations for both
KUKSA.val Databroker (`kuksa-client-grpc.json`) and KUKSA.val Server (`kuksa-client-ws.json`) exists.
The file `kuksa-client.json` is by default linked to `kuksa-client-grpc.json`.

For using the GO client with the kuksa.val server set protocol = ws and for a connection to kuksa.val Databroker set protocol = grpc. On the command line it's available through -protocol ws/grpc.

*Note: For communication with KUKSA Databroker only insecure mode is supported, TLS can not be used!*

### Dependency updates

If dependencies needs to be updated the following commands can be used:

```
go generate .
go get -u
go mod tidy
```

This will update `go.mod`and `go.sum`.

## Linters

Our Continuous Integration verifies that the code pass the [Golang Linter](https://golangci-lint.run/usage/install).
To avoid failing PR builds it is recommended to run the linter manually before creating a Pull Request.
Loading

0 comments on commit 8a48bb3

Please sign in to comment.