mirror of https://github.com/databricks/cli.git
96 lines
2.8 KiB
Go
96 lines
2.8 KiB
Go
package deploy
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/databricks/cli/bundle/config"
|
|
"github.com/databricks/cli/bundle/config/resources"
|
|
"github.com/databricks/databricks-sdk-go/experimental/mocks"
|
|
"github.com/databricks/databricks-sdk-go/service/jobs"
|
|
"github.com/databricks/databricks-sdk-go/service/pipelines"
|
|
"github.com/stretchr/testify/mock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestIsAnyResourceRunningWithEmptyState(t *testing.T) {
|
|
mock := mocks.NewMockWorkspaceClient(t)
|
|
err := checkAnyResourceRunning(context.Background(), mock.WorkspaceClient, &config.Resources{})
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestIsAnyResourceRunningWithJob(t *testing.T) {
|
|
m := mocks.NewMockWorkspaceClient(t)
|
|
resources := &config.Resources{
|
|
Jobs: map[string]*resources.Job{
|
|
"job1": {ID: "123"},
|
|
},
|
|
}
|
|
|
|
jobsApi := m.GetMockJobsAPI()
|
|
jobsApi.EXPECT().ListRunsAll(mock.Anything, jobs.ListRunsRequest{
|
|
JobId: 123,
|
|
ActiveOnly: true,
|
|
}).Return([]jobs.BaseRun{
|
|
{RunId: 1234},
|
|
}, nil).Once()
|
|
|
|
err := checkAnyResourceRunning(context.Background(), m.WorkspaceClient, resources)
|
|
require.ErrorContains(t, err, "job 123 is running")
|
|
|
|
jobsApi.EXPECT().ListRunsAll(mock.Anything, jobs.ListRunsRequest{
|
|
JobId: 123,
|
|
ActiveOnly: true,
|
|
}).Return([]jobs.BaseRun{}, nil).Once()
|
|
|
|
err = checkAnyResourceRunning(context.Background(), m.WorkspaceClient, resources)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestIsAnyResourceRunningWithPipeline(t *testing.T) {
|
|
m := mocks.NewMockWorkspaceClient(t)
|
|
resources := &config.Resources{
|
|
Pipelines: map[string]*resources.Pipeline{
|
|
"pipeline1": {ID: "123"},
|
|
},
|
|
}
|
|
|
|
pipelineApi := m.GetMockPipelinesAPI()
|
|
pipelineApi.EXPECT().Get(mock.Anything, pipelines.GetPipelineRequest{
|
|
PipelineId: "123",
|
|
}).Return(&pipelines.GetPipelineResponse{
|
|
PipelineId: "123",
|
|
State: pipelines.PipelineStateRunning,
|
|
}, nil).Once()
|
|
|
|
err := checkAnyResourceRunning(context.Background(), m.WorkspaceClient, resources)
|
|
require.ErrorContains(t, err, "pipeline 123 is running")
|
|
|
|
pipelineApi.EXPECT().Get(mock.Anything, pipelines.GetPipelineRequest{
|
|
PipelineId: "123",
|
|
}).Return(&pipelines.GetPipelineResponse{
|
|
PipelineId: "123",
|
|
State: pipelines.PipelineStateIdle,
|
|
}, nil).Once()
|
|
err = checkAnyResourceRunning(context.Background(), m.WorkspaceClient, resources)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestIsAnyResourceRunningWithAPIFailure(t *testing.T) {
|
|
m := mocks.NewMockWorkspaceClient(t)
|
|
resources := &config.Resources{
|
|
Pipelines: map[string]*resources.Pipeline{
|
|
"pipeline1": {ID: "123"},
|
|
},
|
|
}
|
|
|
|
pipelineApi := m.GetMockPipelinesAPI()
|
|
pipelineApi.EXPECT().Get(mock.Anything, pipelines.GetPipelineRequest{
|
|
PipelineId: "123",
|
|
}).Return(nil, errors.New("API failure")).Once()
|
|
|
|
err := checkAnyResourceRunning(context.Background(), m.WorkspaceClient, resources)
|
|
require.NoError(t, err)
|
|
}
|