mirror of https://github.com/databricks/cli.git
134 lines
3.5 KiB
Go
134 lines
3.5 KiB
Go
package acc
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/databricks/cli/internal/testutil"
|
|
"github.com/databricks/databricks-sdk-go/apierr"
|
|
"github.com/databricks/databricks-sdk-go/service/catalog"
|
|
"github.com/databricks/databricks-sdk-go/service/files"
|
|
"github.com/databricks/databricks-sdk-go/service/workspace"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TemporaryWorkspaceDir(t *WorkspaceT, name ...string) string {
|
|
ctx := t.ctx
|
|
me, err := t.W.CurrentUser.Me(ctx)
|
|
require.NoError(t, err)
|
|
|
|
// Prefix the name with "integration-test-" to make it easier to identify.
|
|
name = append([]string{"integration-test-"}, name...)
|
|
basePath := fmt.Sprintf("/Users/%s/%s", me.UserName, testutil.RandomName(name...))
|
|
|
|
t.Logf("Creating workspace directory %s", basePath)
|
|
err = t.W.Workspace.MkdirsByPath(ctx, basePath)
|
|
require.NoError(t, err)
|
|
|
|
// Remove test directory on test completion.
|
|
t.Cleanup(func() {
|
|
t.Logf("Removing workspace directory %s", basePath)
|
|
err := t.W.Workspace.Delete(ctx, workspace.Delete{
|
|
Path: basePath,
|
|
Recursive: true,
|
|
})
|
|
if err == nil || apierr.IsMissing(err) {
|
|
return
|
|
}
|
|
t.Logf("Unable to remove temporary workspace directory %s: %#v", basePath, err)
|
|
})
|
|
|
|
return basePath
|
|
}
|
|
|
|
func TemporaryDbfsDir(t *WorkspaceT, name ...string) string {
|
|
ctx := t.ctx
|
|
|
|
// Prefix the name with "integration-test-" to make it easier to identify.
|
|
name = append([]string{"integration-test-"}, name...)
|
|
path := fmt.Sprintf("/tmp/%s", testutil.RandomName(name...))
|
|
|
|
t.Logf("Creating DBFS directory %s", path)
|
|
err := t.W.Dbfs.MkdirsByPath(ctx, path)
|
|
require.NoError(t, err)
|
|
|
|
t.Cleanup(func() {
|
|
t.Logf("Removing DBFS directory %s", path)
|
|
err := t.W.Dbfs.Delete(ctx, files.Delete{
|
|
Path: path,
|
|
Recursive: true,
|
|
})
|
|
if err == nil || apierr.IsMissing(err) {
|
|
return
|
|
}
|
|
t.Logf("Unable to remove temporary DBFS directory %s: %#v", path, err)
|
|
})
|
|
|
|
return path
|
|
}
|
|
|
|
func TemporaryRepo(t *WorkspaceT, url string) string {
|
|
ctx := t.ctx
|
|
me, err := t.W.CurrentUser.Me(ctx)
|
|
require.NoError(t, err)
|
|
|
|
// Prefix the path with "integration-test-" to make it easier to identify.
|
|
path := fmt.Sprintf("/Repos/%s/%s", me.UserName, testutil.RandomName("integration-test-"))
|
|
|
|
t.Logf("Creating repo: %s", path)
|
|
resp, err := t.W.Repos.Create(ctx, workspace.CreateRepoRequest{
|
|
Url: url,
|
|
Path: path,
|
|
Provider: "gitHub",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
t.Cleanup(func() {
|
|
t.Logf("Removing repo: %s", path)
|
|
err := t.W.Repos.Delete(ctx, workspace.DeleteRepoRequest{
|
|
RepoId: resp.Id,
|
|
})
|
|
if err == nil || apierr.IsMissing(err) {
|
|
return
|
|
}
|
|
t.Logf("Unable to remove repo %s: %#v", path, err)
|
|
})
|
|
|
|
return path
|
|
}
|
|
|
|
// Create a new Unity Catalog volume in a catalog called "main" in the workspace.
|
|
func TemporaryVolume(t *WorkspaceT) string {
|
|
ctx := t.ctx
|
|
w := t.W
|
|
|
|
// Create a schema
|
|
schema, err := w.Schemas.Create(ctx, catalog.CreateSchema{
|
|
CatalogName: "main",
|
|
Name: testutil.RandomName("test-schema-"),
|
|
})
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
err := w.Schemas.Delete(ctx, catalog.DeleteSchemaRequest{
|
|
FullName: schema.FullName,
|
|
})
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
// Create a volume
|
|
volume, err := w.Volumes.Create(ctx, catalog.CreateVolumeRequestContent{
|
|
CatalogName: "main",
|
|
SchemaName: schema.Name,
|
|
Name: "my-volume",
|
|
VolumeType: catalog.VolumeTypeManaged,
|
|
})
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
err := w.Volumes.Delete(ctx, catalog.DeleteVolumeRequest{
|
|
Name: volume.FullName,
|
|
})
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
return fmt.Sprintf("/Volumes/%s/%s/%s", "main", schema.Name, volume.Name)
|
|
}
|