We're missing out on some coverage of code that is tested due to the code paths being run on k8s pods. We should be able to include the coverage from these tests if we do the following on the CI:
Run Julia on the pods with the flag --code-coverage=user
Use minikube mount to mount the node directory to the CI host
And the secret sauce...
As --code-coverage=user generates code coverage files right besides the source code we need to be executing our pod code inside the PV. Doing this ensure the code coverage files are written to the PV without having to manually move files around. The cleanest way I can think to do this is to use minikube mount to mount the CI host directory for K8sClusterManagers.jl to the node(s) and then use PV hostPath to mount that directory to the package location inside of the pod. This approach should mean that code coverage files generated on the pod are directly written back to the CI host.
However, there are some potential issues to work through:
Using PV hostPath requires an access mode of ReadWriteOnce which eliminates any parallelism we may want to do on the CI (#53)
Using minikube mount with multiple nodes probably isn't supported. We can probably use one node on CI if we're careful to use partial CPU resources
The PIDs used on the pods are quite likely to identical across tests which means the coverage files may end up having conflicting names.
We're missing out on some coverage of code that is tested due to the code paths being run on k8s pods. We should be able to include the coverage from these tests if we do the following on the CI:
--code-coverage=user
PersistentVolume
s usinghostPath
to write the coverage files generated on the pod back to the node (https://minikube.sigs.k8s.io/docs/handbook/persistent_volumes/)minikube mount
to mount the node directory to the CI hostAs
--code-coverage=user
generates code coverage files right besides the source code we need to be executing our pod code inside the PV. Doing this ensure the code coverage files are written to the PV without having to manually move files around. The cleanest way I can think to do this is to useminikube mount
to mount the CI host directory for K8sClusterManagers.jl to the node(s) and then use PVhostPath
to mount that directory to the package location inside of the pod. This approach should mean that code coverage files generated on the pod are directly written back to the CI host.However, there are some potential issues to work through:
hostPath
requires an access mode ofReadWriteOnce
which eliminates any parallelism we may want to do on the CI (#53)minikube mount
with multiple nodes probably isn't supported. We can probably use one node on CI if we're careful to use partial CPU resources