package compare import ( "bytes" "context" "io" "testing" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/acl" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/pool" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/user" "github.com/davecgh/go-spew/spew" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/stretchr/testify/require" ) func TestFrostFSPool(t *testing.T) { // 1. Initialize client payloadReader := bytes.NewBufferString("Hello World") ctx := context.Background() k, err := keys.NewPrivateKeyFromWIF("L32sMMkUcEfsWFdjoFNKAPtj7y6cfkcpHwG2pmTap68AmUt86ZTo") require.NoError(t, err) var prmInit pool.InitParameters prmInit.SetKey(&k.PrivateKey) prmInit.AddNode(pool.NewNodeParam(1, "localhost:8080", 1)) cli, err := pool.NewPool(prmInit) require.NoError(t, err) err = cli.Dial(ctx) require.NoError(t, err) // 2. Create bucket / container var pp netmap.PlacementPolicy err = pp.DecodeString("REP 1") require.NoError(t, err) var owner user.ID user.IDFromKey(&owner, k.PrivateKey.PublicKey) var cnr container.Container cnr.Init() cnr.SetOwner(owner) cnr.SetBasicACL(acl.PublicRWExtended) cnr.SetPlacementPolicy(pp) var prmContainerPut pool.PrmContainerPut prmContainerPut.SetContainer(cnr) cnrID, err := cli.PutContainer(ctx, prmContainerPut) require.NoError(t, err) // 3. Put object var putHeader object.Object putHeader.SetOwnerID(&owner) putHeader.SetContainerID(cnrID) var prmObjectPut pool.PrmObjectPut prmObjectPut.SetHeader(putHeader) prmObjectPut.SetPayload(payloadReader) objectID, err := cli.PutObject(ctx, prmObjectPut) require.NoError(t, err) // 4. Get object var addr oid.Address addr.SetContainer(cnrID) addr.SetObject(objectID) var prmObjectGet pool.PrmObjectGet prmObjectGet.SetAddress(addr) objectReader, err := cli.GetObject(ctx, prmObjectGet) require.NoError(t, err) spew.Dump(objectReader.Header) buf, err := io.ReadAll(objectReader.Payload) require.NoError(t, err) require.NoError(t, objectReader.Payload.Close()) spew.Dump(buf) }