@Override public int hashCode() { return getProcess().hashCode(); }
List<ProcessReference> references(Process... procs) { List<ProcessReference> result = new ArrayList<>(); for (Process proc : procs) { result.add(new ProcessReference(proc)); } return result; }
@Override public String toString() { return getProcess().toString(); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof ProcessReference) { return getProcess().equals(((ProcessReference) obj).getProcess()); } throw new IllegalArgumentException( String.valueOf(obj) + " is not of type " + this.getClass().getName()); } }
@Override public void eliminateTabletServers(ClientContext ctx, TabletLocations locs, int count) throws Exception { List<ProcessReference> procs = new ArrayList<>( getCluster().getProcesses().get(ServerType.TABLET_SERVER)); Collections.shuffle(procs); for (int i = 0; i < count; ++i) { ProcessReference pr = procs.get(i); log.info("Crashing {}", pr.getProcess()); getCluster().killProcess(ServerType.TABLET_SERVER, pr); } } });
switch (type) { case MASTER: if (procRef.getProcess().equals(masterProcess)) { try { cluster.stopProcessWithTimeout(masterProcess, 30, TimeUnit.SECONDS); synchronized (tabletServerProcesses) { for (Process tserver : tabletServerProcesses) { if (procRef.getProcess().equals(tserver)) { tabletServerProcesses.remove(tserver); try { if (procRef.getProcess().equals(zooKeeperProcess)) { try { cluster.stopProcessWithTimeout(zooKeeperProcess, 30, TimeUnit.SECONDS); if (procRef.getProcess().equals(gcProcess)) { try { cluster.stopProcessWithTimeout(gcProcess, 30, TimeUnit.SECONDS);
List<ProcessReference> deadProcs = new ArrayList<>(); for (ProcessReference pr : getCluster().getProcesses().get(ServerType.TABLET_SERVER)) { Process p = pr.getProcess(); if (!isAlive(p)) { deadProcs.add(pr); log.info("Process {} is dead, informing cluster control about this", pr.getProcess()); getCluster().getClusterControl().killProcess(ServerType.TABLET_SERVER, pr); --count;
ArrayList<Integer> tserverPids = new ArrayList<>(tservers.size()); for (ProcessReference tserver : tservers) { Process p = tserver.getProcess(); if (!p.getClass().getName().equals("java.lang.UNIXProcess")) { log.info("Found process that was not UNIXProcess, exiting test");