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: add async propagation #17

Merged
merged 1 commit into from
Nov 27, 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
4 changes: 2 additions & 2 deletions .drone.star
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def tests(ctx):
},
{
"name": "test",
"image": "owncloudci/golang:1.21",
"image": "owncloudci/golang:1.22",
"commands": [
"go test --endpoint=ocis:9142 -v",
],
Expand Down Expand Up @@ -197,7 +197,7 @@ def dockerRelease(ctx, arch):
"steps": [
{
"name": "build",
"image": "owncloudci/golang:1.21",
"image": "owncloudci/golang:1.22",
"commands": [
"go test -c -o cs3api-validator-linux-%s.test" % (arch),
],
Expand Down
22 changes: 9 additions & 13 deletions cs3apivalidator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package main
import (
"os"
"testing"
"time"

"github.com/cucumber/godog"
"github.com/cucumber/godog/colors"
"github.com/owncloud/cs3api-validator/featurecontext"
"github.com/owncloud/cs3api-validator/scenario"
flag "github.com/spf13/pflag"
)
Expand All @@ -15,29 +17,23 @@ var opts = godog.Options{
Format: "pretty", // can define default values
}

// endpoint GRPC address of a running CS3 implementation
var endpoint string

// httpInsecure controls whether insecure HTTP connections are allowed or not
var httpInsecure bool

// grpcTLSMode TLS mode for grpc client connections
var grpcTLSMode string

func init() {
godog.BindCommandLineFlags("godog.", &opts)
}

func TestMain(m *testing.M) {
flag.StringVar(&endpoint, "endpoint", "localhost:9142", "Endpoint Url and port of a running cs3 implementation")
flag.StringVar(&grpcTLSMode, "grpc-tls-mode", "off", "TLS mode for grpc client connections ('off', 'on' or 'insecure')")
flag.BoolVar(&httpInsecure, "http-insecure", true, "Allow insecure HTTP connections")
cfg := featurecontext.Config{}
flag.StringVar(&cfg.Endpoint, "endpoint", "localhost:9142", "Endpoint Url and port of a running cs3 implementation")
flag.StringVar(&cfg.GrpcTLSMode, "grpc-tls-mode", "off", "TLS mode for grpc client connections ('off', 'on' or 'insecure')")
flag.BoolVar(&cfg.AsyncPropagation, "async-propagation", false, "Enable async propagation")
flag.DurationVar(&cfg.AsyncPropagationDelay, "async-propagation-delay", 200*time.Millisecond, "Delay for async propagation")
flag.BoolVar(&cfg.HttpInsecure, "http-insecure", true, "Allow insecure HTTP connections")
flag.Parse()
opts.Paths = flag.Args()

status := godog.TestSuite{
Name: "cs3apiValidator",
ScenarioInitializer: scenario.InitializeScenario(endpoint, httpInsecure, grpcTLSMode),
ScenarioInitializer: scenario.InitializeScenario(cfg),
Options: &opts,
}.Run()

Expand Down
10 changes: 10 additions & 0 deletions featurecontext/featurecontext.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package featurecontext

import (
"net/http"
"time"

gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
userv1beta1 "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
Expand All @@ -19,10 +20,19 @@ type ResourceAlias struct {
Info *providerv1beta1.ResourceInfo
}

type Config struct {
Endpoint string
HttpInsecure bool
GrpcTLSMode string
AsyncPropagation bool
AsyncPropagationDelay time.Duration
}

// FeatureContext holds values which are used across test steps
type FeatureContext struct {
Client gateway.GatewayAPIClient
HTTPClient http.Client
Config Config

// remember the last response to check the outcome
Response interface{}
Expand Down
9 changes: 5 additions & 4 deletions featurecontext/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
)

func (f *FeatureContext) Init(endpoint string, httpInsecure bool, grpcTLSMode string) {
func (f *FeatureContext) Init(cfg Config) {
f.Config = cfg
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
tm, err := pool.StringToTLSMode(grpcTLSMode)
tm, err := pool.StringToTLSMode(cfg.GrpcTLSMode)
if err != nil {
log.Fatal().Msg("Could not set TLS mode for grpc client")
}
client, err := pool.GetGatewayServiceClient(endpoint, pool.WithTLSMode(tm))
client, err := pool.GetGatewayServiceClient(cfg.Endpoint, pool.WithTLSMode(tm))
if err != nil {
log.Fatal().Msg("Could not initialize a grpc client")
}
Expand All @@ -27,7 +28,7 @@ func (f *FeatureContext) Init(endpoint string, httpInsecure bool, grpcTLSMode st
f.HTTPClient = http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: httpInsecure,
InsecureSkipVerify: cfg.HttpInsecure,
},
},
Timeout: time.Second * 10,
Expand Down
31 changes: 15 additions & 16 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
module github.com/owncloud/cs3api-validator

go 1.18
go 1.22.7

require (
github.com/cs3org/go-cs3apis v0.0.0-20221012090518-ef2996678965
github.com/cs3org/reva/v2 v2.10.1-0.20221019091055-df0a189e218d
github.com/cucumber/godog v0.12.2
github.com/cucumber/messages-go/v16 v16.0.1
github.com/cucumber/godog v0.15.0
github.com/cucumber/messages/go/v21 v21.0.1
github.com/rs/zerolog v1.28.0
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.8.0
google.golang.org/grpc v1.49.0
github.com/stretchr/testify v1.8.2
google.golang.org/grpc v1.68.0
)

require (
cloud.google.com/go/compute v1.10.0 // indirect
github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e // indirect
github.com/bluele/gcache v0.0.2 // indirect
github.com/cucumber/gherkin-go/v19 v19.0.3 // indirect
github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
github.com/go-ldap/ldap/v3 v3.4.4 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gofrs/uuid v4.3.0+incompatible // indirect
github.com/gofrs/uuid v4.3.1+incompatible // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-hclog v1.3.1 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-memdb v1.3.0 // indirect
github.com/hashicorp/go-memdb v1.3.4 // indirect
github.com/hashicorp/go-plugin v1.4.4 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 // indirect
Expand All @@ -49,12 +49,11 @@ require (
go.opentelemetry.io/otel/exporters/jaeger v1.10.0 // indirect
go.opentelemetry.io/otel/sdk v1.10.0 // indirect
go.opentelemetry.io/otel/trace v1.10.0 // indirect
golang.org/x/crypto v0.0.0-20220919173607-35f4265a4bc0 // indirect
golang.org/x/net v0.0.0-20220921155015-db77216a4ee9 // indirect
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/crypto v0.27.0 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 // indirect
google.golang.org/protobuf v1.28.1 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading