feat: add logic for reading manifest from bolt file (#183)
This commit is contained in:
106
clients/backup/bolt_internal_test.go
Normal file
106
clients/backup/bolt_internal_test.go
Normal file
@ -0,0 +1,106 @@
|
||||
package backup
|
||||
|
||||
import (
|
||||
"compress/gzip"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/influxdata/influx-cli/v2/api"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
const testFile = "testdata/test.bolt.gz"
|
||||
|
||||
func TestExtractManifest(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
t.Skip("skipping test on Windows: https://github.com/etcd-io/bbolt/issues/252")
|
||||
}
|
||||
|
||||
// Extract our example input into a format the bbolt client can use.
|
||||
boltIn, err := os.Open(testFile)
|
||||
require.NoError(t, err)
|
||||
defer boltIn.Close()
|
||||
gzipIn, err := gzip.NewReader(boltIn)
|
||||
require.NoError(t, err)
|
||||
defer gzipIn.Close()
|
||||
|
||||
tmp, err := os.MkdirTemp("", "")
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(tmp)
|
||||
|
||||
tmpBoltPath := filepath.Join(tmp, "test.bolt")
|
||||
tmpBolt, err := os.Create(tmpBoltPath)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = io.Copy(tmpBolt, gzipIn)
|
||||
require.NoError(t, tmpBolt.Close())
|
||||
require.NoError(t, err)
|
||||
|
||||
extracted, err := extractBucketManifest(tmpBoltPath)
|
||||
require.NoError(t, err)
|
||||
|
||||
expected := []api.BucketMetadataManifest{
|
||||
{
|
||||
OrganizationID: "80c29010030b3d83",
|
||||
OrganizationName: "test2",
|
||||
BucketID: "5379ef2d1655b0ab",
|
||||
BucketName: "test3",
|
||||
DefaultRetentionPolicy: "autogen",
|
||||
RetentionPolicies: []api.RetentionPolicyManifest{
|
||||
{
|
||||
Name: "autogen",
|
||||
ReplicaN: 1,
|
||||
Duration: 0,
|
||||
ShardGroupDuration: 604800000000000,
|
||||
ShardGroups: []api.ShardGroupManifest{},
|
||||
Subscriptions: []api.SubscriptionManifest{},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
OrganizationID: "375477729f9d7262",
|
||||
OrganizationName: "test",
|
||||
BucketID: "cce01ef3783e3678",
|
||||
BucketName: "test2",
|
||||
DefaultRetentionPolicy: "autogen",
|
||||
RetentionPolicies: []api.RetentionPolicyManifest{
|
||||
{
|
||||
Name: "autogen",
|
||||
ReplicaN: 1,
|
||||
Duration: 0,
|
||||
ShardGroupDuration: 3600000000000,
|
||||
ShardGroups: []api.ShardGroupManifest{},
|
||||
Subscriptions: []api.SubscriptionManifest{},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
OrganizationID: "375477729f9d7262",
|
||||
OrganizationName: "test",
|
||||
BucketID: "d66c5360b5aa91b4",
|
||||
BucketName: "test",
|
||||
DefaultRetentionPolicy: "autogen",
|
||||
RetentionPolicies: []api.RetentionPolicyManifest{
|
||||
{
|
||||
Name: "autogen",
|
||||
ReplicaN: 1,
|
||||
Duration: 259200000000000,
|
||||
ShardGroupDuration: 86400000000000,
|
||||
ShardGroups: []api.ShardGroupManifest{},
|
||||
Subscriptions: []api.SubscriptionManifest{},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
require.Equal(t, len(expected), len(extracted))
|
||||
require.Equal(t, expected, extracted)
|
||||
for _, e := range expected {
|
||||
require.Contains(t, extracted, e)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user