Skip to content

Commit 16d4a69

Browse files
committed
Merge branch 'main' into design-async-client-raw-ffi
Signed-off-by: Andrew Carbonetto <[email protected]>
2 parents 8d2e183 + 199507f commit 16d4a69

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+253532
-1037
lines changed

.github/ISSUE_TEMPLATE/bug-report.yml

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
name: "🐛 Bug Report"
3+
description: Report a bug
4+
title: "(topic): (short issue description)"
5+
labels: [bug, needs-triage]
6+
assignees: []
7+
body:
8+
- type: textarea
9+
id: description
10+
attributes:
11+
label: Describe the bug
12+
description: What is the problem? A clear and concise description of the bug.
13+
validations:
14+
required: true
15+
- type: textarea
16+
id: expected
17+
attributes:
18+
label: Expected Behavior
19+
description: |
20+
What did you expect to happen?
21+
validations:
22+
required: true
23+
- type: textarea
24+
id: current
25+
attributes:
26+
label: Current Behavior
27+
description: |
28+
What actually happened?
29+
30+
Please include full errors, uncaught exceptions, stack traces, and relevant logs.
31+
If service responses are relevant, please include wire logs.
32+
validations:
33+
required: true
34+
- type: textarea
35+
id: reproduction
36+
attributes:
37+
label: Reproduction Steps
38+
description: |
39+
Provide a self-contained, concise snippet of code that can be used to reproduce the issue.
40+
For more complex issues provide a repo with the smallest sample that reproduces the bug.
41+
42+
Avoid including business logic or unrelated code, it makes diagnosis more difficult.
43+
The code sample should be an SSCCE. See http://sscce.org/ for details. In short, please provide a code sample that we can copy/paste, run and reproduce.
44+
validations:
45+
required: true
46+
- type: textarea
47+
id: solution
48+
attributes:
49+
label: Possible Solution
50+
description: |
51+
Suggest a fix/reason for the bug
52+
validations:
53+
required: false
54+
- type: textarea
55+
id: context
56+
attributes:
57+
label: Additional Information/Context
58+
description: |
59+
Anything else that might be relevant for troubleshooting this bug. Providing context helps us come up with a solution that is most useful in the real world.
60+
validations:
61+
required: false
62+
63+
- type: input
64+
id: operating-system
65+
attributes:
66+
label: OS
67+
validations:
68+
required: true
69+
70+
- type: dropdown
71+
id: language
72+
attributes:
73+
label: Language
74+
multiple: true
75+
options:
76+
- TypeScript
77+
- Python
78+
validations:
79+
required: true
80+
81+
- type: input
82+
id: language-version
83+
attributes:
84+
label: Language Version
85+
description: E.g. TypeScript (5.2.2) | Python (3.9)
86+
validations:
87+
required: false
88+
89+
- type: textarea
90+
id: other
91+
attributes:
92+
label: Other information
93+
description: |
94+
e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. associated pull-request, stackoverflow, etc
95+
validations:
96+
required: false
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
name: 🚀 Feature Request
3+
description: Suggest an idea for this project
4+
title: "(topic): (short issue description)"
5+
labels: [feature-request, needs-triage]
6+
assignees: []
7+
body:
8+
- type: textarea
9+
id: description
10+
attributes:
11+
label: Describe the feature
12+
description: A clear and concise description of the feature you are proposing.
13+
validations:
14+
required: true
15+
- type: textarea
16+
id: use-case
17+
attributes:
18+
label: Use Case
19+
description: |
20+
Why do you need this feature?
21+
validations:
22+
required: true
23+
- type: textarea
24+
id: solution
25+
attributes:
26+
label: Proposed Solution
27+
description: |
28+
Suggest how to implement the addition or change. Please include prototype/workaround/sketch/reference implementation.
29+
validations:
30+
required: false
31+
- type: textarea
32+
id: other
33+
attributes:
34+
label: Other Information
35+
description: |
36+
Any alternative solutions or features you considered, a more detailed explanation, stack traces, related issues, links for context, etc.
37+
validations:
38+
required: false
39+
- type: checkboxes
40+
id: ack
41+
attributes:
42+
label: Acknowledgements
43+
options:
44+
- label: I may be able to implement this feature request
45+
required: false
46+
- label: This feature might incur a breaking change
47+
required: false
48+
- type: input
49+
id: client-version
50+
attributes:
51+
label: Client version used
52+
validations:
53+
required: true
54+
- type: input
55+
id: environment
56+
attributes:
57+
label: Environment details (OS name and version, etc.)
58+
validations:
59+
required: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Build Node wrapper
2+
3+
inputs:
4+
os:
5+
description: "The current operating system"
6+
required: true
7+
type: string
8+
options:
9+
- macOS
10+
- ubuntu
11+
- amazon-linux
12+
release_mode:
13+
description: "Enable building the wrapper in release mode"
14+
required: false
15+
type: boolean
16+
default: 'false'
17+
18+
env:
19+
CARGO_TERM_COLOR: always
20+
21+
runs:
22+
using: "composite"
23+
steps:
24+
- name: Install software dependencies
25+
uses: ./.github/workflows/install-shared-dependencies
26+
with:
27+
os: ${{ inputs.os }}
28+
29+
- name: npm install
30+
shell: bash
31+
working-directory: ./node/rust-client
32+
run: |
33+
rm -rf node_modules && npm install --frozen-lockfile
34+
npm install
35+
36+
- name: Build
37+
shell: bash
38+
run: |
39+
source "$HOME/.cargo/env"
40+
rm -rf node_modules && npm install --frozen-lockfile
41+
npm run build
42+
working-directory: ./node
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Build Python wrapper
2+
3+
inputs:
4+
os:
5+
description: "The current operating system"
6+
required: true
7+
type: string
8+
options:
9+
- macOS
10+
- ubuntu
11+
- amazon-linux
12+
release_mode:
13+
description: "Enable building the wrapper in release mode"
14+
required: false
15+
type: boolean
16+
default: 'false'
17+
18+
env:
19+
CARGO_TERM_COLOR: always
20+
21+
runs:
22+
using: "composite"
23+
steps:
24+
- name: Install software dependencies
25+
uses: ./.github/workflows/install-shared-dependencies
26+
with:
27+
os: ${{ inputs.os }}
28+
29+
- name: Install Python software dependencies
30+
shell: bash
31+
run: |
32+
python3 -m ensurepip --upgrade
33+
python3 -m pip install --upgrade pip
34+
python3 -m pip install virtualenv mypy-protobuf
35+
36+
- name: Generate protobuf files
37+
shell: bash
38+
working-directory: .
39+
run: |
40+
export PATH="$PATH:$HOME/.local/bin"
41+
MYPY_PROTOC_PATH=`which protoc-gen-mypy`
42+
protoc --plugin=protoc-gen-mypy=${MYPY_PROTOC_PATH} -Iprotobuf=./babushka-core/src/protobuf/ --python_out=./python/python/pybushka --mypy_out=./python/python/pybushka ./babushka-core/src/protobuf/*.proto
43+
44+
- name: Build Pybushka
45+
shell: bash
46+
working-directory: ./python
47+
run: |
48+
source "$HOME/.cargo/env"
49+
python3 -m venv .env
50+
source .env/bin/activate
51+
python3 -m pip install --upgrade pip
52+
python3 -m pip install -r requirements.txt
53+
RELEASE_FLAG=`if [ ${{ inputs.release_mode }} = 'true' ]; then echo --release; fi`
54+
maturin develop ${RELEASE_FLAG}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Install shared software dependencies
2+
3+
inputs:
4+
os:
5+
description: "The current operating system"
6+
required: true
7+
type: string
8+
options:
9+
- macOS
10+
- ubuntu
11+
- amazon-linux
12+
13+
runs:
14+
using: "composite"
15+
steps:
16+
- name: Install software dependencies for macOS
17+
shell: bash
18+
if: "${{ inputs.os == 'macOS' }}"
19+
run: |
20+
brew install git gcc pkgconfig protobuf openssl redis
21+
22+
- name: Install software dependencies for Ubuntu
23+
shell: bash
24+
if: "${{ inputs.os == 'ubuntu' }}"
25+
run: |
26+
sudo apt update
27+
sudo apt install protobuf-compiler
28+
29+
- name: Install software dependencies for Amazon-Linux
30+
shell: bash
31+
if: "${{ inputs.os == 'amazon-linux' }}"
32+
run: |
33+
yum install -y gcc pkgconfig protobuf-compiler openssl openssl-devel which curl redis6 --allowerasing
34+
35+
- name: Install Rust
36+
shell: bash
37+
run: |
38+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

.github/workflows/java-benchmark.yml

+39-39
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
11
name: Java client benchmarks
22

33
on:
4-
workflow_dispatch:
5-
inputs:
6-
name:
7-
required: false
8-
type: string
4+
workflow_dispatch:
5+
inputs:
6+
name:
7+
required: false
8+
type: string
99

1010
run-name: ${{ inputs.name == '' && format('{0} @ {1}', github.ref_name, github.sha) || inputs.name }}
1111

1212
jobs:
13-
java-benchmark:
14-
strategy:
15-
matrix:
16-
java:
17-
- 11
18-
- 17
19-
runs-on: ubuntu-latest
20-
21-
steps:
22-
- uses: actions/checkout@v4
23-
with:
24-
submodules: recursive
25-
26-
- name: Set up JDK ${{ matrix.java }}
27-
uses: actions/setup-java@v3
28-
with:
29-
distribution: "temurin"
30-
java-version: ${{ matrix.java }}
31-
32-
- name: Start Redis
33-
run: docker run -p 6379:6379 -p 8001:8001 -d redis/redis-stack
34-
35-
- name: Run benchmarks
36-
working-directory: java
37-
run: ./gradlew :benchmark:run
38-
39-
- name: Upload test reports
40-
if: always()
41-
continue-on-error: true
42-
uses: actions/upload-artifact@v3
43-
with:
44-
name: test-reports-${{ matrix.java }}
45-
path: |
46-
java/benchmarks/build/reports/**
13+
java-benchmark:
14+
strategy:
15+
matrix:
16+
java:
17+
- 11
18+
- 17
19+
runs-on: ubuntu-latest
20+
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
submodules: recursive
25+
26+
- name: Set up JDK ${{ matrix.java }}
27+
uses: actions/setup-java@v3
28+
with:
29+
distribution: "temurin"
30+
java-version: ${{ matrix.java }}
31+
32+
- name: Start Redis
33+
run: docker run -p 6379:6379 -p 8001:8001 -d redis/redis-stack
34+
35+
- name: Run benchmarks
36+
working-directory: java
37+
run: ./gradlew :benchmark:run
38+
39+
- name: Upload test reports
40+
if: always()
41+
continue-on-error: true
42+
uses: actions/upload-artifact@v3
43+
with:
44+
name: test-reports-${{ matrix.java }}
45+
path: |
46+
java/benchmarks/build/reports/**

0 commit comments

Comments
 (0)