OCI Distribution Conformance Tests

Summary
1 passed17 failed44 skipped
Start Time Jun 14 06:32:44.831 +0000 UTC
End Time Jun 14 06:32:45.702 +0000 UTC
Time Elapsed 870.919981ms
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 | 0xc000281c50>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
        Err: <*net.OpError | 0xc0002d2d20>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea7c0>{
                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 | 0xc00033f6b0>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc00033a870>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000356540>{
                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 | 0xc00042ad50>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:0f8c9383163fba0d1575113e6910b02784c95f8d55ec38afa703a5678d827b87",
        Err: <*net.OpError | 0xc0002d3630>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002eaf80>{
                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 | 0xc000478000>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
        Err: <*net.OpError | 0xc00033acd0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000356940>{
                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 | 0xc00042b740>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:0f8c9383163fba0d1575113e6910b02784c95f8d55ec38afa703a5678d827b87",
        Err: <*net.OpError | 0xc0002d3ae0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002eb380>{
                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 | 0xc000478300>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc00033a0f0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000356000>{
                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 | 0xc000073200>: {
        Op: "Head",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:75ddf930579c64060cc87aa5b17460e690b5ec50cdcb4483622297b961aab146",
        Err: <*net.OpError | 0xc0000ae0a0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0003564c0>{
                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 | 0xc00013e840>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
        Err: <*net.OpError | 0xc0000ae730>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc000356500>{
                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 | 0xc00013f140>: {
        Op: "Get",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:75ddf930579c64060cc87aa5b17460e690b5ec50cdcb4483622297b961aab146",
        Err: <*net.OpError | 0xc0000aec30>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc00006fa00>{
                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 | 0xc00013fda0>: {
        Op: "Put",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
        Err: <*net.OpError | 0xc0000af1d0>{
            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


Teardown

+

Delete config blob created in setup


Expected
    <*url.Error | 0xc000280750>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:0f8c9383163fba0d1575113e6910b02784c95f8d55ec38afa703a5678d827b87",
        Err: <*net.OpError | 0xc0000af630>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea280>{
                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 | 0xc0002814d0>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
        Err: <*net.OpError | 0xc0000afa90>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002ea640>{
                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 | 0xc000479380>: {
        Op: "Delete",
        URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:75ddf930579c64060cc87aa5b17460e690b5ec50cdcb4483622297b961aab146",
        Err: <*net.OpError | 0xc00033a5f0>{
            Op: "dial",
            Net: "tcp",
            Source: nil,
            Addr: nil,
            Err: <*net.DNSError | 0xc0002eaa00>{
                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