blob: 0ac1ffa12842c099701b48604461331a9444d442 [file] [log] [blame]
package gpuconfig
import (
"context"
"testing"
"cos.googlesource.com/cos/tools.git/src/pkg/fakes"
"cos.googlesource.com/cos/tools.git/src/pkg/gpuconfig/pb"
"github.com/google/go-cmp/cmp"
"google.golang.org/protobuf/testing/protocmp"
)
const toolchainTarballPath = "gs://chromiumos-sdk/2021/06/x86_64-cros-linux-gnu-2021.06.26.094653.tar.xz"
var testGCSObjects = map[string][]byte{
"/cos-kernel-artifacts/builds/5.15.55-34.m101/toolchain_url.x86_64": []byte(toolchainTarballPath),
}
func TestGenerateKernelCIConfigs(t *testing.T) {
gcs := fakes.GCSForTest(t)
defer gcs.Close()
gcs.Objects = testGCSObjects
client := gcs.Client
for _, tc := range []struct {
kernelVersion string
driverVersions []string
expected []GPUPrecompilationConfig
}{
{
"5.15.55-34.m101",
[]string{"470.82.01"},
[]GPUPrecompilationConfig{
GPUPrecompilationConfig{
ProtoConfig: &pb.COSGPUBuildRequest{
KernelSrcTarballGcs: stringPtr("gs://cos-kernel-artifacts/builds/5.15.55-34.m101/cos-kernel-src-5.15.55-34.m101.tgz"),
KernelHeadersTarballGcs: stringPtr("gs://cos-kernel-artifacts/builds/5.15.55-34.m101/cos-kernel-headers-5.15.55-34.m101-x86_64.tgz"),
NvidiaRunfileAddress: stringPtr("https://us.download.nvidia.com/tesla/470.82.01/NVIDIA-Linux-x86_64-470.82.01.run"),
ToolchainTarballGcs: stringPtr("gs://chromiumos-sdk/2021/06/x86_64-cros-linux-gnu-2021.06.26.094653.tar.xz"),
ToolchainEnvGcs: stringPtr("gs://cos-kernel-artifacts/builds/5.15.55-34.m101/toolchain_env.x86_64"),
DriverOutputGcsDir: stringPtr("gs://nvidia-drivers-us-public/nvidia-cos-project/5.15.55-34.m101/"),
},
DriverVersion: "470.82.01",
Milestone: "101",
Version: "5.15.55-34.m101",
VersionType: "Kernel",
},
},
},
} {
ctx := context.Background()
got, err := GenerateKernelCIConfigs(ctx, client, tc.kernelVersion, tc.driverVersions)
if err != nil {
t.Fatalf("GenerateKernelCIConfig() failed: %s", err)
}
if diff := cmp.Diff(got, tc.expected, protocmp.Transform()); diff != "" {
t.Errorf("GenerateKernelCIConfig() returned unexpected difference (-want +got):\n%s", diff)
}
}
}
func TestKernelVersionToMilestone(t *testing.T) {
for _, tc := range []struct {
kernelVersion string
milestoneExpected string
}{
{"5.10.100-14.m97", "97"},
{"5.10.107-10.r97", "97"},
{"5.10.100-14", ""},
} {
if got := kernelVersionToMilestone(tc.kernelVersion); got != tc.milestoneExpected {
t.Errorf("kernelVersionToMilestone() = %+v, want %+v", got, tc.milestoneExpected)
}
}
}
func TestFetchToolchainTarballPath(t *testing.T) {
gcs := fakes.GCSForTest(t)
defer gcs.Close()
gcs.Objects = testGCSObjects
client := gcs.Client
kernelVersion := "5.15.55-34.m101"
got, err := fetchToolchainTarballPath(context.Background(), client, kernelVersion)
if err != nil {
t.Fatalf("fetchToolchainTarballPath() failed: %s", err)
}
if got != toolchainTarballPath {
t.Errorf("fetchToolchainTarballPath() = %+v, want %+v", got, toolchainTarballPath)
}
}