storage/tests/bigdata.bats

213 lines
6.8 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 ]
# Check that we can distinguish between no-such-image and no-such-item.
run storage --debug=false get-image-data nosuchimage big-item
[ "$status" -ne 0 ]
echo "$output"
[[ "$output" =~ "image not known" ]]
run storage --debug=false get-image-data $image no-such-big-item
[ "$status" -ne 0 ]
echo "$output"
[[ "$output" =~ "does not exist" ]]
# 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" ]
}
@test "layer-data" {
# Create a layer.
run storage --debug=false create-layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
layer=$output
# Make sure the layer has no big data items associated with it.
run storage --debug=false list-layer-data $layer
[ "$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-layer-data -f $TESTDIR/big-item-1 $layer big-item-1
storage set-layer-data -f $TESTDIR/big-item-2 $layer big-item-2
# Get a list of the items. Make sure they're both listed.
run storage --debug=false list-layer-data $layer
[ "$status" -eq 0 ]
[ "${#lines[*]}" -eq 2 ]
[ "${lines[0]}" = "big-item-1" ]
[ "${lines[1]}" = "big-item-2" ]
# Save the contents of the big data items to disk and compare them with the originals.
run storage --debug=false get-layer-data $layer no-such-item
[ "$status" -ne 0 ]
storage get-layer-data -f $TESTDIR/big-item-1.2 $layer big-item-1
cmp $TESTDIR/big-item-1 $TESTDIR/big-item-1.2
storage get-layer-data -f $TESTDIR/big-item-2.2 $layer big-item-2
cmp $TESTDIR/big-item-2 $TESTDIR/big-item-2.2
}