int-log-compiler.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/env bash
  2. #;**********************************************************************;
  3. # SPDX-License-Identifier: BSD-2-Clause
  4. #
  5. # Copyright (c) 2017 - 2020, Intel Corporation
  6. # Copyright (c) 2018 - 2020, Fraunhofer SIT sponsored by Infineon Technologies AG
  7. #
  8. # All rights reserved.
  9. #;**********************************************************************;
  10. # source the int-log-compiler-common sript
  11. . ${srcdir}/script/int-log-compiler-common.sh
  12. sanity_test
  13. # start simulator if needed
  14. if [[ ${INTEGRATION_TCTI} == "mssim" || ${INTEGRATION_TCTI} == "swtpm" ]]; then
  15. echo "Trying to start simulator ${INTEGRATION_TCTI}"
  16. try_simulator_start
  17. fi
  18. TPM20TEST_SOCKET_PORT="${SIM_PORT_DATA}"
  19. TPM20TEST_TCTI="${INTEGRATION_TCTI}:host=${TPM20TEST_SOCKET_ADDRESS},port=${TPM20TEST_SOCKET_PORT}"
  20. while true; do
  21. # Some debug prints
  22. echo "TPM20TEST_TCTI_NAME=${TPM20TEST_TCTI_NAME}"
  23. echo "TPM20TEST_DEVICE_FILE=${TPM20TEST_DEVICE_FILE}"
  24. echo "TPM20TEST_SOCKET_ADDRESS=${TPM20TEST_SOCKET_ADDRESS}"
  25. echo "TPM20TEST_SOCKET_PORT=${TPM20TEST_SOCKET_PORT}"
  26. echo "TPM20TEST_TCTI=${TPM20TEST_TCTI}"
  27. if [ "${TPM20TEST_TCTI_NAME}" != "device" ]; then
  28. env TPM20TEST_TCTI_NAME="${TPM20TEST_TCTI_NAME}" \
  29. TPM20TEST_SOCKET_ADDRESS="${TPM20TEST_SOCKET_ADDRESS}" \
  30. TPM20TEST_SOCKET_PORT="${TPM20TEST_SOCKET_PORT}" \
  31. TPM20TEST_TCTI="${TPM20TEST_TCTI}" \
  32. G_MESSAGES_DEBUG=all ./test/helper/tpm_startup
  33. if [ $? -ne 0 ]; then
  34. echo "TPM_StartUp failed"
  35. ret=99
  36. break
  37. fi
  38. else
  39. env TPM20TEST_TCTI_NAME=${TPM20TEST_TCTI_NAME} \
  40. TPM20TEST_DEVICE_FILE=${TPM20TEST_DEVICE_FILE} \
  41. G_MESSAGES_DEBUG=all ./test/helper/tpm_transientempty
  42. if [ $? -ne 0 ]; then
  43. echo "TPM transient area not empty => skipping"
  44. ret=99
  45. break
  46. fi
  47. fi
  48. TPMSTATE_FILE1=${TEST_BIN}_state1
  49. TPMSTATE_FILE2=${TEST_BIN}_state2
  50. env TPM20TEST_TCTI_NAME="${TPM20TEST_TCTI_NAME}" \
  51. TPM20TEST_SOCKET_ADDRESS="${TPM20TEST_SOCKET_ADDRESS}" \
  52. TPM20TEST_SOCKET_PORT="${TPM20TEST_SOCKET_PORT}" \
  53. TPM20TEST_TCTI="${TPM20TEST_TCTI}" \
  54. TPM20TEST_DEVICE_FILE="${TPM20TEST_DEVICE_FILE}" \
  55. G_MESSAGES_DEBUG=all ./test/helper/tpm_dumpstate>${TPMSTATE_FILE1}
  56. if [ $? -ne 0 ]; then
  57. echo "Error during dumpstate"
  58. ret=99
  59. break
  60. fi
  61. echo "Execute the test script"
  62. env TPM20TEST_TCTI_NAME="${TPM20TEST_TCTI_NAME}" \
  63. TPM20TEST_SOCKET_ADDRESS="${TPM20TEST_SOCKET_ADDRESS}" \
  64. TPM20TEST_SOCKET_PORT="${TPM20TEST_SOCKET_PORT}" \
  65. TPM20TEST_TCTI="${TPM20TEST_TCTI}" \
  66. TPM20TEST_DEVICE_FILE="${TPM20TEST_DEVICE_FILE}" \
  67. G_MESSAGES_DEBUG=all ${@: -1}
  68. ret=$?
  69. echo "Script returned $ret"
  70. #We check the state before a reboot to see if transients and NV were chagned.
  71. env TPM20TEST_TCTI_NAME="${TPM20TEST_TCTI_NAME}" \
  72. TPM20TEST_SOCKET_ADDRESS="${TPM20TEST_SOCKET_ADDRESS}" \
  73. TPM20TEST_SOCKET_PORT="${TPM20TEST_SOCKET_PORT}" \
  74. TPM20TEST_TCTI="${TPM20TEST_TCTI}" \
  75. TPM20TEST_DEVICE_FILE="${TPM20TEST_DEVICE_FILE}" \
  76. G_MESSAGES_DEBUG=all ./test/helper/tpm_dumpstate>${TPMSTATE_FILE2}
  77. if [ $? -ne 0 ]; then
  78. echo "Error during dumpstate"
  79. ret=99
  80. break
  81. fi
  82. if [ "$(cat ${TPMSTATE_FILE1})" != "$(cat ${TPMSTATE_FILE2})" ]; then
  83. echo "TPM changed state during test"
  84. echo "State before ($TPMSTATE_FILE1):"
  85. cat ${TPMSTATE_FILE1}
  86. echo "State after ($TPMSTATE_FILE2):"
  87. cat ${TPMSTATE_FILE2}
  88. ret=1
  89. break
  90. fi
  91. break
  92. done
  93. # This sleep is sadly necessary: If we kill the tabrmd w/o sleeping for a
  94. # second after the test finishes the simulator will die too. Bug in the
  95. # simulator?
  96. sleep 1
  97. # teardown
  98. daemon_stop ${SIM_PID_FILE}
  99. rm -rf ${SIM_TMP_DIR} ${SIM_PID_FILE}
  100. exit $ret