def test_stuff(self): iterations = ['iter0', 'iter1', 'iter2', 'iter3'] with CodeBlockTimer("test", db_name=self.db_name) as timer: run_id = _m.run_id for i, iter_name in enumerate(iterations): with CodeBlockTimer(iter_name, db_name=self.db_name) as inner: z = math.factorial(10) self._verifyEvents(run_id, ['test', ] + ["test:{}".format(x) for x in iterations])
def test_generate_import_export_timings(self, source_ms, dest_ms, num_assets): """ Generate timings for different amounts of asset metadata and different modulestores. """ if CodeBlockTimer is None: raise SkipTest("CodeBlockTimer undefined.") desc = "XMLRoundTrip:{}->{}:{}".format(SHORT_NAME_MAP[source_ms], SHORT_NAME_MAP[dest_ms], num_assets) with CodeBlockTimer(desc): with CodeBlockTimer("fake_assets"): # First, make the fake asset metadata. make_asset_xml(num_assets, ASSET_XML_PATH) validate_xml(ASSET_XSD_PATH, ASSET_XML_PATH) with source_ms.build() as (source_content, source_store): with dest_ms.build() as (dest_content, dest_store): source_course_key = source_store.make_course_key( 'a', 'course', 'course') dest_course_key = dest_store.make_course_key( 'a', 'course', 'course') with CodeBlockTimer("initial_import"): import_course_from_xml( source_store, 'test_user', TEST_DATA_ROOT, source_dirs=TEST_COURSE, static_content_store=source_content, target_id=source_course_key, create_if_not_present=True, raise_on_failure=True, ) with CodeBlockTimer("export"): export_course_to_xml( source_store, source_content, source_course_key, self.export_dir, 'exported_source_course', ) with CodeBlockTimer("second_import"): import_course_from_xml( dest_store, 'test_user', self.export_dir, source_dirs=['exported_source_course'], static_content_store=dest_content, target_id=dest_course_key, create_if_not_present=True, raise_on_failure=True, )
def test_generate_find_timings(self, source_ms, num_assets): """ Generate timings for different amounts of asset metadata and different modulestores. """ if CodeBlockTimer is None: raise SkipTest("CodeBlockTimer undefined.") desc = "FindAssetTest:{}:{}".format( SHORT_NAME_MAP[source_ms], num_assets, ) with CodeBlockTimer(desc): with CodeBlockTimer("fake_assets"): # First, make the fake asset metadata. make_asset_xml(num_assets, ASSET_XML_PATH) validate_xml(ASSET_XSD_PATH, ASSET_XML_PATH) with source_ms.build() as (source_content, source_store): source_course_key = source_store.make_course_key('a', 'course', 'course') asset_key = source_course_key.make_asset_key( AssetMetadata.GENERAL_ASSET_TYPE, 'silly_cat_picture.gif' ) with CodeBlockTimer("initial_import"): import_course_from_xml( source_store, 'test_user', TEST_DATA_ROOT, source_dirs=TEST_COURSE, static_content_store=source_content, target_id=source_course_key, create_if_not_present=True, raise_on_failure=True, ) with CodeBlockTimer("find_nonexistent_asset"): # More correct would be using the AssetManager.find() - but since the test # has created its own test modulestore, the AssetManager can't be used. __ = source_store.find_asset_metadata(asset_key) # Perform get_all_asset_metadata for each sort. for sort in ALL_SORTS: with CodeBlockTimer("get_asset_list:{}-{}".format( sort[0], 'asc' if sort[1] == ModuleStoreEnum.SortOrder.ascending else 'desc' )): # Grab two ranges of 50 assets using different sorts. # Why 50? That's how many are displayed on the current Studio "Files & Uploads" page. start_middle = num_assets / 2 __ = source_store.get_all_asset_metadata( source_course_key, 'asset', start=0, sort=sort, maxresults=50 ) __ = source_store.get_all_asset_metadata( source_course_key, 'asset', start=start_middle, sort=sort, maxresults=50 )
def test_arbitrary_delimiters(self, delimiter): with CodeBlockTimer("test", delimiter=delimiter, db_name=self.db_name) as timer: run_id = _m.run_id with CodeBlockTimer("delimiter", delimiter=delimiter, db_name=self.db_name) as inner: z = math.factorial(10) self._verifyEvents(run_id, ['test', 'test{}delimiter'.format(delimiter)])
def test_exception_handled(self): msg = "exception_but_still_timed" try: with CodeBlockTimer(msg, db_name=self.db_name) as __: run_id = _m.run_id z = math.factorial(10) raise Exception except Exception: pass self._verifyEvents(run_id, [msg])
def test_default_delimiter(self): with CodeBlockTimer("test", db_name=self.db_name) as timer: run_id = _m.run_id with CodeBlockTimer("delimiter", db_name=self.db_name) as inner: z = math.factorial(10) self._verifyEvents(run_id, ['test', 'test:delimiter'])