runtests.sh 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC2034
  3. # unused variables are global in nature and used in testsupport.sh
  4. test
  5. set -eo pipefail
  6. # Licensed to the Apache Software Foundation (ASF) under one or more
  7. # contributor license agreements. See the NOTICE file distributed with
  8. # this work for additional information regarding copyright ownership.
  9. # The ASF licenses this file to You under the Apache License, Version 2.0
  10. # (the "License"); you may not use this file except in compliance with
  11. # the License. You may obtain a copy of the License at
  12. #
  13. # http://www.apache.org/licenses/LICENSE-2.0
  14. #
  15. # Unless required by applicable law or agreed to in writing, software
  16. # distributed under the License is distributed on an "AS IS" BASIS,
  17. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18. # See the License for the specific language governing permissions and
  19. # limitations under the License.
  20. # shellcheck disable=SC1091
  21. . dev-support/testrun-scripts/testsupport.sh
  22. init
  23. resourceDir=src/test/resources/
  24. logdir=dev-support/testlogs/
  25. azureTestXml=azure-auth-keys.xml
  26. azureTestXmlPath=$resourceDir$azureTestXml
  27. processCount=8
  28. ## SECTION: TEST COMBINATION METHODS
  29. runHNSOAuthDFSTest()
  30. {
  31. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.hnsTestAccountName"]/value' -n $azureTestXmlPath)
  32. PROPERTIES=("fs.azure.account.auth.type")
  33. VALUES=("OAuth")
  34. triggerRun "HNS-OAuth-DFS" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  35. }
  36. runHNSSharedKeyDFSTest()
  37. {
  38. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.hnsTestAccountName"]/value' -n $azureTestXmlPath)
  39. PROPERTIES=("fs.azure.account.auth.type")
  40. VALUES=("SharedKey")
  41. triggerRun "HNS-SharedKey-DFS" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  42. }
  43. runNonHNSSharedKeyDFSTest()
  44. {
  45. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  46. PROPERTIES=("fs.azure.account.auth.type")
  47. VALUES=("SharedKey")
  48. triggerRun "NonHNS-SharedKey-DFS" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  49. }
  50. runAppendBlobHNSOAuthDFSTest()
  51. {
  52. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.hnsTestAccountName"]/value' -n $azureTestXmlPath)
  53. PROPERTIES=("fs.azure.account.auth.type" "fs.azure.test.appendblob.enabled")
  54. VALUES=("OAuth" "true")
  55. triggerRun "AppendBlob-HNS-OAuth-DFS" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  56. }
  57. runNonHNSSharedKeyBlobTest()
  58. {
  59. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  60. fnsBlobConfigFileCheck "$accountName"
  61. PROPERTIES=("fs.azure.account.auth.type")
  62. VALUES=("SharedKey")
  63. triggerRun "NonHNS-SharedKey-Blob" "${accountName}_blob" "$runTest" $processCount "$cleanUpTestContainers"
  64. }
  65. runNonHNSOAuthDFSTest()
  66. {
  67. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  68. PROPERTIES=("fs.azure.account.auth.type")
  69. VALUES=("OAuth")
  70. triggerRun "NonHNS-OAuth-DFS" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  71. }
  72. runNonHNSOAuthBlobTest()
  73. {
  74. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  75. fnsBlobConfigFileCheck "$accountName"
  76. PROPERTIES=("fs.azure.account.auth.type")
  77. VALUES=("OAuth")
  78. triggerRun "NonHNS-OAuth-Blob" "${accountName}_blob" "$runTest" $processCount "$cleanUpTestContainers"
  79. }
  80. runAppendBlobNonHNSOAuthBlobTest()
  81. {
  82. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  83. fnsBlobConfigFileCheck "$accountName"
  84. PROPERTIES=("fs.azure.account.auth.type" "fs.azure.test.appendblob.enabled")
  85. VALUES=("OAuth" "true")
  86. triggerRun "AppendBlob-NonHNS-OAuth-Blob" "${accountName}_blob" "$runTest" $processCount "$cleanUpTestContainers"
  87. }
  88. runHNSOAuthDFSIngressBlobTest()
  89. {
  90. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.hnsTestAccountName"]/value' -n $azureTestXmlPath)
  91. PROPERTIES=("fs.azure.account.auth.type" "fs.azure.ingress.service.type")
  92. VALUES=("OAuth" "blob")
  93. triggerRun "HNS-Oauth-DFS-IngressBlob" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  94. }
  95. runNonHNSOAuthDFSIngressBlobTest()
  96. {
  97. accountName=$(xmlstarlet sel -t -v '//property[name = "fs.azure.nonHnsTestAccountName"]/value' -n $azureTestXmlPath)
  98. PROPERTIES=("fs.azure.account.auth.type" "fs.azure.ingress.service.type")
  99. VALUES=("OAuth" "blob")
  100. triggerRun "NonHNS-OAuth-DFS-IngressBlob" "$accountName" "$runTest" $processCount "$cleanUpTestContainers"
  101. }
  102. runTest=false
  103. cleanUpTestContainers=false
  104. echo 'Ensure below are complete before running script:'
  105. echo '1. Account specific settings file is present.'
  106. echo ' Copy accountName_settings.xml.template to accountName_settings.xml'
  107. echo ' where accountName in copied file name should be the test account name without domain'
  108. echo ' (accountName_settings.xml.template is present in src/test/resources/accountName_settings'
  109. echo ' folder. New account settings file to be added to same folder.)'
  110. echo ' Follow instructions in the template to populate settings correctly for the account'
  111. echo '2. In azure-auth-keys.xml, update properties fs.azure.hnsTestAccountName and fs.azure.nonHnsTestAccountName'
  112. echo ' where accountNames should be the test account names without domain'
  113. echo ' '
  114. echo ' '
  115. echo 'Choose action:'
  116. echo '[Note - SET_ACTIVE_TEST_CONFIG will help activate the config for IDE/single test class runs]'
  117. select scriptMode in SET_ACTIVE_TEST_CONFIG RUN_TEST CLEAN_UP_OLD_TEST_CONTAINERS SET_OR_CHANGE_TEST_ACCOUNT PRINT_LOG4J_LOG_PATHS_FROM_LAST_RUN
  118. do
  119. case $scriptMode in
  120. SET_ACTIVE_TEST_CONFIG)
  121. runTest=false
  122. break
  123. ;;
  124. RUN_TEST)
  125. runTest=true
  126. read -r -p "Enter parallel test run process count [default - 8]: " processCount
  127. processCount=${processCount:-8}
  128. break
  129. ;;
  130. CLEAN_UP_OLD_TEST_CONTAINERS)
  131. runTest=false
  132. cleanUpTestContainers=true
  133. break
  134. ;;
  135. SET_OR_CHANGE_TEST_ACCOUNT)
  136. runTest=false
  137. cleanUpTestContainers=false
  138. accountSettingsFile="src/test/resources/azure-auth-keys.xml"
  139. if [[ ! -f "$accountSettingsFile" ]];
  140. then
  141. logOutput "No settings present. Creating new settings file ($accountSettingsFile) from template"
  142. cp src/test/resources/azure-auth-keys.xml.template $accountSettingsFile
  143. fi
  144. vi $accountSettingsFile
  145. exit 0
  146. break
  147. ;;
  148. PRINT_LOG4J_LOG_PATHS_FROM_LAST_RUN)
  149. runTest=false
  150. cleanUpTestContainers=false
  151. logFilePaths=/tmp/logPaths
  152. find target/ -name "*output.txt" > $logFilePaths
  153. logOutput "$(cat $logFilePaths)"
  154. rm $logFilePaths
  155. exit 0
  156. break
  157. ;;
  158. *) logOutput "ERROR: Invalid selection"
  159. ;;
  160. esac
  161. done
  162. ## SECTION: COMBINATION DEFINITIONS AND TRIGGER
  163. echo ' '
  164. echo 'Set the active test combination to run the action:'
  165. select combo in HNS-OAuth-DFS HNS-SharedKey-DFS NonHNS-SharedKey-DFS AppendBlob-HNS-OAuth-DFS NonHNS-SharedKey-Blob NonHNS-OAuth-DFS NonHNS-OAuth-Blob AppendBlob-NonHNS-OAuth-Blob HNS-Oauth-DFS-IngressBlob NonHNS-Oauth-DFS-IngressBlob AllCombinationsTestRun Quit
  166. do
  167. case $combo in
  168. HNS-OAuth-DFS)
  169. runHNSOAuthDFSTest
  170. break
  171. ;;
  172. HNS-SharedKey-DFS)
  173. runHNSSharedKeyDFSTest
  174. break
  175. ;;
  176. NonHNS-SharedKey-DFS)
  177. runNonHNSSharedKeyDFSTest
  178. break
  179. ;;
  180. AppendBlob-HNS-OAuth-DFS)
  181. runAppendBlobHNSOAuthDFSTest
  182. break
  183. ;;
  184. NonHNS-SharedKey-Blob)
  185. runNonHNSSharedKeyBlobTest
  186. break
  187. ;;
  188. NonHNS-OAuth-DFS)
  189. runNonHNSOAuthDFSTest
  190. break
  191. ;;
  192. NonHNS-OAuth-Blob)
  193. runNonHNSOAuthBlobTest
  194. break
  195. ;;
  196. AppendBlob-NonHNS-OAuth-Blob)
  197. runAppendBlobNonHNSOAuthBlobTest
  198. break
  199. ;;
  200. HNS-Oauth-DFS-IngressBlob)
  201. runHNSOAuthDFSIngressBlobTest
  202. break
  203. ;;
  204. NonHNS-Oauth-DFS-IngressBlob)
  205. runNonHNSOAuthDFSIngressBlobTest
  206. break
  207. ;;
  208. AllCombinationsTestRun)
  209. if [ $runTest == false ]
  210. then
  211. logOutput "ERROR: Invalid selection for SET_ACTIVE_TEST_CONFIG. This is applicable only for RUN_TEST."
  212. break
  213. fi
  214. runHNSOAuthDFSTest
  215. runHNSSharedKeyDFSTest
  216. runNonHNSSharedKeyDFSTest
  217. runAppendBlobHNSOAuthDFSTest
  218. runNonHNSSharedKeyBlobTest
  219. runNonHNSOAuthDFSTest
  220. runNonHNSOAuthBlobTest
  221. runAppendBlobNonHNSOAuthBlobTest
  222. runHNSOAuthDFSIngressBlobTest
  223. runNonHNSOAuthDFSIngressBlobTest
  224. break
  225. ;;
  226. Quit)
  227. exit 0
  228. ;;
  229. *) logOutput "ERROR: Invalid selection"
  230. ;;
  231. esac
  232. done
  233. if [ $runTest == true ]
  234. then
  235. printAggregate
  236. fi