예제 #1
0
    def test_verify_widget_caching_behavior(self):
        self.navigate(data.PD_URL)
        widget_id = "fwk_menu_16"
        widget_name = "Related Links"

        #initially widget is uncached
        self.assertIsNone(LIB._is_widget_cached(widget_name))
        #call with cache_widget = False and widget is Not cached
        t0 = time.clock()
        LIB._get_widget_by_name(widget_name, False)
        uncached_retrival_time = time.clock() - t0
        self.assertIsNone(LIB._is_widget_cached(widget_name))
        #default - call with cach_widget = True and widget is cached
        widget = LIB._get_widget_by_name(widget_name)
        t1 = time.clock()
        cached_widget = LIB._get_widget_by_name(widget_name)
        cached_retrival_time = time.clock() - t1
        self.assertEqual(widget.text, cached_widget.text)
        self.assertTrue(cached_retrival_time < uncached_retrival_time)
        print "Uncached retrival time = %f Cached retrival time = %f" % (uncached_retrival_time, cached_retrival_time)
        #and widget id should be set to name_widget
        self.assertEqual("%s_widget" % (widget_name), widget.get_attribute('id'))
        #and cache should be invalidated after reload
        LIB.reload_page()
        self.assertIsNone(LIB._is_widget_cached(widget_name))