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

feat: migrating to protobuf for callbacks #137

Merged
merged 31 commits into from
Oct 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
98d798e
Adding Protobuf contract for callbacks: initial work
madflojo Aug 4, 2024
dcc79e1
Adding Proto directory
madflojo Aug 4, 2024
68a66be
working SQL query
madflojo Aug 17, 2024
966fee3
Working SQL Exec, kinda
madflojo Aug 18, 2024
37b5632
Working SQL callback
madflojo Aug 26, 2024
273eae9
Working KVStore callback with protobuf
madflojo Aug 31, 2024
3851f75
Just a bit of cleanliness
madflojo Sep 1, 2024
99fb432
refactor(metrics-callback): Refectoring metrics callback
madflojo Sep 2, 2024
4e19365
fix(kvstore): declare err inline for cleaner code
madflojo Oct 6, 2024
cc839c5
fix(makefile): switch to docker compose v2
madflojo Oct 6, 2024
6f59e44
fix(tests): tidy up kvstore tests for binary data
madflojo Oct 6, 2024
126c46e
feat(kvstore): enhance KVStoreKeys with Proto option
madflojo Oct 6, 2024
d27ba94
fix(kvstore): handle empty input in keys function
madflojo Oct 6, 2024
2fb9feb
chore: moving protobuf to package
madflojo Oct 6, 2024
c9e450a
fix(httpclient): correct method receiver name typo
madflojo Oct 6, 2024
ce2c1cb
fix(tests): improve error messages for clarity
madflojo Oct 6, 2024
ec05d68
fix(kvstore): anonymize unused parameters
madflojo Oct 6, 2024
7b346e0
fix(kvstore): anonymize unused parameter
madflojo Oct 6, 2024
f1053c0
fix(httpclient): marshal response on request failure
madflojo Oct 12, 2024
4c59b77
refactor(tests): relocate testdata to new structure
madflojo Oct 13, 2024
e5df20c
Update pkg/callbacks/sql/sql_test.go
madflojo Oct 13, 2024
36bd71b
feat(sql): upgrade dependencies and enhance logging
madflojo Oct 13, 2024
65c8426
fix(makefile): update volume path for clarity
madflojo Oct 13, 2024
31e86ea
fix(makefile): adjust volume mount path for sanity
madflojo Oct 13, 2024
c76f747
refactor(sql): optimize protobuf marshalling methods
madflojo Oct 13, 2024
99f6b2c
chore(makefile): update TinyGo version to latest
madflojo Oct 13, 2024
98dcc4d
Update pkg/callbacks/sql/sql_test.go
madflojo Oct 13, 2024
688be1b
chore: switch to errors package and fix JSON keys
madflojo Oct 13, 2024
f8b69d5
fix(sql): un-indent the universe
madflojo Oct 13, 2024
2ac6bab
Update pkg/callbacks/sql/sql_test.go
madflojo Oct 13, 2024
d568402
test(sql): add comprehensive SQLExec test cases
madflojo Oct 13, 2024
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
63 changes: 33 additions & 30 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,70 +4,73 @@
build: build-testdata

build-testdata:
$(MAKE) -C testdata/default build
$(MAKE) -C testdata/fail build
$(MAKE) -C testdata/kv build
$(MAKE) -C testdata/sql build
$(MAKE) -C testdata/logger build
$(MAKE) -C testdata/function build
$(MAKE) -C testdata/successafter5 build
$(MAKE) -C testdata/sdkv1/kv build
$(MAKE) -C testdata/sdkv1/sql build
$(MAKE) -C testdata/sdkv1/logger build
$(MAKE) -C testdata/base/default build
$(MAKE) -C testdata/base/fail build
$(MAKE) -C testdata/base/kv build
$(MAKE) -C testdata/base/sql build
$(MAKE) -C testdata/base/logger build
$(MAKE) -C testdata/base/function build
$(MAKE) -C testdata/base/successafter5 build

tests: build tests-nobuild
tests-nobuild: tests-base tests-redis tests-cassandra tests-mysql tests-postgres tests-boltdb tests-inmemory

tests-base:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up -d consul consulator
docker-compose -f dev-compose.yml up --exit-code-from tests-base --build tests-base
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up -d consul consulator
docker compose -f dev-compose.yml up --exit-code-from tests-base --build tests-base
docker compose -f dev-compose.yml down

tests-boltdb:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up --exit-code-from tests-boltdb tests-boltdb
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up --exit-code-from tests-boltdb tests-boltdb
docker compose -f dev-compose.yml down

tests-inmemory:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up --exit-code-from tests-inmemory tests-inmemory
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up --exit-code-from tests-inmemory tests-inmemory
docker compose -f dev-compose.yml down

tests-redis:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up --exit-code-from tests-redis tests-redis
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up --exit-code-from tests-redis tests-redis
docker compose -f dev-compose.yml down

tests-cassandra:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up -d cassandra-primary cassandra
docker-compose -f dev-compose.yml up --exit-code-from tests-cassandra tests-cassandra
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up -d cassandra-primary cassandra
docker compose -f dev-compose.yml up --exit-code-from tests-cassandra tests-cassandra
docker compose -f dev-compose.yml down

tests-mysql:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up -d mysql
docker-compose -f dev-compose.yml up --exit-code-from tests-mysql tests-mysql
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up -d mysql
docker compose -f dev-compose.yml up --exit-code-from tests-mysql tests-mysql
docker compose -f dev-compose.yml down

tests-postgres:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up -d postgres
docker-compose -f dev-compose.yml up --exit-code-from tests-postgres tests-postgres
docker-compose -f dev-compose.yml down
docker compose -f dev-compose.yml up -d postgres
docker compose -f dev-compose.yml up --exit-code-from tests-postgres tests-postgres
docker compose -f dev-compose.yml down

benchmarks:
@echo "Launching Tests in Docker Compose"
docker-compose -f dev-compose.yml up -d cassandra-primary cassandra mysql
docker compose -f dev-compose.yml up -d cassandra-primary cassandra mysql
sleep 120
docker-compose -f dev-compose.yml up --build benchmarks
docker compose -f dev-compose.yml up --build benchmarks

clean:
@echo "Cleaning up build junk"
-docker-compose -f dev-compose.yml down
-docker compose -f dev-compose.yml down

tarmac:
@echo "Starting Application"
docker-compose -f dev-compose.yml up --build tarmac
docker compose -f dev-compose.yml up --build tarmac

tarmac-performance: build
@echo "Starting Application"
docker-compose -f dev-compose.yml up -d tarmac-performance
docker compose -f dev-compose.yml up -d tarmac-performance
6 changes: 4 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/tarmac-project/tarmac

go 1.22.3
go 1.22.6

require (
github.com/go-sql-driver/mysql v1.7.1
Expand All @@ -18,9 +18,11 @@ require (
github.com/tarmac-project/hord/drivers/hashmap v0.6.0
github.com/tarmac-project/hord/drivers/mock v0.6.0
github.com/tarmac-project/hord/drivers/redis v0.6.0
github.com/tarmac-project/protobuf-go v0.0.0-20241006222441-51664fb11f56
github.com/tarmac-project/wapc-toolkit/callbacks v0.2.0
github.com/tarmac-project/wapc-toolkit/engine v0.2.0
github.com/wapc/wapc-go v0.7.0
google.golang.org/protobuf v1.34.2
)

require (
Expand Down Expand Up @@ -75,6 +77,7 @@ require (
github.com/nats-io/nuid v1.0.1 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/planetscale/vtprotobuf v0.6.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.48.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
Expand Down Expand Up @@ -115,7 +118,6 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect
google.golang.org/grpc v1.62.1 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
8 changes: 6 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,8 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/planetscale/vtprotobuf v0.6.0 h1:nBeETjudeJ5ZgBHUz1fVHvbqUKnYOXNhsIEabROxmNA=
github.com/planetscale/vtprotobuf v0.6.0/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
Expand Down Expand Up @@ -339,6 +341,8 @@ github.com/tarmac-project/hord/drivers/mock v0.6.0 h1:8XWfpW9I16TN1ycSRf/JU+0Oq+
github.com/tarmac-project/hord/drivers/mock v0.6.0/go.mod h1:B3kPMdUK3M2OoSPktP9Dm+JrllW2DMDeHeUGa41CNzc=
github.com/tarmac-project/hord/drivers/redis v0.6.0 h1:jqRydEdOGQxo2GUspOmNk77ebuQkfgYsCMMZ1aRM0io=
github.com/tarmac-project/hord/drivers/redis v0.6.0/go.mod h1:dZyQBCqPLmYsXd2kbW1H4pqCWgjFZXTN4xZm36+qF6M=
github.com/tarmac-project/protobuf-go v0.0.0-20241006222441-51664fb11f56 h1:lWWclbcicMaIUdlwIUSaVnAOmhwqpjVDAgUGmK5Dxb8=
github.com/tarmac-project/protobuf-go v0.0.0-20241006222441-51664fb11f56/go.mod h1:TtJAJlZ8d1xmkN32J8HHtvWOBPZMxEOg//yJeBXfbmw=
github.com/tarmac-project/wapc-toolkit/callbacks v0.2.0 h1:gsUrXz8EtRf2CpacwaguBHWttQn9k35hhzm9NkoaJIc=
github.com/tarmac-project/wapc-toolkit/callbacks v0.2.0/go.mod h1:FvKVFIKPU/r1qTWzMXhM0dv1z6bz5Tv7efLaT+P92Es=
github.com/tarmac-project/wapc-toolkit/engine v0.2.0 h1:Lc0goE9E1LyFvNxbzq70ePrk5XdPJU7Zu33vRKwR6sQ=
Expand Down Expand Up @@ -522,8 +526,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
12 changes: 6 additions & 6 deletions pkg/app/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func TestRunningServer(t *testing.T) {
cfg.Set("use_consul", false)
cfg.Set("debug", true)
cfg.Set("trace", true)
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
madflojo marked this conversation as resolved.
Show resolved Hide resolved
srv := New(cfg)
go func() {
err := srv.Run()
Expand Down Expand Up @@ -173,7 +173,7 @@ func TestPProfServerEnabled(t *testing.T) {
cfg.Set("debug", true)
cfg.Set("trace", true)
cfg.Set("enable_pprof", true)
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
srv := New(cfg)
go func() {
err := srv.Run()
Expand Down Expand Up @@ -221,7 +221,7 @@ func TestPProfServerDisabled(t *testing.T) {
cfg.Set("use_consul", false)
cfg.Set("debug", true)
cfg.Set("trace", true)
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
srv := New(cfg)
go func() {
err := srv.Run()
Expand Down Expand Up @@ -291,7 +291,7 @@ func TestRunningTLSServer(t *testing.T) {
cfg.Set("enable_sql", true)
cfg.Set("sql_type", "mysql")
cfg.Set("sql_dsn", "root:example@tcp(mysql:3306)/example")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
err = cfg.AddRemoteProvider("consul", "consul:8500", "tarmac/config")
if err != nil {
t.Fatalf("Failed to create Consul config provider - %s", err)
Expand Down Expand Up @@ -400,7 +400,7 @@ func TestRunningMTLSServer(t *testing.T) {
cfg.Set("enable_sql", true)
cfg.Set("sql_type", "mysql")
cfg.Set("sql_dsn", "root:example@tcp(mysql:3306)/example")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
err = cfg.AddRemoteProvider("consul", "consul:8500", "tarmac/config")
if err != nil {
t.Fatalf("Failed to create Consul config provider - %s", err)
Expand Down Expand Up @@ -504,7 +504,7 @@ func TestRunningFailMTLSServer(t *testing.T) {
cfg.Set("enable_sql", true)
cfg.Set("sql_type", "mysql")
cfg.Set("sql_dsn", "root:example@tcp(mysql:3306)/example")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
err = cfg.AddRemoteProvider("consul", "consul:8500", "tarmac/config")
if err != nil {
t.Fatalf("Failed to create Consul config provider - %s", err)
Expand Down
33 changes: 26 additions & 7 deletions pkg/app/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func TestBasicFunction(t *testing.T) {
cfg.Set("disable_logging", false)
cfg.Set("debug", true)
cfg.Set("listen_addr", "localhost:9001")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")

srv := New(cfg)
go func() {
Expand Down Expand Up @@ -95,7 +95,7 @@ func TestMaintenanceMode(t *testing.T) {
cfg.Set("disable_logging", false)
cfg.Set("debug", true)
cfg.Set("listen_addr", "localhost:9001")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
cfg.Set("enable_maintenance_mode", true)

srv := New(cfg)
Expand Down Expand Up @@ -200,6 +200,25 @@ func TestFullService(t *testing.T) {
tc.cfg.Set("wasm_function_config", "/testdata/tarmac.json")
tt = append(tt, tc)

tc = FullServiceTestCase{name: "In-Memory SDKv1", cfg: viper.New()}
tc.cfg.Set("disable_logging", false)
tc.cfg.Set("debug", true)
tc.cfg.Set("listen_addr", "localhost:9001")
tc.cfg.Set("kvstore_type", "in-memory")
tc.cfg.Set("enable_kvstore", true)
tc.cfg.Set("wasm_function_config", "/testdata/sdkv1/tarmac.json")
tt = append(tt, tc)

tc = FullServiceTestCase{name: "MySQL SDKv1", cfg: viper.New()}
tc.cfg.Set("disable_logging", false)
tc.cfg.Set("debug", true)
tc.cfg.Set("listen_addr", "localhost:9001")
tc.cfg.Set("enable_sql", true)
tc.cfg.Set("sql_type", "mysql")
tc.cfg.Set("sql_dsn", "root:example@tcp(mysql:3306)/example")
tc.cfg.Set("wasm_function_config", "/testdata/sdkv1/tarmac.json")
tt = append(tt, tc)
madflojo marked this conversation as resolved.
Show resolved Hide resolved

for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
srv := New(tc.cfg)
Expand Down Expand Up @@ -292,7 +311,7 @@ func TestInitFuncs(t *testing.T) {
tc.cfg.Set("kvstore_type", "in-memory")
tc.cfg.Set("enable_kvstore", true)
tc.cfg.Set("run_mode", "job")
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"default":{"filepath":"/testdata/default/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","function":"default"}]}}}`)
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"default":{"filepath":"/testdata/base/default/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","function":"default"}]}}}`)
tt = append(tt, tc)

tc = InitFuncTestCase{name: "Fails", cfg: viper.New()}
Expand All @@ -302,7 +321,7 @@ func TestInitFuncs(t *testing.T) {
tc.cfg.Set("kvstore_type", "in-memory")
tc.cfg.Set("enable_kvstore", true)
tc.cfg.Set("run_mode", "job")
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"fail":{"filepath":"/testdata/fail/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","function":"fail"}]}}}`)
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"fail":{"filepath":"/testdata/base/fail/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","function":"fail"}]}}}`)
tc.err = true
tt = append(tt, tc)

Expand All @@ -313,7 +332,7 @@ func TestInitFuncs(t *testing.T) {
tc.cfg.Set("kvstore_type", "in-memory")
tc.cfg.Set("enable_kvstore", true)
tc.cfg.Set("run_mode", "job")
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"successafter5":{"filepath":"/testdata/successafter5/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","retries":10,"function":"successafter5"}]}}}`)
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"successafter5":{"filepath":"/testdata/base/successafter5/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","retries":10,"function":"successafter5"}]}}}`)
tt = append(tt, tc)

tc = InitFuncTestCase{name: "Fail After 10 Retries", cfg: viper.New()}
Expand All @@ -323,7 +342,7 @@ func TestInitFuncs(t *testing.T) {
tc.cfg.Set("kvstore_type", "in-memory")
tc.cfg.Set("enable_kvstore", true)
tc.cfg.Set("run_mode", "job")
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"fail":{"filepath":"/testdata/fail/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","retries":10,"function":"fail"}]}}}`)
tc.config = []byte(`{"services":{"test-service":{"name":"test-service","functions":{"fail":{"filepath":"/testdata/base/fail/tarmac.wasm","pool_size":1}},"routes":[{"type":"init","retries":10,"function":"fail"}]}}}`)
tc.err = true
tt = append(tt, tc)

Expand Down Expand Up @@ -381,7 +400,7 @@ func TestWASMRunner(t *testing.T) {
cfg.Set("disable_logging", false)
cfg.Set("debug", true)
cfg.Set("listen_addr", "localhost:9001")
cfg.Set("wasm_function", "/testdata/default/tarmac.wasm")
cfg.Set("wasm_function", "/testdata/base/default/tarmac.wasm")
srv := New(cfg)
go func() {
err := srv.Run()
Expand Down
Loading
Loading