storage/tests/bigdata.bats

167 lines
5.3 KiB
Bash

#!/usr/bin/env bats
load helpers
@test "image-data" {
# Bail if "sha256sum" isn't available.
if test -z "$(which sha256sum 2> /dev/null)" ; then
skip "need sha256sum"
fi
# Create a layer.
run storage --debug=false create-layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
layer=$output
# Create an image using that layer.
run storage --debug=false create-image $layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
image=${output%% *}
# Make sure the image can be located.
storage exists -i $image
# Make sure the image has no big data items associated with it.
run storage --debug=false list-image-data $image
[ "$status" -eq 0 ]
[ "$output" = "" ]
# Create two random files.
createrandom $TESTDIR/big-item-1 1234
createrandom $TESTDIR/big-item-2 5678
# Set each of those files as a big data item named after the file.
storage set-image-data -f $TESTDIR/big-item-1 $image big-item-1
storage set-image-data -f $TESTDIR/big-item-2 $image big-item-2
# Get a list of the items. Make sure they're both listed.
run storagewithsorting --debug=false list-image-data $image
[ "$status" -eq 0 ]
[ "${#lines[*]}" -eq 2 ]
[ "${lines[0]}" = "big-item-1" ]
[ "${lines[1]}" = "big-item-2" ]
# Check that the recorded sizes of the items match what we decided above.
run storage get-image-data-size $image no-such-item
[ "$status" -ne 0 ]
run storage --debug=false get-image-data-size $image big-item-1
[ "$status" -eq 0 ]
[ "$output" -eq 1234 ]
run storage --debug=false get-image-data-size $image big-item-2
[ "$status" -eq 0 ]
[ "$output" -eq 5678 ]
# Save the contents of the big data items to disk and compare them with the originals.
run storage --debug=false get-image-data $image no-such-item
[ "$status" -ne 0 ]
storage get-image-data -f $TESTDIR/big-item-1.2 $image big-item-1
cmp $TESTDIR/big-item-1 $TESTDIR/big-item-1.2
storage get-image-data -f $TESTDIR/big-item-2.2 $image big-item-2
cmp $TESTDIR/big-item-2 $TESTDIR/big-item-2.2
# Read the recorded digests of the items and compare them with the digests of the originals.
run storage get-image-data-digest $image no-such-item
[ "$status" -ne 0 ]
run storage --debug=false get-image-data-digest $image big-item-1
[ "$status" -eq 0 ]
sum=$(sha256sum $TESTDIR/big-item-1)
sum=sha256:"${sum%% *}"
echo output:"$output":
echo sum:"$sum":
[ "$output" = "$sum" ]
run storage --debug=false get-image-data-digest $image big-item-2
[ "$status" -eq 0 ]
sum=$(sha256sum $TESTDIR/big-item-2)
sum=sha256:"${sum%% *}"
echo output:"$output":
echo sum:"$sum":
[ "$output" = "$sum" ]
}
@test "container-data" {
# Bail if "sha256sum" isn't available.
if test -z "$(which sha256sum 2> /dev/null)" ; then
skip "need sha256sum"
fi
# Create a layer.
run storage --debug=false create-layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
layer=$output
# Create an image using that layer.
run storage --debug=false create-image $layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
image=${output%% *}
# Create a container based on that image.
run storage --debug=false create-container $image
[ "$status" -eq 0 ]
[ "$output" != "" ]
container=${output%% *}
# Make sure the container can be located.
storage exists -c $container
# Make sure the container has no big data items associated with it.
run storage --debug=false list-container-data $container
[ "$status" -eq 0 ]
[ "$output" = "" ]
# Create two random files.
createrandom $TESTDIR/big-item-1 1234
createrandom $TESTDIR/big-item-2 5678
# Set each of those files as a big data item named after the file.
storage set-container-data -f $TESTDIR/big-item-1 $container big-item-1
storage set-container-data -f $TESTDIR/big-item-2 $container big-item-2
# Get a list of the items. Make sure they're both listed.
run storage --debug=false list-container-data $container
[ "$status" -eq 0 ]
[ "${#lines[*]}" -eq 2 ]
[ "${lines[0]}" = "big-item-1" ]
[ "${lines[1]}" = "big-item-2" ]
# Check that the recorded sizes of the items match what we decided above.
run storage get-container-data-size $container no-such-item
[ "$status" -ne 0 ]
run storage --debug=false get-container-data-size $container big-item-1
echo "$output"
[ "$status" -eq 0 ]
[ "$output" -eq 1234 ]
run storage --debug=false get-container-data-size $container big-item-2
[ "$status" -eq 0 ]
[ "$output" -eq 5678 ]
# Save the contents of the big data items to disk and compare them with the originals.
run storage --debug=false get-container-data $container no-such-item
[ "$status" -ne 0 ]
storage get-container-data -f $TESTDIR/big-item-1.2 $container big-item-1
cmp $TESTDIR/big-item-1 $TESTDIR/big-item-1.2
storage get-container-data -f $TESTDIR/big-item-2.2 $container big-item-2
cmp $TESTDIR/big-item-2 $TESTDIR/big-item-2.2
# Read the recorded digests of the items and compare them with the digests of the originals.
run storage get-container-data-digest $container no-such-item
[ "$status" -ne 0 ]
run storage --debug=false get-container-data-digest $container big-item-1
[ "$status" -eq 0 ]
sum=$(sha256sum $TESTDIR/big-item-1)
sum=sha256:"${sum%% *}"
echo output:"$output":
echo sum:"$sum":
[ "$output" = "$sum" ]
run storage --debug=false get-container-data-digest $container big-item-2
[ "$status" -eq 0 ]
sum=$(sha256sum $TESTDIR/big-item-2)
sum=sha256:"${sum%% *}"
echo output:"$output":
echo sum:"$sum":
[ "$output" = "$sum" ]
}