diff --git a/tools/coredump/cloudstore/cloudstore.go b/tools/coredump/cloudstore/cloudstore.go new file mode 100644 index 000000000..89086b9a5 --- /dev/null +++ b/tools/coredump/cloudstore/cloudstore.go @@ -0,0 +1,52 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// cloudstore provides access to the cloud based storage used in the tests. +package cloudstore // import "go.opentelemetry.io/ebpf-profiler/tools/coredump/cloudstore" + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/aws" + awsconfig "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/s3" +) + +// moduleStoreRegion defines the S3 bucket OCI region. +const moduleStoreRegion = "us-sanjose-1" + +// moduleStoreObjectNamespace defines the S3 bucket OCI object name space. +const moduleStoreObjectNamespace = "axtwf1hkrwcy" + +// modulePublicReadUrl defines the S3 bucket OCI public read only base path. +// +//nolint:lll +const modulePublicReadURL = "sm-wftyyzHJkBghWeexmK1o5ArimNwZC-5eBej5Lx4e46sLVHtO_y7Zf7FZgoIu_/n/axtwf1hkrwcy" + +// moduleStoreS3Bucket defines the S3 bucket used for the module store. +const moduleStoreS3Bucket = "ebpf-profiling-coredumps" + +func PublicReadURL() string { + return fmt.Sprintf("https://%s.objectstorage.%s.oci.customer-oci.com/p/%s/b/%s/o/", + moduleStoreObjectNamespace, moduleStoreRegion, modulePublicReadURL, moduleStoreS3Bucket) +} + +func ModulestoreS3Bucket() string { + return moduleStoreS3Bucket +} + +func Client() (*s3.Client, error) { + cfg, err := awsconfig.LoadDefaultConfig(context.Background()) + if err != nil { + return nil, err + } + + return s3.NewFromConfig(cfg, func(o *s3.Options) { + baseEndpoint := fmt.Sprintf("https://%s.compat.objectstorage.%s.oraclecloud.com/", + moduleStoreObjectNamespace, moduleStoreRegion) + o.Region = moduleStoreRegion + o.BaseEndpoint = aws.String(baseEndpoint) + o.UsePathStyle = true + }), nil +} diff --git a/tools/coredump/coredump_test.go b/tools/coredump/coredump_test.go index 4c0f199f3..f805ee130 100644 --- a/tools/coredump/coredump_test.go +++ b/tools/coredump/coredump_test.go @@ -8,6 +8,8 @@ import ( "testing" "github.com/stretchr/testify/require" + "go.opentelemetry.io/ebpf-profiler/tools/coredump/cloudstore" + "go.opentelemetry.io/ebpf-profiler/tools/coredump/modulestore" ) func TestCoreDumps(t *testing.T) { @@ -15,7 +17,10 @@ func TestCoreDumps(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, cases) - store, err := initModuleStore() + cloudClient, err := cloudstore.Client() + require.NoError(t, err) + store, err := modulestore.New(cloudClient, + cloudstore.PublicReadURL(), cloudstore.ModulestoreS3Bucket(), "modulecache") require.NoError(t, err) for _, filename := range cases { diff --git a/tools/coredump/main.go b/tools/coredump/main.go index d24aeb37a..3a1b8eabd 100644 --- a/tools/coredump/main.go +++ b/tools/coredump/main.go @@ -11,37 +11,24 @@ import ( "context" "errors" "flag" - "fmt" "os" - "github.com/aws/aws-sdk-go-v2/aws" - awsconfig "github.com/aws/aws-sdk-go-v2/config" - "github.com/aws/aws-sdk-go-v2/service/s3" - "github.com/peterbourgon/ff/v3/ffcli" log "github.com/sirupsen/logrus" + "go.opentelemetry.io/ebpf-profiler/tools/coredump/cloudstore" "go.opentelemetry.io/ebpf-profiler/tools/coredump/modulestore" ) -// moduleStoreRegion defines the S3 bucket OCI region. -const moduleStoreRegion = "us-sanjose-1" - -// moduleStoreObjectNamespace defines the S3 bucket OCI object name space. -const moduleStoreObjectNamespace = "axtwf1hkrwcy" - -// modulePublicReadUrl defines the S3 bucket OCI public read only base path. -// -//nolint:lll -const modulePublicReadURL = "sm-wftyyzHJkBghWeexmK1o5ArimNwZC-5eBej5Lx4e46sLVHtO_y7Zf7FZgoIu_/n/axtwf1hkrwcy" - -// moduleStoreS3Bucket defines the S3 bucket used for the module store. -const moduleStoreS3Bucket = "ebpf-profiling-coredumps" - func main() { log.SetReportCaller(false) log.SetFormatter(&log.TextFormatter{}) - store, err := initModuleStore() + cloudClient, err := cloudstore.Client() + if err != nil { + log.Fatalf("%v", err) + } + store, err := modulestore.New(cloudClient, + cloudstore.PublicReadURL(), cloudstore.ModulestoreS3Bucket(), "modulecache") if err != nil { log.Fatalf("%v", err) } @@ -70,22 +57,3 @@ func main() { } } } - -func initModuleStore() (*modulestore.Store, error) { - publicReadURL := fmt.Sprintf("https://%s.objectstorage.%s.oci.customer-oci.com/p/%s/b/%s/o/", - moduleStoreObjectNamespace, moduleStoreRegion, modulePublicReadURL, moduleStoreS3Bucket) - - cfg, err := awsconfig.LoadDefaultConfig(context.Background()) - if err != nil { - return nil, err - } - - s3Client := s3.NewFromConfig(cfg, func(o *s3.Options) { - baseEndpoint := fmt.Sprintf("https://%s.compat.objectstorage.%s.oraclecloud.com/", - moduleStoreObjectNamespace, moduleStoreRegion) - o.Region = moduleStoreRegion - o.BaseEndpoint = aws.String(baseEndpoint) - o.UsePathStyle = true - }) - return modulestore.New(s3Client, publicReadURL, moduleStoreS3Bucket, "modulecache") -}