Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrating Kuksa Go Client from kuksa.val #6

Merged
merged 1 commit into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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