/tests/testsuite_default_SharedObject.py

https://github.com/sstsimulator/sst-core · Python · 236 lines · 106 code · 61 blank · 69 comment · 1 complexity · 23f2e212fec0914f804ebb6463dbd535 MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. from sst_unittest import *
  5. from sst_unittest_support import *
  6. ################################################################################
  7. # Code to support a single instance module initialize, must be called setUp method
  8. module_init = 0
  9. module_sema = threading.Semaphore()
  10. def initializeTestModule_SingleInstance(class_inst):
  11. global module_init
  12. global module_sema
  13. module_sema.acquire()
  14. if module_init != 1:
  15. # Put your single instance Init Code Here
  16. module_init = 1
  17. module_sema.release()
  18. ################################################################################
  19. class testcase_SharedObject(SSTTestCase):
  20. def initializeClass(self, testName):
  21. super(type(self), self).initializeClass(testName)
  22. # Put test based setup code here. it is called before testing starts
  23. # NOTE: This method is called once for every test
  24. def setUp(self):
  25. super(type(self), self).setUp()
  26. initializeTestModule_SingleInstance(self)
  27. # Put test based setup code here. it is called once before every test
  28. def tearDown(self):
  29. # Put test based teardown code here. it is called once after every test
  30. super(type(self), self).tearDown()
  31. #####
  32. # SharedArray Tests
  33. # Full Initialization
  34. # single - only ID 0 initializes array
  35. # init_verify
  36. # fe_verify
  37. # no_verify
  38. # multi - also has ID N-1 initialize array
  39. # no conflict - both IDs write same data
  40. # conflict - IDs write different data
  41. # init_verify
  42. # fe_verify
  43. # no_verify
  44. # Partial initialize (everyone initializes their own portion)
  45. # late_write = true
  46. # do not publish = true
  47. # nopub and late_write true
  48. # double_initialize
  49. # Late_initialize
  50. def test_SharedObject_array_full_single_init(self):
  51. self.sharedobject_test_template("array_full_single_init", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true")
  52. def test_SharedObject_array_full_single_fe(self):
  53. self.sharedobject_test_template("array_full_single_fe", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=verify_mode:FE")
  54. def test_SharedObject_array_full_single_none(self):
  55. self.sharedobject_test_template("array_full_single_none", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=verify_mode:NONE")
  56. def test_SharedObject_array_full_multi(self):
  57. self.sharedobject_test_template("array_full_multi", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true")
  58. def test_SharedObject_array_full_multi_conflict_init(self):
  59. self.sharedobject_test_template("array_full_multi_conflict_init", 1, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true")
  60. def test_SharedObject_array_full_multi_conflict_fe(self):
  61. self.sharedobject_test_template("array_full_multi_conflict_fe", 1, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:FE")
  62. def test_SharedObject_array_full_multi_conflict_none(self):
  63. self.sharedobject_test_template("array_full_multi_conflict_none", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:NONE")
  64. def test_SharedObject_array_partial(self):
  65. self.sharedobject_test_template("array_partial", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:false")
  66. def test_SharedObject_array_partial_nopub(self):
  67. self.sharedobject_test_template("array_partial_nopub", 0, "--param=object_type:array --param=num_entities:12 --param=full_initialization:false --param=publish:false")
  68. def test_SharedObject_array_partial_late(self):
  69. self.sharedobject_test_template("array_partial_late", 1, "--param=object_type:array --param=num_entities:12 --param=full_initialization:false --param=late_write:true")
  70. def test_SharedObject_array_partial_late_nopub(self):
  71. self.sharedobject_test_template("array_partial_late_nopub", 1, "--param=object_type:array --param=num_entities:12 --param=full_initialization:false --param=late_write:true --param=publish:false")
  72. def test_SharedObject_array_partial_doubleinit(self):
  73. self.sharedobject_test_template("array_partial_doubleinit", 1, "--param=object_type:array --param=num_entities:12 --param=full_initialization:false --param=double_initialize:true")
  74. def test_SharedObject_array_late_initialize(self):
  75. self.sharedobject_test_template("array_late_initialize", 1, "--param=object_type:array --param=num_entities:12 --param=late_initialize:true")
  76. # SharedMap Tests
  77. # Full Initialization
  78. # single - only ID 0 initializes map
  79. # init_verify
  80. # fe_verify
  81. # no_verify
  82. # multi - also has ID N-1 initialize map
  83. # no conflict - both IDs write same data
  84. # conflict - IDs write different data
  85. # init_verify
  86. # fe_verify
  87. # no_verify
  88. # Partial initialize (everyone initializes their own portion)
  89. # late_write = true
  90. # do not publish = true
  91. # nopub and late_write true
  92. # double_initialize
  93. # Late_initialize
  94. def test_SharedObject_map_full_single_init(self):
  95. self.sharedobject_test_template("map_full_single_init", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true")
  96. def test_SharedObject_map_full_single_fe(self):
  97. self.sharedobject_test_template("map_full_single_fe", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=verify_mode:FE")
  98. def test_SharedObject_map_full_single_none(self):
  99. self.sharedobject_test_template("map_full_single_none", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=verify_mode:NONE")
  100. def test_SharedObject_map_full_multi(self):
  101. self.sharedobject_test_template("map_full_multi", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true")
  102. def test_SharedObject_map_full_multi_conflict_init(self):
  103. self.sharedobject_test_template("map_full_multi_conflict_init", 1, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true")
  104. def test_SharedObject_map_full_multi_conflict_fe(self):
  105. self.sharedobject_test_template("map_full_multi_conflict_fe", 1, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:FE")
  106. def test_SharedObject_map_full_multi_conflict_none(self):
  107. self.sharedobject_test_template("map_full_multi_conflict_none", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:NONE")
  108. def test_SharedObject_map_partial(self):
  109. self.sharedobject_test_template("map_partial", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:false")
  110. def test_SharedObject_map_partial_nopub(self):
  111. self.sharedobject_test_template("map_partial_nopub", 0, "--param=object_type:map --param=num_entities:12 --param=full_initialization:false --param=publish:false")
  112. def test_SharedObject_map_partial_late(self):
  113. self.sharedobject_test_template("map_partial_late", 1, "--param=object_type:map --param=num_entities:12 --param=full_initialization:false --param=late_write:true")
  114. def test_SharedObject_map_partial_late_nopub(self):
  115. self.sharedobject_test_template("map_partial_late_nopub", 1, "--param=object_type:map --param=num_entities:12 --param=full_initialization:false --param=late_write:true --param=publish:false")
  116. def test_SharedObject_map_partial_doubleinit(self):
  117. self.sharedobject_test_template("map_partial_doubleinit", 1, "--param=object_type:map --param=num_entities:12 --param=full_initialization:false --param=double_initialize:true")
  118. def test_SharedObject_map_late_initialize(self):
  119. self.sharedobject_test_template("map_late_initialize", 1, "--param=object_type:map --param=num_entities:12 --param=late_initialize:true")
  120. # SharedSet Tests
  121. # Full Initialization
  122. # single - only ID 0 initializes set
  123. # init_verify
  124. # fe_verify
  125. # no_verify
  126. # multi - also has ID N-1 initialize set
  127. # no conflict - both IDs write same data
  128. # conflict - IDs write different data
  129. # init_verify
  130. # fe_verify
  131. # no_verify
  132. # Partial initialize (everyone initializes their own portion)
  133. # late_write = true
  134. # do not publish = true
  135. # nopub and late_write true
  136. # double_initialize
  137. # Late_initialize
  138. def test_SharedObject_set_full_single_init(self):
  139. self.sharedobject_test_template("set_full_single_init", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true")
  140. def test_SharedObject_set_full_single_fe(self):
  141. self.sharedobject_test_template("set_full_single_fe", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=verify_mode:FE")
  142. def test_SharedObject_set_full_single_none(self):
  143. self.sharedobject_test_template("set_full_single_none", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=verify_mode:NONE")
  144. def test_SharedObject_set_full_multi(self):
  145. self.sharedobject_test_template("set_full_multi", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true")
  146. def test_SharedObject_set_full_multi_conflict_init(self):
  147. self.sharedobject_test_template("set_full_multi_conflict_init", 1, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true")
  148. def test_SharedObject_set_full_multi_conflict_fe(self):
  149. self.sharedobject_test_template("set_full_multi_conflict_fe", 1, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:FE")
  150. def test_SharedObject_set_full_multi_conflict_none(self):
  151. self.sharedobject_test_template("set_full_multi_conflict_none", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:true --param=multiple_initializers:true --param=conflicting_write:true --param=verify_mode:NONE")
  152. def test_SharedObject_set_partial(self):
  153. self.sharedobject_test_template("set_partial", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:false")
  154. def test_SharedObject_set_partial_nopub(self):
  155. self.sharedobject_test_template("set_partial_nopub", 0, "--param=object_type:set --param=num_entities:12 --param=full_initialization:false --param=publish:false")
  156. def test_SharedObject_set_partial_late(self):
  157. self.sharedobject_test_template("set_partial_late", 1, "--param=object_type:set --param=num_entities:12 --param=full_initialization:false --param=late_write:true")
  158. def test_SharedObject_set_partial_late_nopub(self):
  159. self.sharedobject_test_template("set_partial_late_nopub", 1, "--param=object_type:set --param=num_entities:12 --param=full_initialization:false --param=late_write:true --param=publish:false")
  160. def test_SharedObject_set_partial_doubleinit(self):
  161. self.sharedobject_test_template("set_partial_doubleinit", 1, "--param=object_type:set --param=num_entities:12 --param=full_initialization:false --param=double_initialize:true")
  162. def test_SharedObject_set_late_initialize(self):
  163. self.sharedobject_test_template("set_late_initialize", 1, "--param=object_type:set --param=num_entities:12 --param=late_initialize:true")
  164. #####
  165. def sharedobject_test_template(self, testtype, exp_rc, options):
  166. testsuitedir = self.get_testsuite_dir()
  167. outdir = test_output_get_run_dir()
  168. model_options = '--model-options="{0}"'.format(options)
  169. # Set the various file paths
  170. sdlfile = "{0}/test_SharedObject.py".format(testsuitedir)
  171. #reffile = "{0}/sharedobject_tests/refFiles/test_{1}.out".format(testsuitedir, testtype)
  172. outfile = "{0}/test_SharedObject_{1}.out".format(outdir, testtype)
  173. self.run_sst(sdlfile, outfile, other_args=model_options, expected_rc = exp_rc)
  174. # No need to perform test since we're just looking for it to
  175. # complete without an error