Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
TestCommand.java 1.19 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.DatabaseService;

public class TestCommand implements Command {

	public static final Logger out = LogManager.getLogger("shellout");

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

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

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

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

}