mirror of
https://github.com/bitnami/containers.git
synced 2026-02-12 06:57:21 +08:00
[bitnami/ray,kuberay-apiserver,kuberay-operator] test: 👷 Add VIB integration (#53026)
* [bitnami/ray,kuberay-apiserver,kuberay-operator] test: 👷 Add VIB integration Signed-off-by: Javier Salmeron Garcia <jsalmeron@vmware.com> * fix: 🐛 Change incorrect paths Signed-off-by: Javier Salmeron Garcia <jsalmeron@vmware.com> * fix: 🐛 Remove version check Signed-off-by: Javier Salmeron Garcia <jsalmeron@vmware.com> * chore: 💡 Add procedence of the script Signed-off-by: Javier Salmeron Garcia <jsalmeron@vmware.com> --------- Signed-off-by: Javier Salmeron Garcia <jsalmeron@vmware.com>
This commit is contained in:
committed by
GitHub
parent
f5bf5e2f49
commit
060c49e172
13
.vib/kuberay-apiserver/goss/goss.yaml
Normal file
13
.vib/kuberay-apiserver/goss/goss.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
gossfile:
|
||||
# Goss tests exclusive to the current container
|
||||
../../kuberay-apiserver/goss/kuberay-apiserver.yaml: {}
|
||||
# Load scripts from .vib/common/goss/templates
|
||||
../../common/goss/templates/check-binaries.yaml: {}
|
||||
../../common/goss/templates/check-broken-symlinks.yaml: {}
|
||||
../../common/goss/templates/check-ca-certs.yaml: {}
|
||||
../../common/goss/templates/check-linked-libraries.yaml: {}
|
||||
../../common/goss/templates/check-sed-in-place.yaml: {}
|
||||
../../common/goss/templates/check-spdx.yaml: {}
|
||||
15
.vib/kuberay-apiserver/goss/kuberay-apiserver.yaml
Normal file
15
.vib/kuberay-apiserver/goss/kuberay-apiserver.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
user:
|
||||
kuberay-apiserver:
|
||||
exists: true
|
||||
uid: 1001
|
||||
gid: 0
|
||||
|
||||
command:
|
||||
check-kuberay-apiserver:
|
||||
exec: kuberay-apiserver --help
|
||||
exit-status: 0
|
||||
stderr:
|
||||
- "Paths to a kubeconfig"
|
||||
6
.vib/kuberay-apiserver/goss/vars.yaml
Normal file
6
.vib/kuberay-apiserver/goss/vars.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
binaries:
|
||||
- kuberay-apiserver
|
||||
root_dir: /opt/bitnami
|
||||
directories:
|
||||
- paths:
|
||||
- /opt/bitnami/kuberay-apiserver
|
||||
66
.vib/kuberay-apiserver/vib-verify.json
Normal file
66
.vib/kuberay-apiserver/vib-verify.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"context": {
|
||||
"resources": {
|
||||
"url": "{SHA_ARCHIVE}",
|
||||
"path": "{VIB_ENV_PATH}"
|
||||
},
|
||||
"runtime_parameters": "Y29tbWFuZDogWyJ0YWlsIiwgIi1mIiwgIi9kZXYvbnVsbCJd"
|
||||
},
|
||||
"phases": {
|
||||
"package": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "container-image-package",
|
||||
"params": {
|
||||
"application": {
|
||||
"details": {
|
||||
"name": "{VIB_ENV_CONTAINER}",
|
||||
"tag": "{VIB_ENV_TAG}"
|
||||
}
|
||||
},
|
||||
"architectures": ["linux/amd64", "linux/arm64"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "container-image-lint",
|
||||
"params": {
|
||||
"threshold": "error"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"verify": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "trivy",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"vuln_type": ["OS"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "grype",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"package_type": ["OS"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "goss",
|
||||
"params": {
|
||||
"resources": {
|
||||
"path": "/.vib"
|
||||
},
|
||||
"tests_file": "kuberay-apiserver/goss/goss.yaml",
|
||||
"vars_file": "kuberay-apiserver/goss/vars.yaml",
|
||||
"remote": {
|
||||
"pod": {
|
||||
"workload": "deploy-kuberay-apiserver"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
13
.vib/kuberay-operator/goss/goss.yaml
Normal file
13
.vib/kuberay-operator/goss/goss.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
gossfile:
|
||||
# Goss tests exclusive to the current container
|
||||
../../kuberay-operator/goss/kuberay-operator.yaml: {}
|
||||
# Load scripts from .vib/common/goss/templates
|
||||
../../common/goss/templates/check-binaries.yaml: {}
|
||||
../../common/goss/templates/check-broken-symlinks.yaml: {}
|
||||
../../common/goss/templates/check-ca-certs.yaml: {}
|
||||
../../common/goss/templates/check-linked-libraries.yaml: {}
|
||||
../../common/goss/templates/check-sed-in-place.yaml: {}
|
||||
../../common/goss/templates/check-spdx.yaml: {}
|
||||
15
.vib/kuberay-operator/goss/kuberay-operator.yaml
Normal file
15
.vib/kuberay-operator/goss/kuberay-operator.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
user:
|
||||
kuberay:
|
||||
exists: true
|
||||
uid: 1001
|
||||
gid: 0
|
||||
|
||||
command:
|
||||
check-kuberay-operator:
|
||||
exec: manager --help
|
||||
exit-status: 0
|
||||
stderr:
|
||||
- "Forced cluster upgrade"
|
||||
6
.vib/kuberay-operator/goss/vars.yaml
Normal file
6
.vib/kuberay-operator/goss/vars.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
binaries:
|
||||
- manager
|
||||
root_dir: /opt/bitnami
|
||||
directories:
|
||||
- paths:
|
||||
- /opt/bitnami/kuberay
|
||||
66
.vib/kuberay-operator/vib-verify.json
Normal file
66
.vib/kuberay-operator/vib-verify.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"context": {
|
||||
"resources": {
|
||||
"url": "{SHA_ARCHIVE}",
|
||||
"path": "{VIB_ENV_PATH}"
|
||||
},
|
||||
"runtime_parameters": "Y29tbWFuZDogWyJ0YWlsIiwgIi1mIiwgIi9kZXYvbnVsbCJd"
|
||||
},
|
||||
"phases": {
|
||||
"package": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "container-image-package",
|
||||
"params": {
|
||||
"application": {
|
||||
"details": {
|
||||
"name": "{VIB_ENV_CONTAINER}",
|
||||
"tag": "{VIB_ENV_TAG}"
|
||||
}
|
||||
},
|
||||
"architectures": ["linux/amd64", "linux/arm64"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "container-image-lint",
|
||||
"params": {
|
||||
"threshold": "error"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"verify": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "trivy",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"vuln_type": ["OS"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "grype",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"package_type": ["OS"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "goss",
|
||||
"params": {
|
||||
"resources": {
|
||||
"path": "/.vib"
|
||||
},
|
||||
"tests_file": "kuberay-operator/goss/goss.yaml",
|
||||
"vars_file": "kuberay-operator/goss/vars.yaml",
|
||||
"remote": {
|
||||
"pod": {
|
||||
"workload": "deploy-kuberay-operator"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
14
.vib/ray/goss/goss.yaml
Normal file
14
.vib/ray/goss/goss.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
gossfile:
|
||||
# Goss tests exclusive to the current container
|
||||
../../ray/goss/ray.yaml: {}
|
||||
# Load scripts from .vib/common/goss/templates
|
||||
../../common/goss/templates/check-app-version.yaml: {}
|
||||
../../common/goss/templates/check-binaries.yaml: {}
|
||||
../../common/goss/templates/check-broken-symlinks.yaml: {}
|
||||
../../common/goss/templates/check-ca-certs.yaml: {}
|
||||
../../common/goss/templates/check-directories.yaml: {}
|
||||
../../common/goss/templates/check-linked-libraries.yaml: {}
|
||||
../../common/goss/templates/check-spdx.yaml: {}
|
||||
15
.vib/ray/goss/ray.yaml
Normal file
15
.vib/ray/goss/ray.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
# Copyright VMware, Inc.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
|
||||
user:
|
||||
ray:
|
||||
exists: true
|
||||
uid: 1001
|
||||
gid: 0
|
||||
command:
|
||||
basic-example:
|
||||
exec: python ./ray/goss/testfiles/basic_example.py
|
||||
timeout: 120000
|
||||
stdout:
|
||||
- /Estimated value.*3.14/
|
||||
exit-status: 0
|
||||
69
.vib/ray/goss/testfiles/basic_example.py
Normal file
69
.vib/ray/goss/testfiles/basic_example.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# Taken from https://docs.ray.io/en/latest/ray-core/examples/gentle_walkthrough.html
|
||||
|
||||
import ray
|
||||
import math
|
||||
import time
|
||||
import random
|
||||
|
||||
ray.init()
|
||||
|
||||
@ray.remote
|
||||
class ProgressActor:
|
||||
def __init__(self, total_num_samples: int):
|
||||
self.total_num_samples = total_num_samples
|
||||
self.num_samples_completed_per_task = {}
|
||||
|
||||
def report_progress(self, task_id: int, num_samples_completed: int) -> None:
|
||||
self.num_samples_completed_per_task[task_id] = num_samples_completed
|
||||
|
||||
def get_progress(self) -> float:
|
||||
return (
|
||||
sum(self.num_samples_completed_per_task.values()) / self.total_num_samples
|
||||
)
|
||||
|
||||
@ray.remote
|
||||
def sampling_task(num_samples: int, task_id: int,
|
||||
progress_actor: ray.actor.ActorHandle) -> int:
|
||||
num_inside = 0
|
||||
for i in range(num_samples):
|
||||
x, y = random.uniform(-1, 1), random.uniform(-1, 1)
|
||||
if math.hypot(x, y) <= 1:
|
||||
num_inside += 1
|
||||
|
||||
# Report progress every 1 million samples.
|
||||
if (i + 1) % 1_000_000 == 0:
|
||||
# This is async.
|
||||
progress_actor.report_progress.remote(task_id, i + 1)
|
||||
|
||||
# Report the final progress.
|
||||
progress_actor.report_progress.remote(task_id, num_samples)
|
||||
return num_inside
|
||||
|
||||
# Change this to match your cluster scale.
|
||||
NUM_SAMPLING_TASKS = 10
|
||||
NUM_SAMPLES_PER_TASK = 10_000_000
|
||||
TOTAL_NUM_SAMPLES = NUM_SAMPLING_TASKS * NUM_SAMPLES_PER_TASK
|
||||
|
||||
# Create the progress actor.
|
||||
progress_actor = ProgressActor.remote(TOTAL_NUM_SAMPLES)
|
||||
|
||||
# Create and execute all sampling tasks in parallel.
|
||||
results = [
|
||||
sampling_task.remote(NUM_SAMPLES_PER_TASK, i, progress_actor)
|
||||
for i in range(NUM_SAMPLING_TASKS)
|
||||
]
|
||||
|
||||
# Query progress periodically.
|
||||
while True:
|
||||
progress = ray.get(progress_actor.get_progress.remote())
|
||||
print(f"Progress: {int(progress * 100)}%")
|
||||
|
||||
if progress == 1:
|
||||
break
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
# Get all the sampling tasks results.
|
||||
total_num_inside = sum(ray.get(results))
|
||||
pi = (total_num_inside * 4) / TOTAL_NUM_SAMPLES
|
||||
print(f"Estimated value of π is: {pi}")
|
||||
10
.vib/ray/goss/vars.yaml
Normal file
10
.vib/ray/goss/vars.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
binaries:
|
||||
- python
|
||||
root_dir: /opt/bitnami
|
||||
directories:
|
||||
- paths:
|
||||
# Paths to the client and server directories
|
||||
- /opt/bitnami/python
|
||||
version:
|
||||
bin_name: python
|
||||
flag: "-c 'import ray; print(ray.__version__)'"
|
||||
66
.vib/ray/vib-verify.json
Normal file
66
.vib/ray/vib-verify.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"context": {
|
||||
"resources": {
|
||||
"url": "{SHA_ARCHIVE}",
|
||||
"path": "{VIB_ENV_PATH}"
|
||||
},
|
||||
"runtime_parameters": "Y29tbWFuZDogWyJ0YWlsIiwgIi1mIiwgIi9kZXYvbnVsbCJd"
|
||||
},
|
||||
"phases": {
|
||||
"package": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "container-image-package",
|
||||
"params": {
|
||||
"application": {
|
||||
"details": {
|
||||
"name": "{VIB_ENV_CONTAINER}",
|
||||
"tag": "{VIB_ENV_TAG}"
|
||||
}
|
||||
},
|
||||
"architectures": ["linux/amd64", "linux/arm64"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "container-image-lint",
|
||||
"params": {
|
||||
"threshold": "error"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"verify": {
|
||||
"actions": [
|
||||
{
|
||||
"action_id": "goss",
|
||||
"params": {
|
||||
"resources": {
|
||||
"path": "/.vib"
|
||||
},
|
||||
"tests_file": "ray/goss/goss.yaml",
|
||||
"vars_file": "ray/goss/vars.yaml",
|
||||
"remote": {
|
||||
"pod": {
|
||||
"workload": "deploy-ray"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "trivy",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"vuln_type": ["OS"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action_id": "grype",
|
||||
"params": {
|
||||
"threshold": "CRITICAL",
|
||||
"package_type": ["OS"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user