BuilderConfigurationTests.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <native/utilities/BuilderConfigurationManager.h>
  9. #include <native/unittests/UnitTestUtils.h>
  10. #if !defined(Q_MOC_RUN)
  11. #include <AzCore/UnitTest/TestTypes.h>
  12. #endif
  13. #include <QTemporaryDir>
  14. class BuilderConfigurationTests
  15. : public ::UnitTest::LeakDetectionFixture
  16. {
  17. public:
  18. BuilderConfigurationTests()
  19. {
  20. }
  21. virtual ~BuilderConfigurationTests()
  22. {
  23. }
  24. void SetUp() override
  25. {
  26. }
  27. void TearDown() override
  28. {
  29. }
  30. void CreateTestConfig(QString iniStr, AssetProcessor::BuilderConfigurationManager& configurationManager)
  31. {
  32. QDir tempPath(m_tempDir.path());
  33. UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath(AssetProcessor::BuilderConfigFile).toUtf8().data(), iniStr);
  34. configurationManager.LoadConfiguration(tempPath.absoluteFilePath(AssetProcessor::BuilderConfigFile).toUtf8().data());
  35. }
  36. QTemporaryDir m_tempDir;
  37. };
  38. const char SampleConfig[] =
  39. "[Job PNG Compile]\n"
  40. "checkServer=true\n"
  41. "priority=3\n"
  42. "critical=true\n"
  43. "checkExclusiveLock=true\n"
  44. "fingerprint=finger\n"
  45. "jobFingerprint=somejob7\n"
  46. "params=something=true,otherthing,somethingelse=7\n"
  47. "[Builder Image Worker Builder]\n"
  48. "fingerprint=fingerprint11\n"
  49. "version=7\n"
  50. "patterns=*.png\n"
  51. "[Job TIFF Compile]\n"
  52. "checkServer=false\n"
  53. "priority=9\n"
  54. "critical=false\n"
  55. "checkExclusiveLock=true\n"
  56. "fingerprint=fingerprint1\n"
  57. "params=something=false,otheing,somethingelse=6\n";
  58. TEST_F(BuilderConfigurationTests, TestBuilderConfig_LoadConfig_Success)
  59. {
  60. AssetProcessor::BuilderConfigurationManager builderConfig;
  61. CreateTestConfig(SampleConfig, builderConfig);
  62. ASSERT_TRUE(builderConfig.IsLoaded());
  63. }
  64. TEST_F(BuilderConfigurationTests, TestBuilderConfig_InvalidKey_NoUpdate)
  65. {
  66. AssetProcessor::BuilderConfigurationManager builderConfig;
  67. CreateTestConfig(SampleConfig, builderConfig);
  68. AssetBuilderSDK::JobDescriptor baseDescriptor;
  69. AssetBuilderSDK::JobDescriptor testDescriptor;
  70. // Verify an undefined key does not update our data
  71. ASSERT_FALSE(builderConfig.UpdateJobDescriptor("False Key", testDescriptor));
  72. ASSERT_EQ(testDescriptor.m_checkServer, baseDescriptor.m_checkServer);
  73. ASSERT_EQ(testDescriptor.m_critical, baseDescriptor.m_critical);
  74. ASSERT_EQ(testDescriptor.m_priority, baseDescriptor.m_priority);
  75. ASSERT_EQ(testDescriptor.m_checkExclusiveLock, baseDescriptor.m_checkExclusiveLock);
  76. ASSERT_EQ(testDescriptor.m_additionalFingerprintInfo, baseDescriptor.m_additionalFingerprintInfo);
  77. ASSERT_EQ(testDescriptor.m_jobParameters, baseDescriptor.m_jobParameters);
  78. }
  79. TEST_F(BuilderConfigurationTests, TestBuilderConfig_JobEntry_Success)
  80. {
  81. AssetProcessor::BuilderConfigurationManager builderConfig;
  82. CreateTestConfig(SampleConfig, builderConfig);
  83. AssetBuilderSDK::JobDescriptor testDescriptor;
  84. // Verify a JobEntry makes the expected updates from data
  85. ASSERT_TRUE(builderConfig.UpdateJobDescriptor("PNG Compile", testDescriptor));
  86. ASSERT_EQ(testDescriptor.m_checkServer, true);
  87. ASSERT_EQ(testDescriptor.m_critical, true);
  88. ASSERT_EQ(testDescriptor.m_priority, 3);
  89. ASSERT_EQ(testDescriptor.m_checkExclusiveLock, true);
  90. ASSERT_EQ(testDescriptor.m_additionalFingerprintInfo, "finger");
  91. ASSERT_EQ(testDescriptor.m_jobParameters[AZ_CRC("something", 0x09da31fb)], "true");
  92. ASSERT_EQ(testDescriptor.m_jobParameters[AZ_CRC("somethingelse", 0x237edebb)], "7");
  93. ASSERT_NE(testDescriptor.m_jobParameters.find(AZ_CRC("otherthing", 0x6f2d0a4a)), testDescriptor.m_jobParameters.end());
  94. }
  95. TEST_F(BuilderConfigurationTests, TestBuilderConfig_SecondJobEntry_Success)
  96. {
  97. AssetProcessor::BuilderConfigurationManager builderConfig;
  98. CreateTestConfig(SampleConfig, builderConfig);
  99. AssetBuilderSDK::JobDescriptor testDescriptor;
  100. // Verify a second JobEntry defined in an .ini file makes the expected updates from data
  101. ASSERT_TRUE(builderConfig.UpdateJobDescriptor("TIFF Compile", testDescriptor));
  102. ASSERT_EQ(testDescriptor.m_checkServer, false);
  103. ASSERT_EQ(testDescriptor.m_critical, false);
  104. ASSERT_EQ(testDescriptor.m_priority, 9);
  105. ASSERT_EQ(testDescriptor.m_checkExclusiveLock, true);
  106. ASSERT_EQ(testDescriptor.m_additionalFingerprintInfo, "fingerprint1");
  107. ASSERT_EQ(testDescriptor.m_jobParameters[AZ_CRC("something", 0x09da31fb)], "false");
  108. ASSERT_EQ(testDescriptor.m_jobParameters[AZ_CRC("somethingelse", 0x237edebb)], "6");
  109. ASSERT_NE(testDescriptor.m_jobParameters.find(AZ_CRC("otheing", 0xba35d565)), testDescriptor.m_jobParameters.end());
  110. }
  111. TEST_F(BuilderConfigurationTests, TestBuilderConfig_BuilderEntry_Success)
  112. {
  113. AssetProcessor::BuilderConfigurationManager builderConfig;
  114. CreateTestConfig(SampleConfig, builderConfig);
  115. // Verify a Builder makes the expected updates from data
  116. AssetBuilderSDK::AssetBuilderDesc testBuilder;
  117. ASSERT_TRUE(builderConfig.UpdateBuilderDescriptor("Image Worker Builder", testBuilder));
  118. ASSERT_EQ(testBuilder.m_analysisFingerprint, "fingerprint11");
  119. ASSERT_EQ(testBuilder.m_version, 7);
  120. ASSERT_EQ(testBuilder.m_patterns.size(), 1);
  121. ASSERT_EQ(testBuilder.m_patterns[0].m_pattern, "*.png");
  122. }