Skip to content

Commit

Permalink
Merge pull request #577 from changweige/test-layerd
Browse files Browse the repository at this point in the history
Add layered image conversion to IT workflow and replace storage backend with BACKEND_PROXY
  • Loading branch information
liubogithub authored Jul 8, 2022
2 parents 10859e8 + 6d29f26 commit 926f2e1
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 128 deletions.
199 changes: 98 additions & 101 deletions .github/workflows/it.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Nydus Ingegration Test
name: Nydus Integration Test

on:
schedule:
Expand All @@ -12,104 +12,101 @@ jobs:
strategy:
matrix:
arch: [amd64]
steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.17
- name: Setup pytest
run: |
sudo apt install --no-install-recommends -y attr libattr1-dev fio pkg-config libssl-dev python3
sudo python3 -m pip install --upgrade pip
sudo pip3 install pytest xattr requests psutil requests_unixsocket libconf py-splice fallocate pytest-repeat PyYAML six docker toml
- name: containerd runc and crictl
run: |
sudo wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.17.0/crictl-v1.17.0-linux-amd64.tar.gz
sudo tar zxvf ./crictl-v1.17.0-linux-amd64.tar.gz -C /usr/local/bin
sudo wget https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gz
mkdir containerd
sudo tar -zxf ./containerd-1.4.3-linux-amd64.tar.gz -C ./containerd
sudo mv ./containerd/bin/* /usr/bin/
sudo wget https://github.com/opencontainers/runc/releases/download/v1.1.2/runc.amd64 -O /usr/bin/runc
sudo chmod +x /usr/bin/runc
- name: Set up ossutils
run: |
sudo wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 -O /usr/bin/ossutil64
sudo chmod +x /usr/bin/ossutil64
- uses: actions/checkout@v3
- name: Cache cargo
uses: Swatinem/rust-cache@v1
with:
target-dir: |
./target-fusedev
./target-virtiofs
cache-on-failure: true
key: ${{ runner.os }}-cargo-${{ matrix.arch }}
steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.17
- name: Setup pytest
run: |
sudo apt install --no-install-recommends -y attr libattr1-dev fio pkg-config libssl-dev python3
sudo python3 -m pip install --upgrade pip
sudo pip3 install pytest xattr requests psutil requests_unixsocket libconf py-splice fallocate pytest-repeat PyYAML six docker toml
- name: containerd runc and crictl
run: |
sudo wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.17.0/crictl-v1.17.0-linux-amd64.tar.gz
sudo tar zxvf ./crictl-v1.17.0-linux-amd64.tar.gz -C /usr/local/bin
sudo wget https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gz
mkdir containerd
sudo tar -zxf ./containerd-1.4.3-linux-amd64.tar.gz -C ./containerd
sudo mv ./containerd/bin/* /usr/bin/
sudo wget https://github.com/opencontainers/runc/releases/download/v1.1.2/runc.amd64 -O /usr/bin/runc
sudo chmod +x /usr/bin/runc
- name: Set up ossutils
run: |
sudo wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 -O /usr/bin/ossutil64
sudo chmod +x /usr/bin/ossutil64
- uses: actions/checkout@v3
- name: Cache cargo
uses: Swatinem/rust-cache@v1
with:
target-dir: |
./target-fusedev
./target-virtiofs
cache-on-failure: true
key: ${{ runner.os }}-cargo-${{ matrix.arch }}

- name: Build nydus-rs
run: |
declare -A rust_arch_map=( ["amd64"]="x86_64" ["arm64"]="aarch64")
arch=${rust_arch_map[${{ matrix.arch }}]}
cargo install --version 0.2.1 cross
rustup component add rustfmt clippy
make -e ARCH=$arch -e CARGO=cross static-release
make release -C contrib/nydus-backend-proxy/
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusd nydusd-fusedev
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydus-cached .
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydus-image .
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusctl .
#sudo mv target-virtiofs/$arch-unknown-linux-musl/release/nydusd nydusd-virtiofs
sudo cp -r misc/configs .
sudo chown -R $(id -un):$(id -gn) . ~/.cargo/
pwd
ls -lh target-virtiofs/$arch-unknown-linux-musl/release
- name: Set up anchor file
env:
OSS_AK_ID: ${{ secrets.OSS_TEST_AK_ID }}
OSS_AK_SEC: ${{ secrets.OSS_TEST_AK_SECRET }}
run: |
sudo mkdir -p /home/runner/nydus-test-workspace
sudo mkdir -p /home/runner/nydus-test-workspace/proxy_blobs
sudo cat > /home/runner/work/image-service/image-service/contrib/nydus-test/anchor_conf.json << EOF
{
"workspace": "/home/runner/nydus-test-workspace",
"nydus_project": "/home/runner/work/image-service/image-service",
"nydus_runtime_conf": {
"profile": "release",
"log_level": "info"
},
"registry": {
"registry_url": "localhost:5000",
"registry_namespace": "",
"registry_auth": "YOURAUTH==",
"backend_proxy_url": "127.0.0.1:8000",
"backend_proxy_blobs_dir": "/home/runner/nydus-test-workspace/proxy_blobs"
},
"oss": {
"endpoint": "oss-cn-beijing.aliyuncs.com",
"ak_id": "$OSS_AK_ID",
"ak_secret": "$OSS_AK_SEC",
"bucket": "nydus-ci"
},
"images": {
"images_array": [
"busybox:latest"
]
},
"artifacts": {
"containerd": "/usr/bin/containerd",
"ossutil_bin": "/usr/bin/ossutil64"
},
"logging_file": "stderr",
"target": "musl"
}
EOF
- name: run test_api
run: |
cd /home/runner/work/image-service/image-service/contrib/nydus-test
sudo mkdir -p /blobdir
sudo python3 nydus_test_config.py --dist fs_structure.yaml
sudo pytest -vs --durations=0 --pdb functional-test/test_api.py::test_detect_io_hang \
functional-test/test_api.py::test_access_pattern \
functional-test/test_api.py::test_api_mount_with_prefetch \
functional-test/test_api.py::test_daemon_info
- name: Build nydus-rs
run: |
declare -A rust_arch_map=( ["amd64"]="x86_64" ["arm64"]="aarch64")
arch=${rust_arch_map[${{ matrix.arch }}]}
cargo install --version 0.2.1 cross
rustup component add rustfmt clippy
make -e ARCH=$arch -e CARGO=cross static-release
make release -C contrib/nydus-backend-proxy/
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusd nydusd-fusedev
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydus-cached .
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydus-image .
#sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusctl .
#sudo mv target-virtiofs/$arch-unknown-linux-musl/release/nydusd nydusd-virtiofs
sudo cp -r misc/configs .
sudo chown -R $(id -un):$(id -gn) . ~/.cargo/
pwd
ls -lh target-virtiofs/$arch-unknown-linux-musl/release
- name: Set up anchor file
env:
OSS_AK_ID: ${{ secrets.OSS_TEST_AK_ID }}
OSS_AK_SEC: ${{ secrets.OSS_TEST_AK_SECRET }}
run: |
sudo mkdir -p /home/runner/nydus-test-workspace
sudo mkdir -p /home/runner/nydus-test-workspace/proxy_blobs
sudo cat > /home/runner/work/image-service/image-service/contrib/nydus-test/anchor_conf.json << EOF
{
"workspace": "/home/runner/nydus-test-workspace",
"nydus_project": "/home/runner/work/image-service/image-service",
"nydus_runtime_conf": {
"profile": "release",
"log_level": "info"
},
"registry": {
"registry_url": "localhost:5000",
"registry_namespace": "",
"registry_auth": "YOURAUTH==",
"backend_proxy_url": "127.0.0.1:8000",
"backend_proxy_blobs_dir": "/home/runner/nydus-test-workspace/proxy_blobs"
},
"oss": {
"endpoint": "oss-cn-beijing.aliyuncs.com",
"ak_id": "$OSS_AK_ID",
"ak_secret": "$OSS_AK_SEC",
"bucket": "nydus-ci"
},
"images": {
"images_array": [
"busybox:latest"
]
},
"artifacts": {
"containerd": "/usr/bin/containerd",
"ossutil_bin": "/usr/bin/ossutil64"
},
"logging_file": "stderr",
"target": "musl"
}
EOF
- name: run test_api
run: |
cd /home/runner/work/image-service/image-service/contrib/nydus-test
sudo mkdir -p /blobdir
sudo python3 nydus_test_config.py --dist fs_structure.yaml
sudo pytest -vs --durations=0 functional-test/test_api.py functional-test/test_layered_image.py
4 changes: 4 additions & 0 deletions contrib/nydus-test/framework/rafs.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ def create_image(
from_stargz=False,
fs_version=None,
disable_check=False,
chunk_size=None,
) -> "RafsImage":
"""
:layers: Create an image on top of an existed one
Expand Down Expand Up @@ -390,6 +391,9 @@ def create_image(
if self.compressor is not None:
self.set_param("compressor", str(self.compressor))

if chunk_size is not None:
self.set_param("chunk-size", str(hex(chunk_size)))

builder_output_json = tempfile.NamedTemporaryFile("w+", suffix="output.json")
self.set_param("output-json", builder_output_json.name)
builder_output_json.flush()
Expand Down
Loading

0 comments on commit 926f2e1

Please sign in to comment.