Ejemplo n.º 1
0
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)