Exemplo n.º 1
0
    def test_run(self):
        etcdctl_mock = FakeEtcdClient(self.etcd_content)
        config_mock = Mock()
        config_mock.ETCD = Mock()
        config_mock.ETCD.metrics_base_path = "/metrics"

        policies_mock = config_mock.ScalingPolicy
        policies_mock.scale_up = Mock()
        policies_mock.scale_up.service_type = "webserver"
        policies_mock.scale_up.metric = "cpu_user"
        policies_mock.scale_up.metric_aggregated = False

        policies_mock.scale_down = Mock()
        policies_mock.scale_down.service_type = "loadbalancer"
        policies_mock.scale_down.metric = "response_time.time_backend_response.p95"
        policies_mock.scale_down.metric_aggregated = True
        policies_mock.get_scaling_policies = Mock(
            return_value=[policies_mock.scale_up, policies_mock.scale_down])

        exit_flag = Value('i', 0)
        result_queue = Queue()
        metrics_component = DynamiteMETRICS(self.ETCD_ENDPOINT, result_queue,
                                            exit_flag)
        metrics_component.etcdctl = etcdctl_mock
        metrics_component.configuration = config_mock

        process_simulator = ProcessSimulator(metrics_component)
        process_simulator.start()

        expected_message_count = 3
        messages_by_instance_uuid = {}
        for message_nr in range(0, expected_message_count):
            result = result_queue.get()
            messages_by_instance_uuid[result.uuid] = result

        assert result_queue.empty() is True

        expected_message_apache1 = MetricsMessage(
            "webserver", "apache-uuid-1", [
                MetricValue("2015-06-26T09:52:07.680Z", 29),
                MetricValue("2015-06-26T09:52:08.680Z", 30),
                MetricValue("2015-06-26T09:52:09.680Z", 31)
            ], "cpu_user")
        assert messages_by_instance_uuid[
            "apache-uuid-1"] == expected_message_apache1

        expected_message_apache2 = MetricsMessage(
            "webserver", "apache-uuid-2", [
                MetricValue("2015-06-26T09:53:07.680Z", 20),
                MetricValue("2015-06-26T09:53:08.680Z", 21),
                MetricValue("2015-06-26T09:53:09.680Z", 22)
            ], "cpu_user")
        assert messages_by_instance_uuid[
            "apache-uuid-2"] == expected_message_apache2

        expected_message_loadbalancer = MetricsMessage(
            "webserver", "apache-uuid-2", [
                MetricValue("2015-06-22T14:54:12.319Z", 699.0),
                MetricValue("2015-06-22T14:54:13.319Z", 699.0)
            ], "cpu_user")
        assert messages_by_instance_uuid[""] == expected_message_loadbalancer
        process_simulator.stop()
        process_simulator.join()
Exemplo n.º 2
0
 def start_metrics_component(self):
     self._dynamite_metrics = DynamiteMETRICS(
         self._command_line_arguments.etcd_endpoint,
         self._scaling_engine_metrics_communication_queue, self._exit_flag)
     self._dynamite_metrics.daemon = True
     self._dynamite_metrics.start()