build_test.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. #!/usr/bin/env python3
  2. import os
  3. from avocado import skipUnless
  4. from avocado.utils import path
  5. from cibase import CIBaseTest
  6. UMOCI_AVAILABLE = True
  7. SKOPEO_AVAILABLE = True
  8. try:
  9. path.find_command('umoci')
  10. except path.CmdNotFoundError:
  11. UMOCI_AVAILABLE = False
  12. try:
  13. path.find_command('skopeo')
  14. except path.CmdNotFoundError:
  15. SKOPEO_AVAILABLE = False
  16. class ReproTest(CIBaseTest):
  17. """
  18. Test cached base repository
  19. :avocado: tags=repro,full
  20. """
  21. def test_repro_signed(self):
  22. targets = [
  23. 'mc:de0-nano-soc-bullseye:isar-image-base',
  24. 'mc:qemuarm64-bullseye:isar-image-base'
  25. ]
  26. self.perform_repro_test(targets, 1)
  27. def test_repro_unsigned(self):
  28. targets = [
  29. 'mc:qemuamd64-bullseye:isar-image-base',
  30. 'mc:qemuarm-bullseye:isar-image-base'
  31. ]
  32. self.perform_repro_test(targets, 0)
  33. class CcacheTest(CIBaseTest):
  34. """
  35. Test rebuild speed improve with ccache
  36. :avocado: tags=ccache
  37. """
  38. def test_ccache_rebuild(self):
  39. targets = ['mc:de0-nano-soc-bullseye:isar-image-base']
  40. self.perform_ccache_test(targets)
  41. class CrossTest(CIBaseTest):
  42. """
  43. Start cross build for the defined set of configurations
  44. :avocado: tags=cross,fast,full
  45. """
  46. def test_cross(self):
  47. targets = [
  48. 'mc:qemuarm-buster:isar-image-base',
  49. 'mc:qemuarm-bullseye:isar-image-base',
  50. 'mc:qemuarm64-bullseye:isar-image-base',
  51. 'mc:de0-nano-soc-bullseye:isar-image-base',
  52. 'mc:stm32mp15x-buster:isar-image-base',
  53. 'mc:rpi-stretch:isar-image-base'
  54. ]
  55. self.perform_build_test(targets, 1, None)
  56. def test_cross_ubuntu(self):
  57. targets = [
  58. 'mc:qemuarm64-focal:isar-image-base'
  59. ]
  60. try:
  61. self.perform_build_test(targets, 1, None)
  62. except:
  63. self.cancel('KFAIL')
  64. def test_cross_bookworm(self):
  65. targets = [
  66. 'mc:qemuarm-bookworm:isar-image-base'
  67. ]
  68. try:
  69. self.perform_build_test(targets, 1, None)
  70. except:
  71. self.cancel('KFAIL')
  72. class SdkTest(CIBaseTest):
  73. """
  74. In addition test SDK creation
  75. :avocado: tags=sdk,fast,full
  76. """
  77. def test_sdk(self):
  78. targets = ['mc:qemuarm-bullseye:isar-image-base']
  79. self.perform_build_test(targets, 1, 'do_populate_sdk')
  80. class NoCrossTest(CIBaseTest):
  81. """
  82. Start non-cross build for the defined set of configurations
  83. :avocado: tags=nocross,full
  84. """
  85. def test_nocross(self):
  86. targets = [
  87. 'mc:qemuarm-buster:isar-image-base',
  88. 'mc:qemuarm-bullseye:isar-image-base',
  89. 'mc:qemuarm64-bullseye:isar-image-base',
  90. 'mc:qemui386-stretch:isar-image-base',
  91. 'mc:qemui386-buster:isar-image-base',
  92. 'mc:qemui386-bullseye:isar-image-base',
  93. 'mc:qemuamd64-buster:isar-image-base',
  94. 'mc:qemuamd64-bullseye:isar-image-base',
  95. 'mc:qemuamd64-bullseye-tgz:isar-image-base',
  96. 'mc:qemuamd64-bullseye-cpiogz:isar-image-base',
  97. 'mc:qemuamd64-bullseye:isar-initramfs',
  98. 'mc:qemumipsel-buster:isar-image-base',
  99. 'mc:qemumipsel-bullseye:isar-image-base',
  100. 'mc:qemuriscv64-sid-ports:isar-image-base',
  101. 'mc:sifive-fu540-sid-ports:isar-image-base',
  102. 'mc:imx6-sabrelite-bullseye:isar-image-ubi',
  103. 'mc:phyboard-mira-bullseye:isar-image-ubi',
  104. 'mc:rpi-stretch:isar-image-base',
  105. 'mc:hikey-bullseye:isar-image-base',
  106. 'mc:virtualbox-bullseye:isar-image-base',
  107. 'mc:bananapi-bullseye:isar-image-base',
  108. 'mc:nanopi-neo-bullseye:isar-image-base',
  109. 'mc:stm32mp15x-bullseye:isar-image-base',
  110. 'mc:qemuamd64-focal:isar-image-base'
  111. ]
  112. # Cleanup after cross build
  113. self.deletetmp(self.params.get('build_dir',
  114. default=os.path.dirname(__file__) + '/../../build'))
  115. self.perform_build_test(targets, 0, None)
  116. def test_nocross_bookworm(self):
  117. targets = [
  118. 'mc:qemuamd64-bookworm:isar-image-base',
  119. 'mc:qemuarm-bookworm:isar-image-base',
  120. 'mc:qemui386-bookworm:isar-image-base',
  121. 'mc:qemumipsel-bookworm:isar-image-base',
  122. 'mc:hikey-bookworm:isar-image-base'
  123. ]
  124. try:
  125. self.perform_build_test(targets, 0, None)
  126. except:
  127. self.cancel('KFAIL')
  128. class RebuildTest(CIBaseTest):
  129. """
  130. Test image rebuild
  131. :avocado: tags=rebuild,fast,full
  132. """
  133. def test_rebuild(self):
  134. is_cross_build = int(self.params.get('cross', default=0))
  135. layerdir_core = self.getlayerdir('core')
  136. dpkgbase_file = layerdir_core + '/classes/dpkg-base.bbclass'
  137. self.backupfile(dpkgbase_file)
  138. with open(dpkgbase_file, 'a') as file:
  139. file.write('do_fetch_append() {\n\n}')
  140. try:
  141. self.perform_build_test('mc:qemuamd64-bullseye:isar-image-base',
  142. is_cross_build, None)
  143. finally:
  144. self.restorefile(dpkgbase_file)
  145. class ContainerImageTest(CIBaseTest):
  146. """
  147. Test containerized images creation
  148. :avocado: tags=containerbuild,fast,full,container
  149. """
  150. @skipUnless(UMOCI_AVAILABLE and SKOPEO_AVAILABLE, 'umoci/skopeo not found')
  151. def test_nocross(self):
  152. targets = [
  153. 'mc:container-amd64-stretch:isar-image-base',
  154. 'mc:container-amd64-buster:isar-image-base',
  155. 'mc:container-amd64-bullseye:isar-image-base',
  156. 'mc:container-amd64-bookworm:isar-image-base'
  157. ]
  158. self.perform_container_test(targets, None)
  159. class ContainerSdkTest(CIBaseTest):
  160. """
  161. Test SDK container image creation
  162. :avocado: tags=containersdk,fast,full,container
  163. """
  164. @skipUnless(UMOCI_AVAILABLE and SKOPEO_AVAILABLE, 'umoci/skopeo not found')
  165. def test_container_sdk(self):
  166. targets = ['mc:container-amd64-stretch:isar-image-base']
  167. self.perform_container_test(targets, 'do_populate_sdk')