From 4c59b775e4aa0caae3dc96c2e9f2eb4a9586e39b Mon Sep 17 00:00:00 2001 From: Benjamin Cane Date: Sun, 13 Oct 2024 07:59:18 -0700 Subject: [PATCH] refactor(tests): relocate testdata to new structure Just moved some stuff around to keep the testdata more organized. When a single directory just can't handle the fame, split it! --- Makefile | 17 +++-- pkg/app/app_test.go | 12 ++-- pkg/app/server_test.go | 33 +++++++-- pkg/wasm/wasm_test.go | 10 +-- testdata/{ => base}/default/Makefile | 0 .../{ => base}/default/docker-compose.yml | 0 testdata/{ => base}/default/go.mod | 0 testdata/{ => base}/default/go.sum | 0 testdata/{ => base}/default/main.go | 0 testdata/{ => base}/fail/Makefile | 0 testdata/{ => base}/fail/docker-compose.yml | 0 testdata/{ => base}/fail/go.mod | 0 testdata/{ => base}/fail/go.sum | 0 testdata/{ => base}/fail/main.go | 0 testdata/{ => base}/function/Makefile | 0 .../{ => base}/function/docker-compose.yml | 0 testdata/{ => base}/function/go.mod | 0 testdata/{ => base}/function/go.sum | 0 testdata/{ => base}/function/main.go | 0 testdata/{ => base}/kv/Makefile | 0 testdata/{ => base}/kv/docker-compose.yml | 0 testdata/{ => base}/kv/go.mod | 0 testdata/{ => base}/kv/go.sum | 0 testdata/{ => base}/kv/main.go | 0 testdata/{ => base}/logger/Makefile | 0 testdata/{ => base}/logger/docker-compose.yml | 0 testdata/{ => base}/logger/go.mod | 0 testdata/{ => base}/logger/go.sum | 0 testdata/{ => base}/logger/main.go | 0 testdata/{ => base}/sql/Makefile | 0 testdata/{ => base}/sql/docker-compose.yml | 0 testdata/{ => base}/sql/go.mod | 0 testdata/{ => base}/sql/go.sum | 0 testdata/{ => base}/sql/main.go | 0 testdata/{ => base}/successafter5/Makefile | 0 .../successafter5/docker-compose.yml | 0 testdata/{ => base}/successafter5/go.mod | 0 testdata/{ => base}/successafter5/go.sum | 0 testdata/{ => base}/successafter5/main.go | 0 testdata/sdkv1/kv/Makefile | 10 +++ testdata/sdkv1/kv/docker-compose.yml | 12 ++++ testdata/sdkv1/kv/go.mod | 10 +++ testdata/sdkv1/kv/go.sum | 8 +++ testdata/sdkv1/kv/main.go | 43 +++++++++++ testdata/sdkv1/logger/Makefile | 10 +++ testdata/sdkv1/logger/docker-compose.yml | 12 ++++ testdata/sdkv1/logger/go.mod | 10 +++ testdata/sdkv1/logger/go.sum | 7 ++ testdata/sdkv1/logger/main.go | 28 ++++++++ testdata/sdkv1/sql/Makefile | 10 +++ testdata/sdkv1/sql/docker-compose.yml | 12 ++++ testdata/sdkv1/sql/go.mod | 10 +++ testdata/sdkv1/sql/go.sum | 7 ++ testdata/sdkv1/sql/main.go | 32 +++++++++ testdata/sdkv1/tarmac.json | 72 +++++++++++++++++++ testdata/tarmac-fail.json | 2 +- testdata/tarmac.json | 10 +-- 57 files changed, 346 insertions(+), 31 deletions(-) rename testdata/{ => base}/default/Makefile (100%) rename testdata/{ => base}/default/docker-compose.yml (100%) rename testdata/{ => base}/default/go.mod (100%) rename testdata/{ => base}/default/go.sum (100%) rename testdata/{ => base}/default/main.go (100%) rename testdata/{ => base}/fail/Makefile (100%) rename testdata/{ => base}/fail/docker-compose.yml (100%) rename testdata/{ => base}/fail/go.mod (100%) rename testdata/{ => base}/fail/go.sum (100%) rename testdata/{ => base}/fail/main.go (100%) rename testdata/{ => base}/function/Makefile (100%) rename testdata/{ => base}/function/docker-compose.yml (100%) rename testdata/{ => base}/function/go.mod (100%) rename testdata/{ => base}/function/go.sum (100%) rename testdata/{ => base}/function/main.go (100%) rename testdata/{ => base}/kv/Makefile (100%) rename testdata/{ => base}/kv/docker-compose.yml (100%) rename testdata/{ => base}/kv/go.mod (100%) rename testdata/{ => base}/kv/go.sum (100%) rename testdata/{ => base}/kv/main.go (100%) rename testdata/{ => base}/logger/Makefile (100%) rename testdata/{ => base}/logger/docker-compose.yml (100%) rename testdata/{ => base}/logger/go.mod (100%) rename testdata/{ => base}/logger/go.sum (100%) rename testdata/{ => base}/logger/main.go (100%) rename testdata/{ => base}/sql/Makefile (100%) rename testdata/{ => base}/sql/docker-compose.yml (100%) rename testdata/{ => base}/sql/go.mod (100%) rename testdata/{ => base}/sql/go.sum (100%) rename testdata/{ => base}/sql/main.go (100%) rename testdata/{ => base}/successafter5/Makefile (100%) rename testdata/{ => base}/successafter5/docker-compose.yml (100%) rename testdata/{ => base}/successafter5/go.mod (100%) rename testdata/{ => base}/successafter5/go.sum (100%) rename testdata/{ => base}/successafter5/main.go (100%) create mode 100644 testdata/sdkv1/kv/Makefile create mode 100644 testdata/sdkv1/kv/docker-compose.yml create mode 100644 testdata/sdkv1/kv/go.mod create mode 100644 testdata/sdkv1/kv/go.sum create mode 100644 testdata/sdkv1/kv/main.go create mode 100644 testdata/sdkv1/logger/Makefile create mode 100644 testdata/sdkv1/logger/docker-compose.yml create mode 100644 testdata/sdkv1/logger/go.mod create mode 100644 testdata/sdkv1/logger/go.sum create mode 100644 testdata/sdkv1/logger/main.go create mode 100644 testdata/sdkv1/sql/Makefile create mode 100644 testdata/sdkv1/sql/docker-compose.yml create mode 100644 testdata/sdkv1/sql/go.mod create mode 100644 testdata/sdkv1/sql/go.sum create mode 100644 testdata/sdkv1/sql/main.go create mode 100644 testdata/sdkv1/tarmac.json diff --git a/Makefile b/Makefile index b77c9905..dd07468e 100644 --- a/Makefile +++ b/Makefile @@ -4,13 +4,16 @@ 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 diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index 4371edc9..17291102 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -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") srv := New(cfg) go func() { err := srv.Run() @@ -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() @@ -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() @@ -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) @@ -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) @@ -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) diff --git a/pkg/app/server_test.go b/pkg/app/server_test.go index 82fd502b..c6d95716 100644 --- a/pkg/app/server_test.go +++ b/pkg/app/server_test.go @@ -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() { @@ -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) @@ -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) + for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { srv := New(tc.cfg) @@ -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()} @@ -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) @@ -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()} @@ -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) @@ -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() diff --git a/pkg/wasm/wasm_test.go b/pkg/wasm/wasm_test.go index 98d7f28f..e909f810 100644 --- a/pkg/wasm/wasm_test.go +++ b/pkg/wasm/wasm_test.go @@ -37,7 +37,7 @@ func TestWASMModuleCreation(t *testing.T) { ModuleConf: ModuleConfig{ Name: "A Module", PoolSize: 99, - Filepath: "/testdata/logger/tarmac.wasm", + Filepath: "/testdata/base/logger/tarmac.wasm", }, }) @@ -47,7 +47,7 @@ func TestWASMModuleCreation(t *testing.T) { Pass: false, ModuleConf: ModuleConfig{ PoolSize: 99, - Filepath: "/testdata/logger/tarmac.wasm", + Filepath: "/testdata/base/logger/tarmac.wasm", }, }) @@ -57,7 +57,7 @@ func TestWASMModuleCreation(t *testing.T) { Pass: true, ModuleConf: ModuleConfig{ Name: "A Module", - Filepath: "/testdata/logger/tarmac.wasm", + Filepath: "/testdata/base/logger/tarmac.wasm", }, }) @@ -78,7 +78,7 @@ func TestWASMModuleCreation(t *testing.T) { ModuleConf: ModuleConfig{ Name: "A Module", PoolSize: 99, - Filepath: "/doesntexist/testdata/logger/tarmac.wasm", + Filepath: "/doesntexist/testdata/base/logger/tarmac.wasm", }, }) @@ -119,7 +119,7 @@ func TestWASMExecution(t *testing.T) { err = s.LoadModule(ModuleConfig{ Name: "AModule", - Filepath: "/testdata/logger/tarmac.wasm", + Filepath: "/testdata/base/logger/tarmac.wasm", }) if err != nil { t.Fatalf("Failed to load module - %s", err) diff --git a/testdata/default/Makefile b/testdata/base/default/Makefile similarity index 100% rename from testdata/default/Makefile rename to testdata/base/default/Makefile diff --git a/testdata/default/docker-compose.yml b/testdata/base/default/docker-compose.yml similarity index 100% rename from testdata/default/docker-compose.yml rename to testdata/base/default/docker-compose.yml diff --git a/testdata/default/go.mod b/testdata/base/default/go.mod similarity index 100% rename from testdata/default/go.mod rename to testdata/base/default/go.mod diff --git a/testdata/default/go.sum b/testdata/base/default/go.sum similarity index 100% rename from testdata/default/go.sum rename to testdata/base/default/go.sum diff --git a/testdata/default/main.go b/testdata/base/default/main.go similarity index 100% rename from testdata/default/main.go rename to testdata/base/default/main.go diff --git a/testdata/fail/Makefile b/testdata/base/fail/Makefile similarity index 100% rename from testdata/fail/Makefile rename to testdata/base/fail/Makefile diff --git a/testdata/fail/docker-compose.yml b/testdata/base/fail/docker-compose.yml similarity index 100% rename from testdata/fail/docker-compose.yml rename to testdata/base/fail/docker-compose.yml diff --git a/testdata/fail/go.mod b/testdata/base/fail/go.mod similarity index 100% rename from testdata/fail/go.mod rename to testdata/base/fail/go.mod diff --git a/testdata/fail/go.sum b/testdata/base/fail/go.sum similarity index 100% rename from testdata/fail/go.sum rename to testdata/base/fail/go.sum diff --git a/testdata/fail/main.go b/testdata/base/fail/main.go similarity index 100% rename from testdata/fail/main.go rename to testdata/base/fail/main.go diff --git a/testdata/function/Makefile b/testdata/base/function/Makefile similarity index 100% rename from testdata/function/Makefile rename to testdata/base/function/Makefile diff --git a/testdata/function/docker-compose.yml b/testdata/base/function/docker-compose.yml similarity index 100% rename from testdata/function/docker-compose.yml rename to testdata/base/function/docker-compose.yml diff --git a/testdata/function/go.mod b/testdata/base/function/go.mod similarity index 100% rename from testdata/function/go.mod rename to testdata/base/function/go.mod diff --git a/testdata/function/go.sum b/testdata/base/function/go.sum similarity index 100% rename from testdata/function/go.sum rename to testdata/base/function/go.sum diff --git a/testdata/function/main.go b/testdata/base/function/main.go similarity index 100% rename from testdata/function/main.go rename to testdata/base/function/main.go diff --git a/testdata/kv/Makefile b/testdata/base/kv/Makefile similarity index 100% rename from testdata/kv/Makefile rename to testdata/base/kv/Makefile diff --git a/testdata/kv/docker-compose.yml b/testdata/base/kv/docker-compose.yml similarity index 100% rename from testdata/kv/docker-compose.yml rename to testdata/base/kv/docker-compose.yml diff --git a/testdata/kv/go.mod b/testdata/base/kv/go.mod similarity index 100% rename from testdata/kv/go.mod rename to testdata/base/kv/go.mod diff --git a/testdata/kv/go.sum b/testdata/base/kv/go.sum similarity index 100% rename from testdata/kv/go.sum rename to testdata/base/kv/go.sum diff --git a/testdata/kv/main.go b/testdata/base/kv/main.go similarity index 100% rename from testdata/kv/main.go rename to testdata/base/kv/main.go diff --git a/testdata/logger/Makefile b/testdata/base/logger/Makefile similarity index 100% rename from testdata/logger/Makefile rename to testdata/base/logger/Makefile diff --git a/testdata/logger/docker-compose.yml b/testdata/base/logger/docker-compose.yml similarity index 100% rename from testdata/logger/docker-compose.yml rename to testdata/base/logger/docker-compose.yml diff --git a/testdata/logger/go.mod b/testdata/base/logger/go.mod similarity index 100% rename from testdata/logger/go.mod rename to testdata/base/logger/go.mod diff --git a/testdata/logger/go.sum b/testdata/base/logger/go.sum similarity index 100% rename from testdata/logger/go.sum rename to testdata/base/logger/go.sum diff --git a/testdata/logger/main.go b/testdata/base/logger/main.go similarity index 100% rename from testdata/logger/main.go rename to testdata/base/logger/main.go diff --git a/testdata/sql/Makefile b/testdata/base/sql/Makefile similarity index 100% rename from testdata/sql/Makefile rename to testdata/base/sql/Makefile diff --git a/testdata/sql/docker-compose.yml b/testdata/base/sql/docker-compose.yml similarity index 100% rename from testdata/sql/docker-compose.yml rename to testdata/base/sql/docker-compose.yml diff --git a/testdata/sql/go.mod b/testdata/base/sql/go.mod similarity index 100% rename from testdata/sql/go.mod rename to testdata/base/sql/go.mod diff --git a/testdata/sql/go.sum b/testdata/base/sql/go.sum similarity index 100% rename from testdata/sql/go.sum rename to testdata/base/sql/go.sum diff --git a/testdata/sql/main.go b/testdata/base/sql/main.go similarity index 100% rename from testdata/sql/main.go rename to testdata/base/sql/main.go diff --git a/testdata/successafter5/Makefile b/testdata/base/successafter5/Makefile similarity index 100% rename from testdata/successafter5/Makefile rename to testdata/base/successafter5/Makefile diff --git a/testdata/successafter5/docker-compose.yml b/testdata/base/successafter5/docker-compose.yml similarity index 100% rename from testdata/successafter5/docker-compose.yml rename to testdata/base/successafter5/docker-compose.yml diff --git a/testdata/successafter5/go.mod b/testdata/base/successafter5/go.mod similarity index 100% rename from testdata/successafter5/go.mod rename to testdata/base/successafter5/go.mod diff --git a/testdata/successafter5/go.sum b/testdata/base/successafter5/go.sum similarity index 100% rename from testdata/successafter5/go.sum rename to testdata/base/successafter5/go.sum diff --git a/testdata/successafter5/main.go b/testdata/base/successafter5/main.go similarity index 100% rename from testdata/successafter5/main.go rename to testdata/base/successafter5/main.go diff --git a/testdata/sdkv1/kv/Makefile b/testdata/sdkv1/kv/Makefile new file mode 100644 index 00000000..5137f2ae --- /dev/null +++ b/testdata/sdkv1/kv/Makefile @@ -0,0 +1,10 @@ +## Makefile for Go example for Tarmac WASM functions + +build: + ## Run TinyGo build via Docker because its easier + docker run --rm -v `pwd`/:/build -w /build tinygo/tinygo:0.25.0 tinygo build -o /build/tarmac.wasm -target wasi /build/main.go + +docker-compose: + docker compose up + +run: build docker-compose diff --git a/testdata/sdkv1/kv/docker-compose.yml b/testdata/sdkv1/kv/docker-compose.yml new file mode 100644 index 00000000..848ca153 --- /dev/null +++ b/testdata/sdkv1/kv/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' +services: + tarmac-example: + image: madflojo/tarmac + ports: + - 80:8080 + environment: + - "APP_ENABLE_TLS=false" + - "APP_LISTEN_ADDR=0.0.0.0:8080" + - "APP_DEBUG=true" + volumes: + - "./:/functions" diff --git a/testdata/sdkv1/kv/go.mod b/testdata/sdkv1/kv/go.mod new file mode 100644 index 00000000..dc379f41 --- /dev/null +++ b/testdata/sdkv1/kv/go.mod @@ -0,0 +1,10 @@ +module github.com/tarmac-project/tarmac/testdata/kv + +go 1.21 + +require github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 + +require ( + github.com/valyala/fastjson v1.6.4 // indirect + github.com/wapc/wapc-guest-tinygo v0.3.3 // indirect +) diff --git a/testdata/sdkv1/kv/go.sum b/testdata/sdkv1/kv/go.sum new file mode 100644 index 00000000..7a604dae --- /dev/null +++ b/testdata/sdkv1/kv/go.sum @@ -0,0 +1,8 @@ +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 h1:QKsEf6SXTYrJM9/B4cNoM4RS3/rzuViJaiutEcdSRZQ= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0/go.mod h1:UTKYV0QFdkJDgV2sJcnuCujVy49MCd8bgi2JmwviJ6E= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/wapc/wapc-guest-tinygo v0.3.3 h1:jLebiwjVSHLGnS+BRabQ6+XOV7oihVWAc05Hf1SbeR0= +github.com/wapc/wapc-guest-tinygo v0.3.3/go.mod h1:mzM3CnsdSYktfPkaBdZ8v88ZlfUDEy5Jh5XBOV3fYcw= diff --git a/testdata/sdkv1/kv/main.go b/testdata/sdkv1/kv/main.go new file mode 100644 index 00000000..2fea62a8 --- /dev/null +++ b/testdata/sdkv1/kv/main.go @@ -0,0 +1,43 @@ +// This program is a test program used to facilitate unit testing with Tarmac. +package main + +import ( + "fmt" + + "github.com/tarmac-project/tarmac/pkg/sdk" +) + +var tarmac *sdk.Tarmac + +func main() { + var err error + + // Initialize the Tarmac SDK + tarmac, err = sdk.New(sdk.Config{Namespace: "tarmac", Handler: Handler}) + if err != nil { + return + } +} + +func Handler(payload []byte) ([]byte, error) { + // Store data within KV datastore + err := tarmac.KV.Set("test-data", []byte("i am a little teapot")) + if err != nil { + return []byte(""), fmt.Errorf(`Failed to store data via KVStore - %s`, err) + } + + // Fetch data from KV datastore + data, err := tarmac.KV.Get("test-data") + if err != nil { + return []byte(""), fmt.Errorf(`Failed to fetch data via KVStore - %s`, err) + } + + tarmac.Logger.Info(fmt.Sprintf("Fetched %s from datastore", data)) + + if len(data) != len([]byte("i am a little teapot")) { + return []byte(""), fmt.Errorf("not able to fetch data from KVStore") + } + + // Return a happy message + return []byte("Howdie"), nil +} diff --git a/testdata/sdkv1/logger/Makefile b/testdata/sdkv1/logger/Makefile new file mode 100644 index 00000000..5137f2ae --- /dev/null +++ b/testdata/sdkv1/logger/Makefile @@ -0,0 +1,10 @@ +## Makefile for Go example for Tarmac WASM functions + +build: + ## Run TinyGo build via Docker because its easier + docker run --rm -v `pwd`/:/build -w /build tinygo/tinygo:0.25.0 tinygo build -o /build/tarmac.wasm -target wasi /build/main.go + +docker-compose: + docker compose up + +run: build docker-compose diff --git a/testdata/sdkv1/logger/docker-compose.yml b/testdata/sdkv1/logger/docker-compose.yml new file mode 100644 index 00000000..848ca153 --- /dev/null +++ b/testdata/sdkv1/logger/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' +services: + tarmac-example: + image: madflojo/tarmac + ports: + - 80:8080 + environment: + - "APP_ENABLE_TLS=false" + - "APP_LISTEN_ADDR=0.0.0.0:8080" + - "APP_DEBUG=true" + volumes: + - "./:/functions" diff --git a/testdata/sdkv1/logger/go.mod b/testdata/sdkv1/logger/go.mod new file mode 100644 index 00000000..28d889e9 --- /dev/null +++ b/testdata/sdkv1/logger/go.mod @@ -0,0 +1,10 @@ +module github.com/tarmac-project/tarmac/testdata/logger + +go 1.20 + +require github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 + +require ( + github.com/valyala/fastjson v1.6.4 // indirect + github.com/wapc/wapc-guest-tinygo v0.3.3 // indirect +) diff --git a/testdata/sdkv1/logger/go.sum b/testdata/sdkv1/logger/go.sum new file mode 100644 index 00000000..0b9211cc --- /dev/null +++ b/testdata/sdkv1/logger/go.sum @@ -0,0 +1,7 @@ +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 h1:QKsEf6SXTYrJM9/B4cNoM4RS3/rzuViJaiutEcdSRZQ= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0/go.mod h1:UTKYV0QFdkJDgV2sJcnuCujVy49MCd8bgi2JmwviJ6E= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/wapc/wapc-guest-tinygo v0.3.3 h1:jLebiwjVSHLGnS+BRabQ6+XOV7oihVWAc05Hf1SbeR0= +github.com/wapc/wapc-guest-tinygo v0.3.3/go.mod h1:mzM3CnsdSYktfPkaBdZ8v88ZlfUDEy5Jh5XBOV3fYcw= diff --git a/testdata/sdkv1/logger/main.go b/testdata/sdkv1/logger/main.go new file mode 100644 index 00000000..d71dcc91 --- /dev/null +++ b/testdata/sdkv1/logger/main.go @@ -0,0 +1,28 @@ +// This program is a test program used to facilitate unit testing with Tarmac. +package main + +import ( + "fmt" + + "github.com/tarmac-project/tarmac/pkg/sdk" +) + +var tarmac *sdk.Tarmac + +func main() { + var err error + + // Initialize the Tarmac SDK + tarmac, err = sdk.New(sdk.Config{Namespace: "tarmac", Handler: Handler}) + if err != nil { + return + } +} + +func Handler(payload []byte) ([]byte, error) { + // Log the payload + tarmac.Logger.Info(fmt.Sprintf("Testdata function - %s", payload)) + + // Return a happy message + return payload, nil +} diff --git a/testdata/sdkv1/sql/Makefile b/testdata/sdkv1/sql/Makefile new file mode 100644 index 00000000..5137f2ae --- /dev/null +++ b/testdata/sdkv1/sql/Makefile @@ -0,0 +1,10 @@ +## Makefile for Go example for Tarmac WASM functions + +build: + ## Run TinyGo build via Docker because its easier + docker run --rm -v `pwd`/:/build -w /build tinygo/tinygo:0.25.0 tinygo build -o /build/tarmac.wasm -target wasi /build/main.go + +docker-compose: + docker compose up + +run: build docker-compose diff --git a/testdata/sdkv1/sql/docker-compose.yml b/testdata/sdkv1/sql/docker-compose.yml new file mode 100644 index 00000000..848ca153 --- /dev/null +++ b/testdata/sdkv1/sql/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' +services: + tarmac-example: + image: madflojo/tarmac + ports: + - 80:8080 + environment: + - "APP_ENABLE_TLS=false" + - "APP_LISTEN_ADDR=0.0.0.0:8080" + - "APP_DEBUG=true" + volumes: + - "./:/functions" diff --git a/testdata/sdkv1/sql/go.mod b/testdata/sdkv1/sql/go.mod new file mode 100644 index 00000000..2bcde009 --- /dev/null +++ b/testdata/sdkv1/sql/go.mod @@ -0,0 +1,10 @@ +module github.com/tarmac-project/tarmac/testdata/sql + +go 1.20 + +require github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 + +require ( + github.com/valyala/fastjson v1.6.4 // indirect + github.com/wapc/wapc-guest-tinygo v0.3.3 // indirect +) diff --git a/testdata/sdkv1/sql/go.sum b/testdata/sdkv1/sql/go.sum new file mode 100644 index 00000000..0b9211cc --- /dev/null +++ b/testdata/sdkv1/sql/go.sum @@ -0,0 +1,7 @@ +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0 h1:QKsEf6SXTYrJM9/B4cNoM4RS3/rzuViJaiutEcdSRZQ= +github.com/tarmac-project/tarmac/pkg/sdk v0.5.0/go.mod h1:UTKYV0QFdkJDgV2sJcnuCujVy49MCd8bgi2JmwviJ6E= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/wapc/wapc-guest-tinygo v0.3.3 h1:jLebiwjVSHLGnS+BRabQ6+XOV7oihVWAc05Hf1SbeR0= +github.com/wapc/wapc-guest-tinygo v0.3.3/go.mod h1:mzM3CnsdSYktfPkaBdZ8v88ZlfUDEy5Jh5XBOV3fYcw= diff --git a/testdata/sdkv1/sql/main.go b/testdata/sdkv1/sql/main.go new file mode 100644 index 00000000..3ab85a1b --- /dev/null +++ b/testdata/sdkv1/sql/main.go @@ -0,0 +1,32 @@ +// This program is a test program used to facilitate unit testing with Tarmac. +package main + +import ( + "fmt" + + "github.com/tarmac-project/tarmac/pkg/sdk" +) + +var tarmac *sdk.Tarmac + +func main() { + var err error + + // Initialize the Tarmac SDK + tarmac, err = sdk.New(sdk.Config{Namespace: "tarmac", Handler: Handler}) + if err != nil { + return + } +} + +func Handler(payload []byte) ([]byte, error) { + // SQL Query + _, err := tarmac.SQL.Query(`CREATE TABLE IF NOT EXISTS wasmguest ( id int NOT NULL, name varchar(255), PRIMARY KEY (id) );`) + if err != nil { + tarmac.Logger.Error(fmt.Sprintf("Unable to execute SQL query - %s", err)) + return []byte(""), fmt.Errorf(`Failed to SQL callback - %s`, err) + } + + // Return a happy message + return []byte("Howdie"), nil +} diff --git a/testdata/sdkv1/tarmac.json b/testdata/sdkv1/tarmac.json new file mode 100644 index 00000000..16a0f914 --- /dev/null +++ b/testdata/sdkv1/tarmac.json @@ -0,0 +1,72 @@ +{ + "services": { + "test-service": { + "name": "test-service", + "functions": { + "default": { + "filepath": "/testdata/base/default/tarmac.wasm" + }, + "kv": { + "filepath": "/testdata/sdkv1/kv/tarmac.wasm", + "pool_size": 1000 + }, + "logger": { + "filepath": "/testdata/sdkv1/logger/tarmac.wasm" + }, + "sql": { + "filepath": "/testdata/sdkv1/sql/tarmac.wasm", + "pool_size": 10 + }, + "func": { + "filepath": "/testdata/base/function/tarmac.wasm", + "pool_size": 1 + } + }, + "routes": [ + { + "type": "init", + "function": "default" + }, + { + "type": "http", + "path": "/", + "methods": ["GET", "POST", "PUT"], + "function": "default" + }, + { + "type": "http", + "path": "/kv", + "methods": ["GET"], + "function": "kv" + }, + { + "type": "http", + "path": "/logger", + "methods": ["GET", "POST"], + "function": "logger" + }, + { + "type": "http", + "path": "/sql", + "methods": ["GET"], + "function": "sql" + }, + { + "type": "http", + "path": "/func", + "methods": ["GET"], + "function": "func" + }, + { + "type": "scheduled_task", + "frequency": 15, + "function": "default" + }, + { + "type": "function", + "function": "logger" + } + ] + } + } +} diff --git a/testdata/tarmac-fail.json b/testdata/tarmac-fail.json index d69f8576..8f74f72b 100644 --- a/testdata/tarmac-fail.json +++ b/testdata/tarmac-fail.json @@ -4,7 +4,7 @@ "name": "test-service", "functions": { "fail": { - "filepath": "/testdata/fail/tarmac.wasm" + "filepath": "/testdata/base/fail/tarmac.wasm" } }, "routes": [ diff --git a/testdata/tarmac.json b/testdata/tarmac.json index 6a223fce..e59a1015 100644 --- a/testdata/tarmac.json +++ b/testdata/tarmac.json @@ -4,21 +4,21 @@ "name": "test-service", "functions": { "default": { - "filepath": "/testdata/default/tarmac.wasm" + "filepath": "/testdata/base/default/tarmac.wasm" }, "kv": { - "filepath": "/testdata/kv/tarmac.wasm", + "filepath": "/testdata/base/kv/tarmac.wasm", "pool_size": 1000 }, "logger": { - "filepath": "/testdata/logger/tarmac.wasm" + "filepath": "/testdata/base/logger/tarmac.wasm" }, "sql": { - "filepath": "/testdata/sql/tarmac.wasm", + "filepath": "/testdata/base/sql/tarmac.wasm", "pool_size": 10 }, "func": { - "filepath": "/testdata/function/tarmac.wasm", + "filepath": "/testdata/base/function/tarmac.wasm", "pool_size": 1 } },