make_merge_blocks.sh 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. #parse argument
  2. architecture=$1
  3. permutation=$2
  4. matrix_decompressed_file=$3
  5. matrix_comp_file=$4
  6. output_dir=$5
  7. lorem_ipsum_file=$6
  8. if [ $permutation -eq 0 ] ; then
  9. permutation_str=""
  10. else
  11. permutation_str=" -no-permutation-key "
  12. fi
  13. # calculate size of each block
  14. lorem_ipsum_file_size=$(du -b $lorem_ipsum_file | cut -f1)
  15. length_block=$(expr $lorem_ipsum_file_size / 4 )
  16. offset0=0
  17. offset1=$(expr $offset0 + $length_block )
  18. offset2=$(expr $offset1 + $length_block )
  19. offset3=$(expr $offset2 + $length_block )
  20. length3=$(expr $lorem_ipsum_file_size - $offset3 )
  21. tag_blocks=25
  22. # generate blocks
  23. str="
  24. xrnlib-cli \
  25. --make-block -offset $offset0 -length $length_block -tag $tag_blocks -plain-text $lorem_ipsum_file -block-file $output_dir/block_file0.xf
  26. "
  27. echo ""; echo $str; echo ""
  28. eval $str
  29. str="
  30. xrnlib-cli \
  31. --make-block -offset $offset1 -length $length_block -tag $tag_blocks -plain-text $lorem_ipsum_file -block-file $output_dir/block_file1.xf
  32. "
  33. echo ""; echo $str; echo ""
  34. eval $str
  35. str="
  36. xrnlib-cli \
  37. --make-block -offset $offset2 -length $length_block -tag $tag_blocks -plain-text $lorem_ipsum_file -block-file $output_dir/block_file2.xf
  38. "
  39. echo ""; echo $str; echo ""
  40. eval $str
  41. str="
  42. xrnlib-cli \
  43. --make-block -offset $offset3 -length $length3 -tag $tag_blocks -plain-text $lorem_ipsum_file -block-file $output_dir/block_file3.xf
  44. "
  45. echo ""; echo $str; echo ""
  46. eval $str
  47. # merge block 1 and 3 and expect error because not contiguous
  48. str="
  49. xrnlib-cli \
  50. --logging-conf -lib-error-log $output_dir/wrong_merge.txt \
  51. --combine-blocks -block-file $output_dir/block_file1.xf -block-file $output_dir/block_file3.xf -combined-block-file $output_dir/block_file13.xf
  52. "
  53. echo ""; echo $str; echo ""
  54. eval $str
  55. str="
  56. if ! [ -s $output_dir/wrong_merge.txt ]; then echo FAIL ; exit ; fi ; \
  57. if [ $( wc -l $output_dir/wrong_merge.txt | awk '{print $1}' ) != 1 ] ; then echo FAIL ; exit ; fi
  58. "
  59. echo ""; echo $str; echo ""
  60. eval $str
  61. # merge block 0 and 1 and see if the blocks are complete (they are not without 2 and 3)
  62. str="
  63. xrnlib-cli \
  64. --combine-blocks -block-file $output_dir/block_file0.xf -block-file $output_dir/block_file1.xf -combined-block-file $output_dir/block_file01.xf
  65. "
  66. echo ""; echo $str; echo ""
  67. eval $str
  68. str="
  69. xrnlib-cli \
  70. --logging-conf -lib-info-log $output_dir/lib_info_block01.json \
  71. --check-complete-block -block-file $output_dir/block_file01.xf
  72. "
  73. echo ""; echo $str; echo ""
  74. eval $str
  75. str="
  76. if ! [ -s $output_dir/lib_info_block01.json ]; then echo FAIL ; exit ; fi ; \
  77. if grep -q PASS \"$output_dir/lib_info_block01.json\" ; then echo FAIL ; exit ; fi
  78. "
  79. echo ""; echo $str; echo ""
  80. eval $str
  81. # merge all the other blocks and check if they are complete
  82. str="
  83. xrnlib-cli \
  84. --combine-blocks -block-file $output_dir/block_file01.xf -block-file $output_dir/block_file2.xf -combined-block-file $output_dir/block_file012.xf
  85. "
  86. echo ""; echo $str; echo ""
  87. eval $str
  88. str="
  89. xrnlib-cli \
  90. --combine-blocks -block-file $output_dir/block_file012.xf -block-file $output_dir/block_file3.xf -combined-block-file $output_dir/block_file0123.xf
  91. "
  92. echo ""; echo $str; echo ""
  93. eval $str
  94. str="
  95. xrnlib-cli \
  96. --logging-conf -lib-info-log $output_dir/lib_info_block0123.json \
  97. --check-complete-block -block-file $output_dir/block_file0123.xf
  98. "
  99. echo ""; echo $str; echo ""
  100. eval $str
  101. str="
  102. if ! [ -s $output_dir/lib_info_block0123.json ]; then echo FAIL ; exit ; fi ; \
  103. if grep -q FAIL \"$output_dir/lib_info_block0123.json\" ; then echo FAIL ; exit ; fi
  104. "
  105. echo ""; echo $str; echo ""
  106. eval $str
  107. # strip header and check against the original file
  108. str="
  109. xrnlib-cli \
  110. --strip-header-from-block -block-file $output_dir/block_file0123.xf -plain-text $output_dir/stripped_lorem_ipsum.txt
  111. "
  112. echo ""; echo $str; echo ""
  113. eval $str
  114. str="
  115. cmp --silent $output_dir/stripped_lorem_ipsum $lorem_ipsum_file && echo 'FAIL'
  116. "
  117. echo ""; echo $str; echo ""
  118. eval $str
  119. # combine everything in one block in order
  120. str="
  121. xrnlib-cli \
  122. --combine-blocks -block-file $output_dir/block_file0.xf -block-file $output_dir/block_file1.xf -block-file $output_dir/block_file2.xf -block-file $output_dir/block_file3.xf -combined-block-file $output_dir/block_file0123_2.xf
  123. "
  124. echo ""; echo $str; echo ""
  125. eval $str
  126. str="
  127. xrnlib-cli \
  128. --logging-conf -lib-info-log $output_dir/lib_info_block0123_2.json \
  129. --check-complete-block -block-file $output_dir/block_file0123_2.xf
  130. "
  131. echo ""; echo $str; echo ""
  132. eval $str
  133. str="
  134. if ! [ -s $output_dir/lib_info_block0123_2.json ]; then echo FAIL ; exit ; fi ; \
  135. if grep -q FAIL \"$output_dir/lib_info_block0123_2.json\" ; then echo FAIL ; exit ; fi
  136. "
  137. echo ""; echo $str; echo ""
  138. eval $str
  139. # combine everything in one instruction out of order
  140. str="
  141. xrnlib-cli \
  142. --combine-blocks -block-file $output_dir/block_file1.xf -block-file $output_dir/block_file0.xf -block-file $output_dir/block_file3.xf -block-file $output_dir/block_file2.xf -combined-block-file $output_dir/block_file0123_3.xf
  143. "
  144. echo ""; echo $str; echo ""
  145. eval $str
  146. str="
  147. xrnlib-cli \
  148. --logging-conf -lib-info-log $output_dir/lib_info_block0123_3.json \
  149. --check-complete-block -block-file $output_dir/block_file0123_3.xf
  150. "
  151. echo ""; echo $str; echo ""
  152. eval $str
  153. str="
  154. if ! [ -s $output_dir/lib_info_block0123_3.json ]; then echo FAIL ; exit ; fi ; \
  155. if grep -q FAIL \"$output_dir/lib_info_block0123_3.json\" ; then echo FAIL ; exit ; fi
  156. "
  157. echo ""; echo $str; echo ""
  158. eval $str
  159. # combine everything in one instruction out of order and overlaps
  160. str="
  161. xrnlib-cli \
  162. --make-block -offset $offset1 -length $length_block -tag $tag_blocks -plain-text $lorem_ipsum_file -block-file $output_dir/block_file4.xf
  163. "
  164. echo ""; echo $str; echo ""
  165. eval $str
  166. str="
  167. xrnlib-cli \
  168. --combine-blocks -block-file $output_dir/block_file1.xf -block-file $output_dir/block_file0.xf -block-file $output_dir/block_file4.xf -block-file $output_dir/block_file3.xf -block-file $output_dir/block_file2.xf -combined-block-file $output_dir/block_file0123_4.xf
  169. "
  170. echo ""; echo $str; echo ""
  171. eval $str
  172. str="
  173. xrnlib-cli \
  174. --logging-conf -lib-info-log $output_dir/lib_info_block0123_4.json \
  175. --check-complete-block -block-file $output_dir/block_file0123_4.xf
  176. "
  177. echo ""; echo $str; echo ""
  178. eval $str
  179. str="
  180. if ! [ -s $output_dir/lib_info_block0123_4.json ]; then echo FAIL ; exit ; fi ; \
  181. if grep -q FAIL \"$output_dir/lib_info_block0123_4.json\" ; then echo FAIL ; exit ; fi
  182. "
  183. echo ""; echo $str; echo ""
  184. eval $str