Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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"
Add Comment
Please, Sign In to add comment