| package gpuconfig |
| |
| import ( |
| "context" |
| "log" |
| "strings" |
| "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" |
| ) |
| |
| var ( |
| testConfigFileContents = []byte("kernel_src_tarball_gcs: \"gs://cos-kernel-artifacts/builds/5.10.133-43.r97/cos-kernel-src-5.10.133-43.r97.tgz\"\nkernel_headers_tarball_gcs: \"gs://cos-kernel-artifacts/builds/5.10.133-43.r97/cos-kernel-headers-5.10.133-43.r97-x86_64.tgz\"\nnvidia_runfile_address: \"https://us.download.nvidia.com/tesla/510.47.03/NVIDIA-Linux-x86_64-510.47.03.run\"\ntoolchain_tarball_gcs: \"gs://chromiumos-sdk/2021/06/x86_64-cros-linux-gnu-2021.06.26.094653.tar.xz\"\ntoolchain_env_gcs: \"gs://cos-kernel-artifacts/builds/5.10.133-43.r97/toolchain_env.x86_64\"\ndriver_output_gcs_dir: \"gs://nvidia-drivers-us-public/nvidia-cos-project/5.10.133-43.r97/\"\n") |
| testMetadataContents = []byte("{\n \"driver_version\": \"510.47.03\",\n \"milestone\": \"97\",\n \"version\": \"5.10.133-43.r97\",\n \"version_type\": \"Kernel\"\n}") |
| testConfig = GPUPrecompilationConfig{ |
| ProtoConfig: &pb.COSGPUBuildRequest{ |
| KernelSrcTarballGcs: stringPtr("gs://cos-kernel-artifacts/builds/5.10.133-43.r97/cos-kernel-src-5.10.133-43.r97.tgz"), |
| KernelHeadersTarballGcs: stringPtr("gs://cos-kernel-artifacts/builds/5.10.133-43.r97/cos-kernel-headers-5.10.133-43.r97-x86_64.tgz"), |
| NvidiaRunfileAddress: stringPtr("https://us.download.nvidia.com/tesla/510.47.03/NVIDIA-Linux-x86_64-510.47.03.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.10.133-43.r97/toolchain_env.x86_64"), |
| DriverOutputGcsDir: stringPtr("gs://nvidia-drivers-us-public/nvidia-cos-project/5.10.133-43.r97/"), |
| }, |
| DriverVersion: "510.47.03", |
| Milestone: "97", |
| Version: "5.10.133-43.r97", |
| VersionType: "Kernel", |
| } |
| ) |
| |
| func TestUploadConfig(t *testing.T) { |
| ctx := context.Background() |
| gcs := fakes.GCSForTest(t) |
| defer gcs.Close() |
| err := UploadConfigs(ctx, gcs.Client, []GPUPrecompilationConfig{testConfig}, "cos-gpu-configs-test") |
| if err != nil { |
| log.Fatalf("UploadConfig() failed:%v\n", err) |
| } |
| |
| // verify contents of files uploaded |
| for filename, content := range gcs.Objects { |
| if strings.Contains(filename, "metadata") { |
| if !cmp.Equal(content, testMetadataContents) { |
| t.Errorf("bucket 'cos-gpu-configs-test', object has %s; want %s\n", content, testMetadataContents) |
| } |
| } else if strings.Contains(filename, "config.textproto") { |
| if !cmp.Equal(content, testConfigFileContents) { |
| t.Errorf("bucket 'cos-gpu-configs-test', object has %s; want %s\n", content, testConfigFileContents) |
| } |
| } else { |
| t.Errorf("bucket 'cos-gpu-configs-test' has unknown object %s with data %s\n", filename, content) |
| } |
| } |
| } |