Created
January 30, 2018 19:37
-
-
Save smerritt/d5d3ca419a1007c365e29a1fb73a4b4b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
CONTAINER="ds-test" | |
echo "Test setup" | |
# Set up some data segments (these are just plain objects) | |
TOKEN="`swift stat -v | grep "Auth Token" | cut -d : -f 2`" | |
STORAGE_URL="`swift stat -v | grep "StorageURL" | cut -d : -f 2,3,4,5,6`" | |
pushd ${TMPDIR:-/tmp} | |
echo "normal segment 1" > ns1 | |
echo "normal segment 2" > ns2 | |
echo "normal segment 3" > ns3 | |
echo "normal segment 4" > ns4 | |
echo "normal segment 5" > ns5 | |
echo "normal segment 6" > ns6 | |
echo "normal segment 7" > ns7 | |
echo "normal segment 8" > ns8 | |
echo "normal segment 9" > ns9 | |
echo "submanifest segment 1" > sub1 | |
echo "submanifest segment 2" > sub2 | |
echo "submanifest segment 3" > sub3 | |
echo "submanifest segment 4" > sub4 | |
swift upload "$CONTAINER" ns1 ns2 ns3 ns4 ns5 ns6 ns7 ns8 ns9 sub1 sub2 sub3 sub4 > /dev/null | |
cat <<EOF >submanifest | |
[ | |
{"data": "c3VibWFuaWZlc3QgaW50cm8gZGF0YQo="}, | |
{"path": "$CONTAINER/sub1"}, | |
{"path": "$CONTAINER/sub2"}, | |
{"data": "c3VibWFuaWZlc3QgZGF0YSBzZWdtZW50Cg=="}, | |
{"path": "$CONTAINER/sub3"}, | |
{"path": "$CONTAINER/sub4"}, | |
{"data": "c3VibWFuaWZlc3Qgb3V0cm8gZGF0YQo="} | |
] | |
EOF | |
python -mjson.tool submanifest >/dev/null || echo "JSON not ok" | |
curl -q -X PUT --data-binary @submanifest -H "X-Auth-Token: $TOKEN" $STORAGE_URL/$CONTAINER/submanifest?multipart-manifest=put | |
function run_test() { | |
MANIFEST="$1" | |
# It's 2018, but trailing commas in JSON are still not allowed. | |
python -mjson.tool $MANIFEST >/dev/null || echo "JSON not ok" | |
curl -q -X PUT --data-binary @$MANIFEST -H "X-Auth-Token: $TOKEN" $STORAGE_URL/$CONTAINER/$MANIFEST?multipart-manifest=put | |
curl -i -X GET -H "X-Auth-Token: $TOKEN" $STORAGE_URL/$CONTAINER/$MANIFEST | |
} | |
echo | |
echo "Manifest containing both path/data segments" | |
cat <<EOF >manifest | |
[ | |
{"data": "ZGF0YSBwcmUgMQo="}, | |
{"data": "ZGF0YSBwcmUgMgo="}, | |
{"path": "$CONTAINER/ns1"}, | |
{"data": "ZGF0YSAxCg=="}, | |
{"path": "$CONTAINER/ns2"}, | |
{"data": "ZGF0YSAyCg=="}, | |
{"path": "$CONTAINER/ns3"}, | |
{"data": "ZGF0YSAzCg=="}, | |
{"path": "$CONTAINER/ns4"}, | |
{"data": "ZGF0YSA0Cg=="}, | |
{"path": "$CONTAINER/ns5"}, | |
{"data": "ZGF0YSA1Cg=="}, | |
{"path": "$CONTAINER/ns6"}, | |
{"data": "ZGF0YSA2Cg=="}, | |
{"path": "$CONTAINER/ns7"}, | |
{"data": "ZGF0YSA3Cg=="}, | |
{"path": "$CONTAINER/ns8"}, | |
{"data": "ZGF0YSA4Cg=="}, | |
{"path": "$CONTAINER/ns9"}, | |
{"data": "ZGF0YSBwb3N0IDEK"}, | |
{"data": "ZGF0YSBwb3N0IDIK"} | |
] | |
EOF | |
run_test "manifest" | |
echo | |
echo "Manifest with ranges" | |
cat <<EOF >manifest-range | |
[ | |
{"data": "ZGF0YSBwcmUgMQo="}, | |
{"data": "ZGF0YSBwcmUgMgo="}, | |
{"path": "$CONTAINER/ns1", "range": "0-6"}, | |
{"path": "$CONTAINER/ns1", "range": "-2"}, | |
{"data": "ZGF0YSAxCg=="}, | |
{"path": "$CONTAINER/ns2", "range": "0-4"}, | |
{"path": "$CONTAINER/ns2", "range": "-1"}, | |
{"path": "$CONTAINER/ns3"}, | |
{"data": "ZGF0YSBwb3N0IDEK"}, | |
{"data": "ZGF0YSBwb3N0IDIK"} | |
] | |
EOF | |
run_test "manifest-range" | |
echo | |
echo "Manifest with submanifest after normal segment" | |
cat <<EOF >manifest-sub-after-normal | |
[ | |
{"data": "ZGF0YSBwcmUgMQo="}, | |
{"data": "ZGF0YSBwcmUgMgo="}, | |
{"path": "$CONTAINER/ns1"}, | |
{"path": "$CONTAINER/submanifest"}, | |
{"path": "$CONTAINER/ns2"}, | |
{"data": "ZGF0YSBwb3N0IDEK"}, | |
{"data": "ZGF0YSBwb3N0IDIK"} | |
] | |
EOF | |
run_test "manifest-sub-after-normal" | |
echo | |
echo "Manifest with submanifest after data segment" | |
cat <<EOF >manifest-sub-after-data | |
[ | |
{"data": "ZGF0YSBwcmUgMQo="}, | |
{"data": "ZGF0YSBwcmUgMgo="}, | |
{"path": "$CONTAINER/ns1"}, | |
{"data": "ZGF0YSBiZWZvcmUgc3VibWFuaWZlc3QK"}, | |
{"path": "$CONTAINER/submanifest"}, | |
{"data": "ZGF0YSBhZnRlciBzdWJtYW5pZmVzdAo="}, | |
{"path": "$CONTAINER/ns2"}, | |
{"data": "ZGF0YSBwb3N0IDEK"}, | |
{"data": "ZGF0YSBwb3N0IDIK"} | |
] | |
EOF | |
run_test "manifest-sub-after-data" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment