Blame internal/mocks/rpmmd/fixtures.go

Packit 63bb0d
package rpmmd_mock
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"fmt"
Packit 63bb0d
	"sort"
Packit 63bb0d
	"time"
Packit 63bb0d
Packit Service 3a6627
	"github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue"
Packit 63bb0d
	"github.com/osbuild/osbuild-composer/internal/worker"
Packit 63bb0d
Packit 63bb0d
	"github.com/osbuild/osbuild-composer/internal/rpmmd"
Packit 63bb0d
	"github.com/osbuild/osbuild-composer/internal/store"
Packit 63bb0d
)
Packit 63bb0d
Packit Service 3a6627
type FixtureGenerator func(tmpdir string) Fixture
Packit 63bb0d
Packit 63bb0d
func generatePackageList() rpmmd.PackageList {
Packit 63bb0d
	baseTime, err := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
Packit 63bb0d
Packit 63bb0d
	if err != nil {
Packit 63bb0d
		panic(err)
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	var packageList rpmmd.PackageList
Packit 63bb0d
Packit 63bb0d
	for i := 0; i < 22; i++ {
Packit 63bb0d
		basePackage := rpmmd.Package{
Packit 63bb0d
			Name:        fmt.Sprintf("package%d", i),
Packit 63bb0d
			Summary:     fmt.Sprintf("pkg%d sum", i),
Packit 63bb0d
			Description: fmt.Sprintf("pkg%d desc", i),
Packit 63bb0d
			URL:         fmt.Sprintf("https://pkg%d.example.com", i),
Packit 63bb0d
			Epoch:       0,
Packit 63bb0d
			Version:     fmt.Sprintf("%d.0", i),
Packit 63bb0d
			Release:     fmt.Sprintf("%d.fc30", i),
Packit 63bb0d
			Arch:        "x86_64",
Packit 63bb0d
			BuildTime:   baseTime.AddDate(0, i, 0),
Packit 63bb0d
			License:     "MIT",
Packit 63bb0d
		}
Packit 63bb0d
Packit 63bb0d
		secondBuild := basePackage
Packit 63bb0d
Packit 63bb0d
		secondBuild.Version = fmt.Sprintf("%d.1", i)
Packit 63bb0d
		secondBuild.BuildTime = basePackage.BuildTime.AddDate(0, 0, 1)
Packit 63bb0d
Packit 63bb0d
		packageList = append(packageList, basePackage, secondBuild)
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	sort.Slice(packageList, func(i, j int) bool {
Packit 63bb0d
		return packageList[i].Name < packageList[j].Name
Packit 63bb0d
	})
Packit 63bb0d
Packit 63bb0d
	return packageList
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func createBaseWorkersFixture(tmpdir string) *worker.Server {
Packit Service 3a6627
	q, err := fsjobqueue.New(tmpdir)
Packit Service 3a6627
	if err != nil {
Packit Service 3a6627
		panic(err)
Packit Service 3a6627
	}
Packit Service 3a6627
	return worker.NewServer(nil, q, "")
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func createBaseDepsolveFixture() []rpmmd.PackageSpec {
Packit 63bb0d
	return []rpmmd.PackageSpec{
Packit 63bb0d
		{
Packit 63bb0d
			Name:    "dep-package3",
Packit 63bb0d
			Epoch:   7,
Packit 63bb0d
			Version: "3.0.3",
Packit 63bb0d
			Release: "1.fc30",
Packit 63bb0d
			Arch:    "x86_64",
Packit 63bb0d
		},
Packit 63bb0d
		{
Packit 63bb0d
			Name:    "dep-package1",
Packit 63bb0d
			Epoch:   0,
Packit 63bb0d
			Version: "1.33",
Packit 63bb0d
			Release: "2.fc30",
Packit 63bb0d
			Arch:    "x86_64",
Packit 63bb0d
		},
Packit 63bb0d
		{
Packit 63bb0d
			Name:    "dep-package2",
Packit 63bb0d
			Epoch:   0,
Packit 63bb0d
			Version: "2.9",
Packit 63bb0d
			Release: "1.fc30",
Packit 63bb0d
			Arch:    "x86_64",
Packit 63bb0d
		},
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func BaseFixture(tmpdir string) Fixture {
Packit 63bb0d
	return Fixture{
Packit 63bb0d
		fetchPackageList{
Packit 63bb0d
			generatePackageList(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		depsolve{
Packit 63bb0d
			createBaseDepsolveFixture(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		store.FixtureBase(),
Packit Service 3a6627
		createBaseWorkersFixture(tmpdir),
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func NoComposesFixture(tmpdir string) Fixture {
Packit 63bb0d
	return Fixture{
Packit 63bb0d
		fetchPackageList{
Packit 63bb0d
			generatePackageList(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		depsolve{
Packit 63bb0d
			createBaseDepsolveFixture(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		store.FixtureEmpty(),
Packit Service 3a6627
		createBaseWorkersFixture(tmpdir),
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func NonExistingPackage(tmpdir string) Fixture {
Packit 63bb0d
	return Fixture{
Packit 63bb0d
		fetchPackageList{
Packit 63bb0d
			generatePackageList(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		depsolve{
Packit 63bb0d
			nil,
Packit 63bb0d
			nil,
Packit 63bb0d
			&rpmmd.DNFError{
Packit 63bb0d
				Kind:   "MarkingErrors",
Packit 63bb0d
				Reason: "Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash",
Packit 63bb0d
			},
Packit 63bb0d
		},
Packit 63bb0d
		store.FixtureBase(),
Packit Service 3a6627
		createBaseWorkersFixture(tmpdir),
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func BadDepsolve(tmpdir string) Fixture {
Packit 63bb0d
	return Fixture{
Packit 63bb0d
		fetchPackageList{
Packit 63bb0d
			generatePackageList(),
Packit 63bb0d
			map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"},
Packit 63bb0d
			nil,
Packit 63bb0d
		},
Packit 63bb0d
		depsolve{
Packit 63bb0d
			nil,
Packit 63bb0d
			nil,
Packit 63bb0d
			&rpmmd.DNFError{
Packit 63bb0d
				Kind:   "DepsolveError",
Packit 63bb0d
				Reason: "There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n  - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch",
Packit 63bb0d
			},
Packit 63bb0d
		},
Packit 63bb0d
		store.FixtureBase(),
Packit Service 3a6627
		createBaseWorkersFixture(tmpdir),
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit Service 3a6627
func BadFetch(tmpdir string) Fixture {
Packit 63bb0d
	return Fixture{
Packit 63bb0d
		fetchPackageList{
Packit 63bb0d
			ret:       nil,
Packit 63bb0d
			checksums: nil,
Packit 63bb0d
			err: &rpmmd.DNFError{
Packit 63bb0d
				Kind:   "FetchError",
Packit 63bb0d
				Reason: "There was a problem when fetching packages.",
Packit 63bb0d
			},
Packit 63bb0d
		},
Packit 63bb0d
		depsolve{
Packit 63bb0d
			nil,
Packit 63bb0d
			nil,
Packit 63bb0d
			&rpmmd.DNFError{
Packit 63bb0d
				Kind:   "DepsolveError",
Packit 63bb0d
				Reason: "There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n  - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch",
Packit 63bb0d
			},
Packit 63bb0d
		},
Packit 63bb0d
		store.FixtureBase(),
Packit Service 3a6627
		createBaseWorkersFixture(tmpdir),
Packit 63bb0d
	}
Packit 63bb0d
}