OCI Distribution Conformance Tests

Summary
1 passed17 failed44 skipped
Start Time Sep 27 06:12:11.741 +0000 UTC
End Time Sep 27 06:12:13.030 +0000 UTC
Time Elapsed 1.288435645s
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 | 0xc000416390>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
        Err: <*net.OpError | 0xc000307090>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031c980>{
                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 | 0xc000417500>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0003079a0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031d080>{
                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 | 0xc000417d70>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:606eb8ebcaaf79e6f88c0d8c3d1948e618df935a6a483f707a1cc3a0eebe5b74",
        Err: <*net.OpError | 0xc000307db0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031d400>{
                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 | 0xc0004764b0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc000478190>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031d780>{
                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 | 0xc00016e2a0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:606eb8ebcaaf79e6f88c0d8c3d1948e618df935a6a483f707a1cc3a0eebe5b74",
        Err: <*net.OpError | 0xc000306050>{
            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 | 0xc000077980>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000c4140>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000368380>{
                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 | 0xc0002b65d0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:a653b2c0d3fe49ac16391e856b4c3be8fbbad22758848c6fd3cd3bdb20a83c00",
        Err: <*net.OpError | 0xc0000c4730>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006ef80>{
                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 | 0xc0002b75f0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000c4d70>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006fac0>{
                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 | 0xc00016eea0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:a653b2c0d3fe49ac16391e856b4c3be8fbbad22758848c6fd3cd3bdb20a83c00",
        Err: <*net.OpError | 0xc0003064b0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000368500>{
                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 | 0xc0002b7e30>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
        Err: <*net.OpError | 0xc0000c5180>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000368a00>{
                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 | 0xc0004167e0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:606eb8ebcaaf79e6f88c0d8c3d1948e618df935a6a483f707a1cc3a0eebe5b74",
        Err: <*net.OpError | 0xc0000c55e0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031c240>{
                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 | 0xc0004171d0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
        Err: <*net.OpError | 0xc0000c5a40>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031c640>{
                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 | 0xc000417bf0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:a653b2c0d3fe49ac16391e856b4c3be8fbbad22758848c6fd3cd3bdb20a83c00",
        Err: <*net.OpError | 0xc0000c5ea0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00031ca00>{
                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