52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package orchestration
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"git.nianxx.cn/wangxuming/NianAIGC/backend/internal/assets"
|
|
"git.nianxx.cn/wangxuming/NianAIGC/backend/internal/jobs"
|
|
)
|
|
|
|
func TestAssetArtifactsDeletesUniqueOutputsAndIgnoresAlreadyMissingAssets(t *testing.T) {
|
|
deletions := &recordingAssetDeleter{missing: map[string]bool{"asset-missing": true}}
|
|
adapter := NewAssetArtifacts(deletions)
|
|
|
|
deleted, err := adapter.DeleteOutputs(context.Background(), jobs.Job{
|
|
OwnerID: "account-1", OutputAssetIDs: []string{"asset-1", "asset-missing", "asset-1", "asset-2"},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !reflect.DeepEqual(deleted, []string{"asset-1", "asset-2"}) || !reflect.DeepEqual(deletions.ids, []string{"asset-1", "asset-missing", "asset-2"}) {
|
|
t.Fatalf("deleted=%#v calls=%#v", deleted, deletions.ids)
|
|
}
|
|
}
|
|
|
|
func TestAssetArtifactsFailsClosedOnStorageError(t *testing.T) {
|
|
deletions := &recordingAssetDeleter{failure: errors.New("storage unavailable")}
|
|
_, err := NewAssetArtifacts(deletions).DeleteOutputs(context.Background(), jobs.Job{OwnerID: "account-1", OutputAssetIDs: []string{"asset-1"}})
|
|
if err == nil || err.Error() != "delete generation output assets" {
|
|
t.Fatalf("err=%v", err)
|
|
}
|
|
}
|
|
|
|
type recordingAssetDeleter struct {
|
|
ids []string
|
|
missing map[string]bool
|
|
failure error
|
|
}
|
|
|
|
func (d *recordingAssetDeleter) Delete(_ context.Context, _ assets.Scope, id string) (assets.Asset, error) {
|
|
d.ids = append(d.ids, id)
|
|
if d.failure != nil {
|
|
return assets.Asset{}, d.failure
|
|
}
|
|
if d.missing[id] {
|
|
return assets.Asset{}, assets.ErrNotFound
|
|
}
|
|
return assets.Asset{ID: id}, nil
|
|
}
|