OCI Distribution Conformance Tests

Summary
1 passed17 failed44 skipped
Start Time Sep 27 06:09:02.018 +0000 UTC
End Time Sep 27 06:09:02.791 +0000 UTC
Time Elapsed 772.942834ms
Test Version v1.0.0
Configuration
OCI_ROOT_URL=https://registry-intl.REPLACEME.aliyuncs.com
OCI_NAMESPACE=REPLACEME/REPLACEME
OCI_TEST_PULL=1
OCI_HIDE_SKIPPED_WORKFLOWS=1

Pull

Setup

+

Populate registry with test manifest


Expected
    <*url.Error | 0xc00040c390>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
        Err: <*net.OpError | 0xc0002d7090>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea980>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

Get the name of a tag


+

Get tag name from environment



Pull blobs

+

HEAD request to nonexistent blob should result in 404 response


Expected
    <*url.Error | 0xc00040d3b0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0002d7950>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002eb0c0>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

HEAD request to existing blob should yield 200


Expected
    <*url.Error | 0xc00040db00>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:681de95c333b918c7ec2b51502e5e7558fd84ce8a9ab355e6c36835537a914ec",
        Err: <*net.OpError | 0xc0002d7d10>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0003583c0>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

GET nonexistent blob should result in 404 response


Expected
    <*url.Error | 0xc000337230>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0003325f0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002eb780>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

GET request to existing blob URL should yield 200


Expected
    <*url.Error | 0xc00013e2a0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:681de95c333b918c7ec2b51502e5e7558fd84ce8a9ab355e6c36835537a914ec",
        Err: <*net.OpError | 0xc0002d6050>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006e0c0>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil


Pull manifests

+

HEAD request to nonexistent manifest should return 404


Expected
    <*url.Error | 0xc0000739b0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000ae140>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea380>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

HEAD request to manifest path (digest) should yield 200 response


Expected
    <*url.Error | 0xc000286510>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:d57e2e3be29dab55827a4e0eb6d2911397e02381203e201873da3c29005bdc9c",
        Err: <*net.OpError | 0xc0000ae690>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006ee40>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

HEAD request to manifest path (tag) should yield 200 response


Expected
    <string>: 
not to be empty

+

GET nonexistent manifest should return 404


Expected
    <*url.Error | 0xc00013ee70>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0002d64b0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006fa80>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

GET request to manifest path (digest) should yield 200 response


Expected
    <*url.Error | 0xc00013f7a0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:d57e2e3be29dab55827a4e0eb6d2911397e02381203e201873da3c29005bdc9c",
        Err: <*net.OpError | 0xc0002d6910>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea880>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

GET request to manifest path (tag) should yield 200 response


Expected
    <string>: 
not to be empty


Error codes

+

400 response body should contain OCI-conforming JSON message


Expected
    <*url.Error | 0xc0002874a0>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
        Err: <*net.OpError | 0xc0000aed20>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ead80>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil


Teardown

+

Delete config blob created in setup


Expected
    <*url.Error | 0xc000287ef0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:681de95c333b918c7ec2b51502e5e7558fd84ce8a9ab355e6c36835537a914ec",
        Err: <*net.OpError | 0xc0000af180>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006ff00>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

Delete layer blob created in setup


Expected
    <*url.Error | 0xc000336990>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
        Err: <*net.OpError | 0xc0000af5e0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000358280>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil

+

Delete manifest created in setup


Expected
    <*url.Error | 0xc00040c3c0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:d57e2e3be29dab55827a4e0eb6d2911397e02381203e201873da3c29005bdc9c",
        Err: <*net.OpError | 0xc0002d6f50>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000358600>{
                Err: "no such host",
                Name: "registry-intl.REPLACEME.aliyuncs.com",
                Server: "168.63.129.16:53",
                IsTimeout: false,
                IsTemporary: false,
                IsNotFound: true,
            },
        },
    }
to be nil