Skip to content

Conversation

@henry3260
Copy link
Contributor

@henry3260 henry3260 commented Oct 29, 2025

Fixes #21805

This PR implements the following changes:

  • Updates the integration test TestDownloadOnly to handle preload scenarios.
  • Deletes cached images, preload state, and binaries for test isolation. (TODO)
  • In the case of "Preload exists, no fallback," uses remoteTarballURL to fetch the preload for the latest release, as it is assumed to always exist. (TODO)

After:

=== RUN   TestDownloadOnly/v1.28.0/preload-failed
    aaa_download_only_test.go:152: (dbg) Run:  out/minikube start -p download-only-698211 --download-only --alsologtostderr
    aaa_download_only_test.go:156: start with invalid preload-url expected to fail, but succeeded: "out/minikube start -p download-only-698211 --download-only --alsologtostderr"
I1029 23:16:30.494132  745649 aaa_download_only_test.go:159] preload-url: http://invalid-url/preload.tar.gz
=== RUN   TestDownloadOnly/v1.28.0/preload-false
    aaa_download_only_test.go:190: (dbg) Run:  out/minikube start -p download-only-698211 --alsologtostderr --preload=false
    aaa_download_only_test.go:190: (dbg) Done: out/minikube start -p download-only-698211 --alsologtostderr --preload=false: (25.049841993s)

start --preloadUR ...
start.txt

restart
restart.txt

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: henry3260
Once this PR has been reviewed and has the lgtm label, please assign comradeprogrammer for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot requested a review from medyagh October 29, 2025 16:55
@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Oct 29, 2025
@k8s-ci-robot k8s-ci-robot requested a review from nirs October 29, 2025 16:55
@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Oct 29, 2025
@k8s-ci-robot
Copy link
Contributor

Hi @henry3260. Thanks for your PR.

I'm waiting for a github.com member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Oct 29, 2025
@henry3260
Copy link
Contributor Author

I will update the before/after sections. I would like to confirm that my implementation is on the right track.

@minikube-bot
Copy link
Collaborator

Can one of the admins verify this patch?

@henry3260 henry3260 changed the title refactor TestDownloadOnly Integration Test: Refactor TestDownloadOnly Oct 29, 2025
Copy link
Member

@medyagh medyagh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the pr title says test, but this adds a new flag to minikube,

we wanna makes sure to handle the Preload-url when the cluster stopped and restarted, can you add in the PR description output ?
start --preloadUR ...
stop
start (no extra args)
it should not redownload the preload

@henry3260
Copy link
Contributor Author

henry3260 commented Oct 29, 2025

the pr title says test, but this adds a new flag to minikube,

we wanna makes sure to handle the Preload-url when the cluster stopped and restarted, can you add in the PR description output ? start --preloadUR ... stop start (no extra args) it should not redownload the preload

henry@DESKTOP-KILRQMD:~/oss/fix-aaa/minikube$ ./out/minikube stop -p test-preload
✋  Stopping node "test-preload"  ...
🛑  Powering off "test-preload" via SSH ...
🛑  1 node stopped.
henry@DESKTOP-KILRQMD:~/oss/fix-aaa/minikube$ ./out/minikube start -p test-preload --alsologtostderr
I1030 02:28:37.489279  810521 out.go:360] Setting OutFile to fd 1 ...
I1030 02:28:37.489632  810521 out.go:413] isatty.IsTerminal(1) = true
I1030 02:28:37.489673  810521 out.go:374] Setting ErrFile to fd 2...
I1030 02:28:37.489710  810521 out.go:413] isatty.IsTerminal(2) = true
I1030 02:28:37.489967  810521 root.go:338] Updating PATH: /home/henry/.minikube/bin
I1030 02:28:37.490476  810521 out.go:368] Setting JSON to false
I1030 02:28:37.491505  810521 start.go:133] hostinfo: {"hostname":"DESKTOP-KILRQMD","uptime":104076,"bootTime":1761658441,"procs":73,"os":"linux","platform":"ubuntu","platformFamily":"debian","platformVersion":"24.04","kernelVersion":"6.6.87.2-microsoft-standard-WSL2","kernelArch":"x86_64","virtualizationSystem":"kvm","virtualizationRole":"guest","hostId":"ba5e05dc-c766-4e14-b71c-c4f78fb638ed"}
I1030 02:28:37.491602  810521 start.go:143] virtualization: kvm guest
I1030 02:28:37.498957  810521 out.go:179] 😄  [test-preload] minikube v1.37.0 on Ubuntu 24.04 (kvm/amd64)
😄  [test-preload] minikube v1.37.0 on Ubuntu 24.04 (kvm/amd64)
I1030 02:28:37.500845  810521 notify.go:221] Checking for updates...
I1030 02:28:37.501058  810521 config.go:182] Loaded profile config "test-preload": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.34.1
I1030 02:28:37.501163  810521 driver.go:422] Setting default libvirt URI to qemu:///system
I1030 02:28:37.524542  810521 docker.go:124] docker version: linux-27.5.1:
I1030 02:28:37.524670  810521 cli_runner.go:164] Run: docker system info --format "{{json .}}"
I1030 02:28:37.546200  810521 info.go:266] docker info: {ID:14b3dc89-1871-4e3a-bc9f-f6bb95c055ba Containers:1 ContainersRunning:0 ContainersPaused:0 ContainersStopped:1 Images:2 Driver:overlay2 DriverStatus:[[Backing Filesystem extfs] [Supports d_type true] [Using metacopy false] [Native Overlay Diff true] [userxattr false]] SystemStatus:<nil> Plugins:{Volume:[local] Network:[bridge host ipvlan macvlan null overlay] Authorization:<nil> Log:[awslogs fluentd gcplogs gelf journald json-file local splunk syslog]} MemoryLimit:true SwapLimit:true KernelMemory:false KernelMemoryTCP:false CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true PidsLimit:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6Tables:true Debug:false NFd:25 OomKillDisable:false NGoroutines:44 SystemTime:2025-10-30 02:28:37.537973709 +0800 CST LoggingDriver:json-file CgroupDriver:systemd NEventsListener:0 KernelVersion:6.6.87.2-microsoft-standard-WSL2 OperatingSystem:Ubuntu 24.04.1 LTS OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:{AllowNondistributableArtifactsCIDRs:[] AllowNondistributableArtifactsHostnames:[] InsecureRegistryCIDRs:[127.0.0.0/8] IndexConfigs:{DockerIo:{Name:docker.io Mirrors:[] Secure:true Official:true}} Mirrors:[]} NCPU:20 MemTotal:33517891584 GenericResources:<nil> DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:DESKTOP-KILRQMD Labels:[] ExperimentalBuild:false ServerVersion:27.5.1 ClusterStore: ClusterAdvertise: Runtimes:{Runc:{Path:runc}} DefaultRuntime:runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:<nil>} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID: Expected:} RuncCommit:{ID: Expected:} InitCommit:{ID: Expected:} SecurityOptions:[name=seccomp,profile=builtin name=cgroupns] ProductLicense: Warnings:<nil> ServerErrors:[] ClientInfo:{Debug:false Plugins:[map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-ai: no such file or directory Name:ai Path:/usr/local/lib/docker/cli-plugins/docker-ai] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-buildx: no such file or directory Name:buildx Path:/usr/local/lib/docker/cli-plugins/docker-buildx] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-compose: no such file or directory Name:compose Path:/usr/local/lib/docker/cli-plugins/docker-compose] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-debug: no such file or directory Name:debug Path:/usr/local/lib/docker/cli-plugins/docker-debug] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-desktop: no such file or directory Name:desktop Path:/usr/local/lib/docker/cli-plugins/docker-desktop] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-dev: no such file or directory Name:dev Path:/usr/local/lib/docker/cli-plugins/docker-dev] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-extension: no such file or directory Name:extension Path:/usr/local/lib/docker/cli-plugins/docker-extension] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-feedback: no such file or directory Name:feedback Path:/usr/local/lib/docker/cli-plugins/docker-feedback] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-init: no such file or directory Name:init Path:/usr/local/lib/docker/cli-plugins/docker-init] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-sbom: no such file or directory Name:sbom Path:/usr/local/lib/docker/cli-plugins/docker-sbom] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-scout: no such file or directory Name:scout Path:/usr/local/lib/docker/cli-plugins/docker-scout]] Warnings:<nil>}}
I1030 02:28:37.546426  810521 docker.go:319] overlay module found
I1030 02:28:37.548067  810521 out.go:179] ✨  Using the docker driver based on existing profile
✨  Using the docker driver based on existing profile
I1030 02:28:37.549180  810521 start.go:309] selected driver: docker
I1030 02:28:37.549208  810521 start.go:930] validating driver "docker" against &{Name:test-preload KeepContext:false EmbedCerts:false MinikubeISO: KicBaseImage:gcr.io/k8s-minikube/kicbase-builds:v0.0.48-1760939008-21773@sha256:d8d8a3f29f027433bea12764bddd1aa26c7ad9bb912e016c1bc51278db1343d8 Memory:7900 CPUs:2 DiskSize:20000 Driver:docker HyperkitVpnKitSock: HyperkitVSockPorts:[] DockerEnv:[] ContainerVolumeMounts:[] InsecureRegistry:[] RegistryMirror:[] HostOnlyCIDR:192.168.59.1/24 HypervVirtualSwitch: HypervUseExternalSwitch:false HypervExternalAdapter: KVMNetwork:default KVMQemuURI:qemu:///system KVMGPU:false KVMHidden:false KVMNUMACount:1 APIServerPort:8443 DockerOpt:[] DisableDriverMounts:false NFSShare:[] NFSSharesRoot:/nfsshares UUID: NoVTXCheck:false DNSProxy:false HostDNSResolver:true HostOnlyNicType:virtio NatNicType:virtio SSHIPAddress: SSHUser:root SSHKey: SSHPort:22 KubernetesConfig:{KubernetesVersion:v1.34.1 ClusterName:test-preload Namespace:default APIServerHAVIP: APIServerName:minikubeCA APIServerNames:[] APIServerIPs:[] DNSDomain:cluster.local ContainerRuntime:docker CRISocket: NetworkPlugin:cni FeatureGates: ServiceCIDR:10.96.0.0/12 ImageRepository: LoadBalancerStartIP: LoadBalancerEndIP: CustomIngressCert: RegistryAliases: ExtraOptions:[] ShouldLoadCachedImages:true EnableDefaultCNI:false CNI:} Nodes:[{Name: IP:192.168.67.2 Port:8443 KubernetesVersion:v1.34.1 ContainerRuntime:docker ControlPlane:true Worker:true}] Addons:map[default-storageclass:true storage-provisioner:true] CustomAddonImages:map[] CustomAddonRegistries:map[] VerifyComponents:map[apiserver:true system_pods:true] StartHostTimeout:6m0s ScheduledStop:<nil> ExposedPorts:[] ListenAddress: Network: Subnet: MultiNodeRequested:false ExtraDisks:0 CertExpiration:26280h0m0s MountString: Mount9PVersion:9p2000.L MountGID:docker MountIP: MountMSize:262144 MountOptions:[] MountPort:0 MountType:9p MountUID:docker BinaryMirror: DisableOptimizations:false DisableMetrics:false DisableCoreDNSLog:false CustomQemuFirmwarePath: SocketVMnetClientPath: SocketVMnetPath: StaticIP: SSHAuthSock: SSHAgentPID:0 GPUs: AutoPauseInterval:1m0s}
I1030 02:28:37.549277  810521 start.go:941] status for docker: {Installed:true Healthy:true Running:false NeedsImprovement:false Error:<nil> Reason: Fix: Doc: Version:}
I1030 02:28:37.549350  810521 cli_runner.go:164] Run: docker system info --format "{{json .}}"
I1030 02:28:37.569297  810521 info.go:266] docker info: {ID:14b3dc89-1871-4e3a-bc9f-f6bb95c055ba Containers:1 ContainersRunning:0 ContainersPaused:0 ContainersStopped:1 Images:2 Driver:overlay2 DriverStatus:[[Backing Filesystem extfs] [Supports d_type true] [Using metacopy false] [Native Overlay Diff true] [userxattr false]] SystemStatus:<nil> Plugins:{Volume:[local] Network:[bridge host ipvlan macvlan null overlay] Authorization:<nil> Log:[awslogs fluentd gcplogs gelf journald json-file local splunk syslog]} MemoryLimit:true SwapLimit:true KernelMemory:false KernelMemoryTCP:false CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true PidsLimit:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6Tables:true Debug:false NFd:25 OomKillDisable:false NGoroutines:44 SystemTime:2025-10-30 02:28:37.561159765 +0800 CST LoggingDriver:json-file CgroupDriver:systemd NEventsListener:0 KernelVersion:6.6.87.2-microsoft-standard-WSL2 OperatingSystem:Ubuntu 24.04.1 LTS OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:{AllowNondistributableArtifactsCIDRs:[] AllowNondistributableArtifactsHostnames:[] InsecureRegistryCIDRs:[127.0.0.0/8] IndexConfigs:{DockerIo:{Name:docker.io Mirrors:[] Secure:true Official:true}} Mirrors:[]} NCPU:20 MemTotal:33517891584 GenericResources:<nil> DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:DESKTOP-KILRQMD Labels:[] ExperimentalBuild:false ServerVersion:27.5.1 ClusterStore: ClusterAdvertise: Runtimes:{Runc:{Path:runc}} DefaultRuntime:runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:<nil>} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID: Expected:} RuncCommit:{ID: Expected:} InitCommit:{ID: Expected:} SecurityOptions:[name=seccomp,profile=builtin name=cgroupns] ProductLicense: Warnings:<nil> ServerErrors:[] ClientInfo:{Debug:false Plugins:[map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-ai: no such file or directory Name:ai Path:/usr/local/lib/docker/cli-plugins/docker-ai] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-buildx: no such file or directory Name:buildx Path:/usr/local/lib/docker/cli-plugins/docker-buildx] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-compose: no such file or directory Name:compose Path:/usr/local/lib/docker/cli-plugins/docker-compose] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-debug: no such file or directory Name:debug Path:/usr/local/lib/docker/cli-plugins/docker-debug] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-desktop: no such file or directory Name:desktop Path:/usr/local/lib/docker/cli-plugins/docker-desktop] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-dev: no such file or directory Name:dev Path:/usr/local/lib/docker/cli-plugins/docker-dev] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-extension: no such file or directory Name:extension Path:/usr/local/lib/docker/cli-plugins/docker-extension] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-feedback: no such file or directory Name:feedback Path:/usr/local/lib/docker/cli-plugins/docker-feedback] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-init: no such file or directory Name:init Path:/usr/local/lib/docker/cli-plugins/docker-init] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-sbom: no such file or directory Name:sbom Path:/usr/local/lib/docker/cli-plugins/docker-sbom] map[Err:failed to fetch metadata: fork/exec /usr/local/lib/docker/cli-plugins/docker-scout: no such file or directory Name:scout Path:/usr/local/lib/docker/cli-plugins/docker-scout]] Warnings:<nil>}}
I1030 02:28:37.570117  810521 cni.go:84] Creating CNI manager for ""
I1030 02:28:37.570182  810521 cni.go:158] "docker" driver + "docker" container runtime found on kubernetes v1.24+, recommending bridge
I1030 02:28:37.570228  810521 start.go:353] cluster config:
{Name:test-preload KeepContext:false EmbedCerts:false MinikubeISO: KicBaseImage:gcr.io/k8s-minikube/kicbase-builds:v0.0.48-1760939008-21773@sha256:d8d8a3f29f027433bea12764bddd1aa26c7ad9bb912e016c1bc51278db1343d8 Memory:7900 CPUs:2 DiskSize:20000 Driver:docker HyperkitVpnKitSock: HyperkitVSockPorts:[] DockerEnv:[] ContainerVolumeMounts:[] InsecureRegistry:[] RegistryMirror:[] HostOnlyCIDR:192.168.59.1/24 HypervVirtualSwitch: HypervUseExternalSwitch:false HypervExternalAdapter: KVMNetwork:default KVMQemuURI:qemu:///system KVMGPU:false KVMHidden:false KVMNUMACount:1 APIServerPort:8443 DockerOpt:[] DisableDriverMounts:false NFSShare:[] NFSSharesRoot:/nfsshares UUID: NoVTXCheck:false DNSProxy:false HostDNSResolver:true HostOnlyNicType:virtio NatNicType:virtio SSHIPAddress: SSHUser:root SSHKey: SSHPort:22 KubernetesConfig:{KubernetesVersion:v1.34.1 ClusterName:test-preload Namespace:default APIServerHAVIP: APIServerName:minikubeCA APIServerNames:[] APIServerIPs:[] DNSDomain:cluster.local ContainerRuntime:docker CRISocket: NetworkPlugin:cni FeatureGates: ServiceCIDR:10.96.0.0/12 ImageRepository: LoadBalancerStartIP: LoadBalancerEndIP: CustomIngressCert: RegistryAliases: ExtraOptions:[] ShouldLoadCachedImages:true EnableDefaultCNI:false CNI:} Nodes:[{Name: IP:192.168.67.2 Port:8443 KubernetesVersion:v1.34.1 ContainerRuntime:docker ControlPlane:true Worker:true}] Addons:map[default-storageclass:true storage-provisioner:true] CustomAddonImages:map[] CustomAddonRegistries:map[] VerifyComponents:map[apiserver:true system_pods:true] StartHostTimeout:6m0s ScheduledStop:<nil> ExposedPorts:[] ListenAddress: Network: Subnet: MultiNodeRequested:false ExtraDisks:0 CertExpiration:26280h0m0s MountString: Mount9PVersion:9p2000.L MountGID:docker MountIP: MountMSize:262144 MountOptions:[] MountPort:0 MountType:9p MountUID:docker BinaryMirror: DisableOptimizations:false DisableMetrics:false DisableCoreDNSLog:false CustomQemuFirmwarePath: SocketVMnetClientPath: SocketVMnetPath: StaticIP: SSHAuthSock: SSHAgentPID:0 GPUs: AutoPauseInterval:1m0s}
I1030 02:28:37.573204  810521 out.go:179] 👍  Starting "test-preload" primary control-plane node in "test-preload" cluster
👍  Starting "test-preload" primary control-plane node in "test-preload" cluster
I1030 02:28:37.574375  810521 cache.go:124] Beginning downloading kic base image for docker with docker
I1030 02:28:37.576158  810521 out.go:179] 🚜  Pulling base image v0.0.48-1760939008-21773 ...
🚜  Pulling base image v0.0.48-1760939008-21773 ...
I1030 02:28:37.577618  810521 preload.go:188] Checking if preload exists for k8s version v1.34.1 and runtime docker
I1030 02:28:37.577670  810521 preload.go:203] Found local preload: /home/henry/.minikube/cache/preloaded-tarball/preloaded-images-k8s-v18-v1.34.1-docker-overlay2-amd64.tar.lz4
I1030 02:28:37.577685  810521 cache.go:59] Caching tarball of preloaded images
I1030 02:28:37.577705  810521 image.go:81] Checking for gcr.io/k8s-minikube/kicbase-builds:v0.0.48-1760939008-21773@sha256:d8d8a3f29f027433bea12764bddd1aa26c7ad9bb912e016c1bc51278db1343d8 in local docker daemon
I1030 02:28:37.577753  810521 preload.go:238] Found /home/henry/.minikube/cache/preloaded-tarball/preloaded-images-k8s-v18-v1.34.1-docker-overlay2-amd64.tar.lz4 in cache, skipping download
I1030 02:28:37.577793  810521 cache.go:62] Finished verifying existence of preloaded tar for v1.34.1 on docker

The cluster was stopped and then restarted without extra args. Minikube correctly reused the existing preload tarball from cache and did not redownload it:

I1030 02:28:37.577670  preload.go:203] Found local preload: /home/henry/.minikube/cache/preloaded-tarball/preloaded-images-k8s-v18-v1.34.1-docker-overlay2-amd64.tar.lz4
I1030 02:28:37.577753  preload.go:238] Found ... in cache, skipping download

This confirms that --preload-url is handled correctly when the cluster is restarted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integration Test: TestDownloadOnly is flaky and should be refactored

4 participants