From c31d360b7adb77bb79a885852d6d64139835acf1 Mon Sep 17 00:00:00 2001 From: Andrew Bettison Date: Tue, 17 Jul 2012 14:09:35 +0930 Subject: [PATCH] Improve 'rhizomeprotocol' tests New test case for big payload (1 MB + 2 bytes) Check that received payloads are identical to sent ones Refactored test code --- testdefs_rhizome.sh | 4 ++ tests/rhizomeprotocol | 120 +++++++++++++++++++++++++++++++----------- 2 files changed, 94 insertions(+), 30 deletions(-) diff --git a/testdefs_rhizome.sh b/testdefs_rhizome.sh index c237a7da..a8b36fc0 100644 --- a/testdefs_rhizome.sh +++ b/testdefs_rhizome.sh @@ -237,6 +237,10 @@ extract_manifest_BK() { extract_manifest "$1" "$2" BK "$rexp_bundlekey" } +extract_manifest_filesize() { + extract_manifest "$1" "$2" filesize "$rexp_filesize" +} + extract_manifest_filehash() { extract_manifest "$1" "$2" filehash "$rexp_filehash" } diff --git a/tests/rhizomeprotocol b/tests/rhizomeprotocol index e193b1f9..0eedb0d6 100755 --- a/tests/rhizomeprotocol +++ b/tests/rhizomeprotocol @@ -63,63 +63,123 @@ bundle_received_by() { return 0 } -setup_file_one() { +setup_common() { setup_servald setup_rhizome assert_no_servald_processes - echo 'File one' >file1 - set_instance +A - executeOk_servald rhizome add file $SIDA '' file1 file1.manifest - extract_manifest_id BID file1.manifest - extract_manifest_version VERSION file1.manifest } -doc_FileTransferNew="One new bundle transfers to one node" -setup_FileTransferNew() { - setup_file_one - start_servald_instances +A +B - set_instance +B +extract_manifest_vars() { + local manifest="${1?}" + extract_manifest_id BID "$manifest" + extract_manifest_version VERSION "$manifest" + extract_manifest_filesize FILESIZE "$manifest" + FILEHASH= + if [ "$FILESIZE" != '0' ]; then + extract_manifest_filehash FILEHASH "$manifest" + fi } -test_FileTransferNew() { - wait_until bundle_received_by +B + +add_file() { + local name="$1" + [ -e "$name" ] || echo 'File $name' >"$name" + local sidvar="SID$instance_name" + executeOk_servald rhizome add file "${!sidvar}" '' "$name" "$name.manifest" executeOk_servald rhizome list '' - assert_rhizome_list file1! + assert_rhizome_list "$name" + extract_manifest_vars "$name.manifest" } -doc_FileMultiTransferNew="One new bundle transfers to four nodes" -setup_FileMultiTransferNew() { - setup_file_one +update_file() { + local orig_name="$1" + local new_name="$2" + [ -e "$new_name" ] || echo 'File $new_name' >"$new_name" + local sidvar="SID$instance_name" + [ "$new_name" != "$orig_name" ] && cp "$orig_name.manifest" "$new_name.manifest" + sed -i -e '/^date=/d;/^filehash=/d;/^filesize=/d;/^version=/d;/^name=/d' "$new_name.manifest" + executeOk_servald rhizome add file "${!sidvar}" '' "$new_name" "$new_name.manifest" + executeOk_servald rhizome list '' + assert_rhizome_list "$new_name" + extract_manifest_vars "$new_name.manifest" +} + +doc_FileTransfer="New bundle and update transfer to one node" +setup_FileTransfer() { + setup_common + set_instance +A + add_file file1 + start_servald_instances +A +B +} +test_FileTransfer() { + wait_until bundle_received_by +B + set_instance +B + assert_received file1 + set_instance +A + update_file file1 file2 + set_instance +B + wait_until bundle_received_by +B + assert_received file2 +} + +doc_FileTransferBig="Big new bundle transfers to one node" +setup_FileTransferBig() { + setup_common + set_instance +A + dd if=/dev/urandom of=file1 bs=1k count=1k 2>&1 + echo x >>file1 + ls -l file1 + add_file file1 + start_servald_instances +A +B +} +test_FileTransferBig() { + wait_until bundle_received_by +B + set_instance +B + assert_received file1 +} + +assert_received() { + local name="${1?}" + executeOk_servald rhizome list '' + assert_rhizome_list "$name!" + local _hash + if [ -s "$name" ]; then + extract_manifest_filehash _hash "$name.manifest" + executeOk_servald rhizome extract file "$_hash" extracted + assert cmp "$name" extracted + fi +} + +doc_FileTransferMulti="New bundle transfers to four nodes" +setup_FileTransferMulti() { + setup_common + set_instance +A + add_file file1 start_servald_instances +A +B +C +D +E } -test_FileMultiTransferNew() { +test_FileTransferMulti() { wait_until bundle_received_by +B +C +D +E local I for I in +B +C +D +E; do set_instance $I - executeOk_servald rhizome list '' - assert_rhizome_list file1! + assert_received file1 done } -doc_FileTransferDelete="One bundle deletion transfers to one node" +doc_FileTransferDelete="Payload deletion transfers to one node" setup_FileTransferDelete() { - setup_file_one + setup_common + set_instance +A + add_file file1 start_servald_instances +A +B wait_until bundle_received_by +B set_instance +A >file1_2 - sed -e '/^date=/d;/^filehash=/d;/^filesize=/d;/^version=/d' file1.manifest >file1_2.manifest - echo 'filesize=0' >>file1_2.manifest - executeOk_servald rhizome add file $SIDA '' '' file1_2.manifest - extract_manifest_version VERSION file1_2.manifest - executeOk_servald rhizome list '' - assert_rhizome_list file1_2 + update_file file1 file1_2 } test_FileTransferDelete() { wait_until bundle_received_by +B set_instance +B - executeOk_servald rhizome list '' - assert_rhizome_list file1_2! + assert_received file1_2 } runTests "$@"