package com.smash.revolance.ui.tests.smoke; /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ui-monitoring-distrib * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Copyright (C) 2012 - 2014 RevoLance * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ import com.smash.revolance.ui.materials.CmdlineHelper; import com.smash.revolance.ui.materials.TestConstants; import org.apache.commons.io.FileUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.text.StringEndsWith.endsWith; import static org.junit.Assert.assertThat; import static org.junit.internal.matchers.IsCollectionContaining.hasItems; import static org.junit.internal.matchers.StringContains.containsString; public class ServerLifecycleITest extends TestConstants { private static CmdlineHelper statusAfterStop; private static CmdlineHelper start; private static CmdlineHelper stop; private static CmdlineHelper statusAfterStart; @BeforeClass public static void setupTests() throws Exception { start = new CmdlineHelper().dir( DISTRIB_DIR ).cmd( START_SCRIPT ); statusAfterStart = new CmdlineHelper().dir( DISTRIB_DIR ).cmd( STATUS_SCRIPT ); stop = new CmdlineHelper().dir( DISTRIB_DIR ).cmd( STOP_SCRIPT ); statusAfterStop = new CmdlineHelper().dir( DISTRIB_DIR ).cmd( STATUS_SCRIPT ); // startServerAndCheckStatus(); } @AfterClass public static void teardownTests() throws Exception { // stopServerAndCheckStatus(); } @Test public void checkDistribContent() { assertThat( listDistribFiles(), hasItems( endsWith("/start.sh"), endsWith("/stop.sh"), endsWith("/status.sh"), endsWith("/config/settings.json"), containsString("/bin/ui-monitoring-cmdline"), containsString("/web-apps/ui-monitoring-server"), containsString("/samples/"))); } public static List<String> listDistribFiles() { List<String> files = new ArrayList<>(); List<File> distribFiles = (List<File>) FileUtils.listFiles(DISTRIB_DIR, null, true); for(File file : distribFiles) { files.add(file.toString()); } return files; } public static void stopServerAndCheckStatus() throws Exception { stop.sync().exec().outContains( "Stopping server [Done]" ); assertThat( stop.exitValue(), is(0) ); statusAfterStop.sync().exec().awaitOut( "server is stopped", 10 ); assertThat( statusAfterStop.exitValue(), is(0) ); } public static void startServerAndCheckStatus() throws Exception { start.exec().awaitOut("Starting server [Done]", 10); assertThat(start.hasExited(), is(false)); statusAfterStart.sync().exec().awaitOut( "server is started", 10 ); assertThat( statusAfterStart.exitValue(), is(0) ); } }