Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
TestCommand.java 1.21 KiB
package de.vipra.cmd.option;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bson.types.ObjectId;
import org.elasticsearch.client.transport.NoNodeAvailableException;
import org.elasticsearch.client.transport.TransportClient;

import de.vipra.util.Config;
import de.vipra.util.ESClient;
import de.vipra.util.model.Article;
import de.vipra.util.service.MongoService;

public class TestCommand implements Command {

	public static final Logger log = LogManager.getLogger(TestCommand.class);

	@Override
	public void run() throws Exception {
		// test if configuration readable
		log.info("reading configuration...");
		final Config config = Config.getConfig();

		// test if database is accessible
		log.info("testing mongodb connection...");
		final MongoService<Article, ObjectId> dbArticles = MongoService.getDatabaseService(config, Article.class);
		dbArticles.count(null);

		// test if elasticsearch is accessible
		log.info("testing elasticsearch connection...");
		final TransportClient esclient = ESClient.getClient(config);
		if (esclient.connectedNodes().isEmpty()) {
			throw new NoNodeAvailableException("no elasticsearch nodes available");
		}

		log.info("all tests passed");
	}

}