Beispiel #1
0
def test_simulated_agents(mock_cluster_connector):
    assert mock_cluster_connector.get_resource_total(
        'cpus') == 10 * get_market_resources(TEST_MARKET).cpus
    assert mock_cluster_connector.get_resource_total(
        'mem') == 10 * get_market_resources(TEST_MARKET).mem
    assert mock_cluster_connector.get_resource_total(
        'disk') == 10 * get_market_resources(TEST_MARKET).disk
Beispiel #2
0
def test_get_agent_metadata(mock_cluster_connector):
    instance = list(mock_cluster_connector.simulator.aws_clusters[0].instances.values())[0]
    mesos_resources = ClustermanResources(
        get_market_resources(TEST_MARKET).cpus,
        get_market_resources(TEST_MARKET).mem * 1000,
        get_market_resources(TEST_MARKET).disk * 1000,
    )
    assert mock_cluster_connector.get_agent_metadata(instance.ip_address) == AgentMetadata(
        agent_id=mock.ANY,
        state=AgentState.IDLE,
        total_resources=mesos_resources,
    )
Beispiel #3
0
def _populate_cluster_size_events(simulator, start_time, end_time):
    capacity_metrics = simulator.metrics_client.get_metric_values(
        f'fulfilled_capacity',
        METADATA,
        start_time.timestamp,
        end_time.timestamp,
        use_cache=False,
        extra_dimensions=get_cluster_dimensions(
            simulator.metadata.cluster,
            simulator.metadata.pool,
            simulator.metadata.scheduler,
        ),
    )
    for i, (timestamp,
            data) in enumerate(capacity_metrics['fulfilled_capacity']):
        market_data = {}
        for market_str, value in data.items():
            market = InstanceMarket.parse(market_str)
            weight = get_market_resources(market).cpus // staticconf.read_int(
                'cpus_per_weight')
            market_data[market] = int(value) // weight
        simulator.markets |= set(market_data.keys())
        use_join_delay = (
            i != 0)  # Want to start the cluster out at the expected capacity
        simulator.add_event(
            ModifyClusterSizeEvent(arrow.get(timestamp), market_data,
                                   use_join_delay))
Beispiel #4
0
    def __init__(self, market, start_time, bid_price=None, join_time=None):
        self.id = next(Instance.id)
        self.ip_address = Instance.ip
        self.market = market
        self.start_time = start_time
        self.join_time = join_time
        self.end_time = None
        self.resources = get_market_resources(self.market)
        self.bid_price = bid_price

        Instance.ip += 1