OCI Distribution Conformance Tests

Summary
1 passed17 failed44 skipped
Start Time Jun 14 06:30:18.285 +0000 UTC
End Time Jun 14 06:30:19.230 +0000 UTC
Time Elapsed 944.5707ms
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 | 0xc000334a80>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
        Err: <*net.OpError | 0xc000330370>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e89c0>{
                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 | 0xc00040a630>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0002d1180>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00034c980>{
                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 | 0xc00040ae70>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:ed0633d7224dfc34af0fa3940b3b9105916b94f6fc3fabe3848b2ef50ac778c9",
        Err: <*net.OpError | 0xc0002d1590>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e8e40>{
                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 | 0xc00040b590>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc0002d1950>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e91c0>{
                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:ed0633d7224dfc34af0fa3940b3b9105916b94f6fc3fabe3848b2ef50ac778c9",
        Err: <*net.OpError | 0xc0002d0050>{
            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 | 0xc00013ecc0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0002d0410>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006e180>{
                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 | 0xc000073a70>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:33f38a3218d8394a8ed92a8a55ba37d8d3b4cce30381f4b6e1fe4f1f996c0b49",
        Err: <*net.OpError | 0xc0000ae190>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006e340>{
                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 | 0xc0002807e0>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000ae910>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006f100>{
                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 | 0xc00013f710>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:33f38a3218d8394a8ed92a8a55ba37d8d3b4cce30381f4b6e1fe4f1f996c0b49",
        Err: <*net.OpError | 0xc0002d08c0>{
            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 (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 | 0xc000334240>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
        Err: <*net.OpError | 0xc0002d0eb0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006fb40>{
                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 | 0xc000334d80>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:ed0633d7224dfc34af0fa3940b3b9105916b94f6fc3fabe3848b2ef50ac778c9",
        Err: <*net.OpError | 0xc0002d1360>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e9140>{
                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 | 0xc000335770>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
        Err: <*net.OpError | 0xc0002d1810>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e9580>{
                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 | 0xc00040a240>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:33f38a3218d8394a8ed92a8a55ba37d8d3b4cce30381f4b6e1fe4f1f996c0b49",
        Err: <*net.OpError | 0xc0002d1d10>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002e9900>{
                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