org.kurento.test.internal.CheckNodes.java Source code

Java tutorial

Introduction

Here is the source code for org.kurento.test.internal.CheckNodes.java

Source

/*
 * (C) Copyright 2014 Kurento (http://kurento.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package org.kurento.test.internal;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.kurento.test.utils.SshConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Charsets;
import com.google.common.io.CharStreams;

/**
 * Internal test application for assessing the state of hosts for nodes in Selenium Grid.
 *
 * @author Boni Garcia (bgarcia@gsyc.es)
 * @since 4.2.5
 */
public class CheckNodes {

    public Logger log = LoggerFactory.getLogger(CheckNodes.class);

    public void check() throws IOException {
        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("node-list.txt");
        List<String> nodeList = CharStreams.readLines(new InputStreamReader(inputStream, Charsets.UTF_8));

        List<String> nodesWithoutXvfb = new ArrayList<String>();
        List<String> nodesWithException = new ArrayList<String>();
        List<String> nodesDown = new ArrayList<String>();
        List<String> nodesOk = new ArrayList<String>();

        for (String node : nodeList) {
            if (SshConnection.ping(node)) {

                SshConnection remoteHost = new SshConnection(node);
                try {
                    remoteHost.start();
                    int xvfb = remoteHost.runAndWaitCommand("xvfb-run");
                    if (xvfb != 2) {
                        nodesWithoutXvfb.add(node);
                    } else {
                        nodesOk.add(node);
                    }
                    log.debug("{} {}", node, xvfb);
                } catch (Exception e) {
                    log.error("Exception in node {} : {}", node, e.getClass());
                    nodesWithException.add(node);
                } finally {
                    remoteHost.stop();
                }
            } else {
                log.error("Node down {}", node);
                nodesDown.add(node);
            }
        }

        log.debug("Nodes Ok: {} {}", nodesOk.size(), nodesOk);
        log.debug("Nodes without Xvfb: {} {}", nodesWithoutXvfb.size(), nodesWithoutXvfb);
        log.debug("Nodes with exception: {} {}", nodesWithException.size(), nodesWithException);
        log.debug("Nodes down: {} {}", nodesDown.size(), nodesDown);
    }

    public static void main(String[] args) throws IOException {
        CheckNodes checkNodes = new CheckNodes();
        checkNodes.check();
    }

}