OCI Distribution Conformance Tests

Summary
1 passed17 failed44 skipped
Start Time Oct 11 06:12:04.023 +0000 UTC
End Time Oct 11 06:12:04.860 +0000 UTC
Time Elapsed 837.446072ms
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 | 0xc000396ea0>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
        Err: <*net.OpError | 0xc0002eb400>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002feac0>{
                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 | 0xc000397a10>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0002eb900>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000366540>{
                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 | 0xc000460270>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
        Err: <*net.OpError | 0xc0002ebd10>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ff280>{
                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 | 0xc000460990>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0004740f0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000366600>{
                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 | 0xc00036ede0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
        Err: <*net.OpError | 0xc000368690>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000366680>{
                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 | 0xc00036e7b0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc000368320>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000366140>{
                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 | 0xc00036f020>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
        Err: <*net.OpError | 0xc000368780>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000366580>{
                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 | 0xc000087ce0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000c2320>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000082240>{
                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 | 0xc00036f950>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
        Err: <*net.OpError | 0xc000368c80>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000082e00>{
                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 | 0xc000154c30>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
        Err: <*net.OpError | 0xc0000c27d0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0003670c0>{
                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 | 0xc0001555c0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
        Err: <*net.OpError | 0xc0000c2cd0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000083940>{
                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 | 0xc00029a570>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
        Err: <*net.OpError | 0xc000369220>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000083cc0>{
                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 | 0xc00029aea0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
        Err: <*net.OpError | 0xc0003695e0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000367580>{
                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