forked from TrueCloudLab/frostfs-sdk-go
92 lines
2.2 KiB
Go
92 lines
2.2 KiB
Go
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)
|
|
}
|