package resa.evaluation.optimize;

import resa.optimize.AggResult;
import resa.optimize.AllocCalculator;
import resa.optimize.AllocResult;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by ding on 14-5-1.
 */
public class FakeAllocCalculator extends AllocCalculator {

    @Override
    public AllocResult calc(Map<String, AggResult[]> executorAggResults, int maxAvailableExecutors) {
        Map<String, Integer> ret = new HashMap<>(currAllocation);
        ArrayList<Map.Entry<String, Integer>> tmp = new ArrayList<>(ret.entrySet());
        Collections.shuffle(tmp);
        Map.Entry<String, Integer> entry = tmp.get(0);
        int old = entry.getValue();
        int newThreads = System.currentTimeMillis() % 2 == 0 ? old + 1 : old - 1;
        entry.setValue(newThreads);
        System.out.println(entry.getKey() + ": Old is " + old + ", new is " + newThreads);
        return new AllocResult(AllocResult.Status.FEASIBALE, ret, ret);
    }
}
