AgentPoolHealthCheck.java

package emissary.core;

import emissary.pool.AgentPool;
import emissary.pool.MobileAgentFactory;

import com.codahale.metrics.health.HealthCheck;

public class AgentPoolHealthCheck extends HealthCheck {

    @Override
    protected Result check() {
        int active = 0;
        int idle = 0;
        try {
            for (int i = 0; i < AgentPool.lookup().getMaxTotal(); i++) {
                String agentKey = MobileAgentFactory.AGENT_NAME + "-" + String.format("%02d", i);
                if (Namespace.exists(agentKey)) {
                    if (Namespace.lookup(agentKey).toString().startsWith("Idle")) {
                        idle++;
                    } else {
                        active++;
                    }
                } else {
                    return Result.unhealthy("Missing an agent in the Namespace: " + agentKey);
                }
            }
            return Result.healthy("Pool size active/idle: " + active + "/" + idle);
        } catch (EmissaryException e) {
            return Result.unhealthy("Problem when looking up the pool: " + e.getMessage());
        }
    }

}