Skip to content
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
2 changes: 1 addition & 1 deletion .github/actions/go-test-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ runs:
restore-keys: |
${{ matrix.os }}-golang-${{ matrix.go }}-
- name: Setup PostgreSQL database
uses: ikalnytskyi/action-setup-postgres@v4
uses: ikalnytskyi/action-setup-postgres@v6
with:
username: 'singularity'
password: 'singularity'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/go-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ concurrency:

jobs:
go-test:
uses: ipdxco/unified-github-workflows/.github/workflows/go-test.yml@v0.0
uses: ipdxco/unified-github-workflows/.github/workflows/go-test.yml@v1.0.2
48 changes: 39 additions & 9 deletions cmd/functional_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ import (
"io"
"os"
"path/filepath"
"strings"
"testing"

"github.com/data-preservation-programs/singularity/model"
"github.com/data-preservation-programs/singularity/storagesystem"
"github.com/data-preservation-programs/singularity/util"
"github.com/data-preservation-programs/singularity/util/testutil"
uio "github.com/ipfs/go-unixfs/io"
"github.com/orlangure/gnomock"
"github.com/orlangure/gnomock/preset/localstack"
"github.com/stretchr/testify/require"
"gorm.io/gorm"
)
Expand Down Expand Up @@ -209,18 +212,38 @@ func TestRescan(t *testing.T) {
// 8. Extract into folder and compare with the original source
// 9. Repeat above with different maxSize and inline
func TestDataPrep(t *testing.T) {
const (
bucketName = "testbucket"
)

// Prepare local source
tmp := t.TempDir()
s3tmp := t.TempDir()

err := os.MkdirAll(filepath.Join(s3tmp, bucketName), 0777)
require.NoError(t, err)

p := localstack.Preset(
localstack.WithServices(localstack.S3),
localstack.WithS3Files(s3tmp),
)
localS3, err := gnomock.Start(p)
if err != nil && strings.HasPrefix(err.Error(), "can't start container") {
t.Skip("Docker required for s3 tests")
}
require.NoError(t, err)
defer func() { _ = gnomock.Stop(localS3) }()

s3Handler, err := storagesystem.NewRCloneHandler(context.Background(), model.Storage{
Type: "s3",
Path: "public-dataset-test",
Path: bucketName,
Config: map[string]string{
"region": "us-west-2",
"provider": "AWS",
"chunk_size": "5Mi",
"list_chunk": "1000",
"region": "us-east-1",
"provider": "Other",
"force_path_style": "true",
"chunk_size": "5Mi",
"list_chunk": "1000",
"endpoint": fmt.Sprint("http://", localS3.Address(localstack.APIPort)),
"env_auth": "false",
},
})
require.NoError(t, err)
Expand Down Expand Up @@ -250,6 +273,7 @@ func TestDataPrep(t *testing.T) {
uio.HAMTShardingSize = 1024
defer func() { uio.HAMTShardingSize = originalShardingSize }()

tmp := t.TempDir()
err = os.MkdirAll(filepath.Join(tmp, "smallfiles"), 0777)
require.NoError(t, err)
// create 100 random files
Expand Down Expand Up @@ -285,15 +309,17 @@ func TestDataPrep(t *testing.T) {
sourceFlags string
downloadFlags string
compare string
skip string
}{
{
name: "s3-public",
maxSize: 3 << 20,
sourceType: "s3 aws",
sourcePath: "public-dataset-test",
sourceType: "s3 other",
sourcePath: bucketName,
sourceFlags: "--region us-west-2",
downloadFlags: "",
compare: s3tmp,
skip: "Need to fix 403 on create",
},
{
name: "local-60",
Expand All @@ -314,6 +340,9 @@ func TestDataPrep(t *testing.T) {
}

for _, tt := range tests {
if tt.skip != "" {
t.Skip(tt.skip)
}
maxSize := tt.maxSize
pieceSize := util.NextPowerOfTwo(uint64(maxSize))
t.Run(tt.name, func(t *testing.T) {
Expand All @@ -327,7 +356,8 @@ func TestDataPrep(t *testing.T) {
runner := Runner{mode: Normal}
defer runner.Save(t, tmp, outDir, downloadDir, downloadDir2, extractDir)
// Create source storage
_, _, err := runner.Run(ctx, fmt.Sprintf("singularity storage create %s %s --name source --path %s", tt.sourceType, tt.sourceFlags, testutil.EscapePath(tt.sourcePath)))
cmdStr := fmt.Sprintf("singularity storage create %s %s --name source --path %s", tt.sourceType, tt.sourceFlags, testutil.EscapePath(tt.sourcePath))
_, _, err := runner.Run(ctx, cmdStr)
require.NoError(t, err)

var outputStorage string
Expand Down
59 changes: 34 additions & 25 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/data-preservation-programs/singularity

go 1.20
go 1.21

require (
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
Expand All @@ -10,7 +10,7 @@ require (
github.com/cockroachdb/errors v1.10.1-0.20230823160506-3a3abaca5af3
github.com/data-preservation-programs/table v0.0.3
github.com/dustin/go-humanize v1.0.1
github.com/fatih/color v1.15.0
github.com/fatih/color v1.16.0
github.com/filecoin-project/go-address v1.1.0
github.com/filecoin-project/go-cbor-util v0.0.1
github.com/filecoin-project/go-fil-commcid v0.1.0
Expand All @@ -27,7 +27,7 @@ require (
github.com/go-openapi/strfmt v0.21.7
github.com/go-openapi/swag v0.22.4
github.com/go-openapi/validate v0.22.1
github.com/google/uuid v1.3.0
github.com/google/uuid v1.3.1
github.com/gotidy/ptr v1.4.0
github.com/hashicorp/golang-lru/v2 v2.0.6
github.com/ipfs/boxo v0.11.1-0.20230817065640-7ec68c5e5adf
Expand Down Expand Up @@ -64,6 +64,7 @@ require (
github.com/multiformats/go-multicodec v0.9.0
github.com/multiformats/go-multihash v0.2.3
github.com/multiformats/go-varint v0.0.7
github.com/orlangure/gnomock v0.30.0
github.com/parnurzeal/gorequest v0.2.16
github.com/rclone/rclone v1.62.2
github.com/rjNemo/underscore v0.5.0
Expand All @@ -74,11 +75,11 @@ require (
github.com/swaggo/swag v1.16.1
github.com/urfave/cli/v2 v2.25.1
github.com/ybbus/jsonrpc/v3 v3.1.4
go.mongodb.org/mongo-driver v1.11.4
go.mongodb.org/mongo-driver v1.12.1
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.25.0
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63
golang.org/x/text v0.12.0
golang.org/x/text v0.14.0
gorm.io/driver/mysql v1.5.0
gorm.io/driver/postgres v1.5.0
gorm.io/driver/sqlite v1.5.2
Expand All @@ -88,18 +89,19 @@ require (
require (
cloud.google.com/go/compute v1.18.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.1.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/Max-Sum/base32768 v0.0.0-20230304063302-18e6ce5945fd // indirect
github.com/Microsoft/go-winio v0.5.2 // indirect
github.com/abbot/go-http-auth v0.4.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-sdk-go v1.44.218 // indirect
github.com/aws/aws-sdk-go v1.44.332 // indirect
github.com/benbjohnson/clock v1.3.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bep/debounce v1.2.1 // indirect
Expand All @@ -118,7 +120,9 @@ require (
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
github.com/dchest/blake2b v1.0.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/dnaeon/go-vcr v1.2.0 // indirect
github.com/docker/distribution v2.8.2+incompatible // indirect
github.com/docker/docker v24.0.5+incompatible // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/drand/kyber v1.1.4 // indirect
github.com/drand/kyber-bls12381 v0.2.1 // indirect
Expand All @@ -139,6 +143,7 @@ require (
github.com/filecoin-project/specs-actors v0.9.13 // indirect
github.com/flynn/noise v1.0.0 // indirect
github.com/francoispqt/gojay v1.2.13 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gammazero/deque v0.2.0 // indirect
github.com/geoffgarside/ber v1.1.0 // indirect
github.com/getsentry/sentry-go v0.18.0 // indirect
Expand All @@ -152,7 +157,7 @@ require (
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/loads v0.21.2 // indirect
github.com/go-openapi/spec v0.20.9 // indirect
github.com/go-sql-driver/mysql v1.7.0 // indirect
github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gofrs/flock v0.8.1 // indirect
Expand All @@ -163,6 +168,7 @@ require (
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/gopacket v1.1.19 // indirect
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect
Expand Down Expand Up @@ -236,7 +242,7 @@ require (
github.com/mailru/easyjson v0.7.7 // indirect
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.17 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/miekg/dns v1.1.55 // indirect
Expand All @@ -256,6 +262,8 @@ require (
github.com/ncw/swift/v2 v2.0.1 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/onsi/ginkgo/v2 v2.11.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/opencontainers/runtime-spec v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/oracle/oci-go-sdk/v65 v65.32.0 // indirect
Expand All @@ -281,7 +289,7 @@ require (
github.com/raulk/go-watchdog v1.3.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/rfjakob/eme v1.1.2 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/shirou/gopsutil/v3 v3.23.3 // indirect
github.com/shoenig/go-m1cpu v0.1.4 // indirect
Expand All @@ -305,8 +313,8 @@ require (
github.com/x448/float16 v0.8.4 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/xdg-go/scram v1.1.2 // indirect
github.com/xdg-go/stringprep v1.0.4 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
github.com/yunify/qingstor-sdk-go/v3 v3.2.0 // indirect
Expand All @@ -319,15 +327,15 @@ require (
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/dig v1.17.0 // indirect
go.uber.org/fx v1.20.0 // indirect
golang.org/x/crypto v0.12.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/net v0.14.0 // indirect
golang.org/x/oauth2 v0.6.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/term v0.11.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/mod v0.16.0 // indirect
golang.org/x/net v0.22.0 // indirect
golang.org/x/oauth2 v0.8.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/term v0.18.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect
golang.org/x/tools v0.19.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.112.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
Expand All @@ -336,6 +344,7 @@ require (
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
lukechampine.com/blake3 v1.2.1 // indirect
modernc.org/libc v1.22.3 // indirect
modernc.org/mathutil v1.5.0 // indirect
Expand Down
Loading