class Experiements: def __init__(self, cutoff: int): self.benchmarker = Benchmarker() self.SQL = SQL_interface() self.timestamp = datetime.fromtimestamp(time.time()) self.cold_cutoff = cutoff # get from sql when done testing local self.avg_exe_time = 0.4 # get from sql def run( self, fux_name: str, command: str, iterations: int, accuracy: int, extra=None, ): self.accuracy = accuracy self.iter = iterations return for i in range(iterations): time.sleep(self.cold_cutoff) data = function_call(fux_name, command, extra) def function_call(self, name: str, command: str, extra=None): switcher = { 'getter': self.benchmarker.request_getter(), 'putter': self.benchmarker.request_putter(), 'feed': self.benchjmarker.request_feed_generator(), 'webview': self.benchmarker.request_feed_webview() } return switcher.get(name)
class WeakestLinkExperiment: def __init__(self): self.bench = Benchmarker() self.sql_interface = SQL_Interface() self.exp_iterations = 5 self.num_items_to_get = 1 self.cold_time_secs = self.sql_interface.get_coldtime() self.uuid = uuid.uuid1() self.test_datas = [] def run_experiment(self): for i in range(self.exp_iterations): # initial invoke self.test_datas.append( self.bench.request_feed_generator( num_items=self.num_items_to_get)) # wait for lambda to be cold time.sleep(self.cold_time_secs) # make generator + getter hot self.test_datas.append( self.bench.request_feed_generator( num_items=self.num_items_to_get)) # webview lambda will be cold self.test_datas.append( self.bench.request_feed_webview( num_items=self.num_items_to_get)) # wait for lambda to be cold time.sleep(self.cold_time_secs) # save test data in db for td in self.test_datas: td.description = str(self.uuid) + "|weakest_link_experiment" self.sql_interface.insert_test(td)