Skip to content

Commit

Permalink
Moving forward with setup shell tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jerome-netguardians committed May 8, 2020
1 parent 66bc708 commit 68db80d
Show file tree
Hide file tree
Showing 13 changed files with 383 additions and 53 deletions.
5 changes: 3 additions & 2 deletions services_setup/gluster/inContainerSetupGluster.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@

set -e

SELF_IP_ADDRESS=$1
. /etc/eskimo_topology.sh

if [[ $SELF_IP_ADDRESS == "" ]]; then
echo " - No self ip address passed in argument"
echo " - Didn't find Self IP Address in eskimo_topology.sh"
exit -2
fi

Expand Down
53 changes: 27 additions & 26 deletions services_setup/gluster/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ if [[ $SELF_IP_ADDRESS == "" ]]; then
fi

# reinitializing log
sudo rm -f /tmp/gluster_install_log
sudo rm -f gluster_install_log


echo " - Creating required folders"
Expand All @@ -73,7 +73,7 @@ sudo mkdir -p /var/lib/gluster


echo " - Building container gluster"
build_container gluster gluster /tmp/gluster_install_log
build_container gluster gluster gluster_install_log

# create and start container
echo " - Running docker container"
Expand All @@ -82,13 +82,14 @@ docker run \
-v $PWD/../common:/common \
--network host \
--privileged=true \
-v /var/lib/gluster:/var/lib/gluster\
-v /var/log/gluster:/var/log/gluster\
-v /var/run/gluster:/var/run/gluster\
-v /var/lib/gluster:/var/lib/gluster \
-v /var/log/gluster:/var/log/gluster \
-v /var/run/gluster:/var/run/gluster \
--mount type=bind,source=/etc/eskimo_topology.sh,target=/etc/eskimo_topology.sh \
-d --name gluster \
-i \
-t eskimo:gluster bash >> /tmp/gluster_install_log 2>&1
fail_if_error $? "/tmp/gluster_install_log" -2
-t eskimo:gluster bash >> gluster_install_log 2>&1
fail_if_error $? "gluster_install_log" -2

# connect to container
#docker exec -it gluster bash
Expand All @@ -97,51 +98,51 @@ echo " - Gluster Remote Server Scripts"
for i in `find ./command_server`; do
if [[ -f $SCRIPT_DIR/$i ]]; then
filename=`basename $i`
docker cp $SCRIPT_DIR/$i gluster:/usr/local/sbin/$filename >> /tmp/gluster_install_log 2>&1
docker exec gluster chmod 755 /usr/local/sbin/$filename >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -30
docker cp $SCRIPT_DIR/$i gluster:/usr/local/sbin/$filename >> gluster_install_log 2>&1
docker exec gluster chmod 755 /usr/local/sbin/$filename >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -30
fi
done

echo " - Gluster in container helpers"
for i in `find ./gluster_container_helpers`; do
if [[ -f $SCRIPT_DIR/$i ]]; then
filename=`basename $i`
docker cp $SCRIPT_DIR/$i gluster:/usr/local/sbin/$filename >> /tmp/gluster_install_log 2>&1
docker exec gluster chmod 755 /usr/local/sbin/$filename >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -30
docker cp $SCRIPT_DIR/$i gluster:/usr/local/sbin/$filename >> gluster_install_log 2>&1
docker exec gluster chmod 755 /usr/local/sbin/$filename >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -30
fi
done

echo " - Configuring gluster container"
docker exec gluster bash /scripts/inContainerSetupGluster.sh $SELF_IP_ADDRESS | tee -a /tmp/gluster_install_log 2>&1
if [[ `tail -n 1 /tmp/gluster_install_log` != " - In container config SUCCESS" ]]; then
docker exec gluster bash /scripts/inContainerSetupGluster.sh | tee -a gluster_install_log 2>&1
if [[ `tail -n 1 gluster_install_log` != " - In container config SUCCESS" ]]; then
echo " - In container setup script ended up in error"
cat /tmp/gluster_install_log
cat gluster_install_log
exit -100
fi

#echo " - TODO"
#docker exec -it gluster TODO

echo " - Copying Service Start Script"
docker cp $SCRIPT_DIR/inContainerStartService.sh gluster:/usr/local/sbin/inContainerStartService.sh >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -20
docker cp $SCRIPT_DIR/inContainerStartService.sh gluster:/usr/local/sbin/inContainerStartService.sh >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -20

docker exec --user root gluster bash -c "chmod 755 /usr/local/sbin/inContainerStartService.sh" >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -21
docker exec --user root gluster bash -c "chmod 755 /usr/local/sbin/inContainerStartService.sh" >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -21


echo " - Copying settingsInjector.sh Script"
docker cp $SCRIPT_DIR/settingsInjector.sh gluster:/usr/local/sbin/settingsInjector.sh >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -23
docker cp $SCRIPT_DIR/settingsInjector.sh gluster:/usr/local/sbin/settingsInjector.sh >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -23

docker exec --user root gluster bash -c "chmod 755 /usr/local/sbin/settingsInjector.sh" >> /tmp/gluster_install_log 2>&1
fail_if_error $? /tmp/gluster_install_log -24
docker exec --user root gluster bash -c "chmod 755 /usr/local/sbin/settingsInjector.sh" >> gluster_install_log 2>&1
fail_if_error $? gluster_install_log -24


echo " - Committing changes to local template and exiting container gluster"
commit_container gluster /tmp/gluster_install_log
commit_container gluster gluster_install_log


echo " - Copying gluster command line programs docker wrappers to /usr/local/bin"
Expand All @@ -158,7 +159,7 @@ sudo chmod 755 /usr/local/sbin/startGlusterServiceContainer.sh


#echo " - Installing and checking systemd service file"
install_and_check_service_file gluster /tmp/gluster_install_log
install_and_check_service_file gluster gluster_install_log



Expand Down
22 changes: 11 additions & 11 deletions services_setup/grafana/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ loadTopology


# reinitializing log
sudo rm -f /tmp/grafana_install_log
sudo rm -f grafana_install_log

echo " - Building container grafana"
build_container grafana grafana /tmp/grafana_install_log
build_container grafana grafana grafana_install_log

echo " - Creating grafana user (if not exist)"
grafana_user_id=`id -u grafana 2>> /tmp/grafana_install_log`
grafana_user_id=`id -u grafana 2>> grafana_install_log`
if [[ $grafana_user_id == "" ]]; then
echo "User grafana should have been added by eskimo-base-system setup script"
exit -4
Expand All @@ -69,30 +69,30 @@ docker run \
-v $SCRIPT_DIR/provisioning:/eskimo/provisioning \
-d --name grafana \
-i \
-t eskimo:grafana bash >> /tmp/grafana_install_log 2>&1
fail_if_error $? "/tmp/grafana_install_log" -2
-t eskimo:grafana bash >> grafana_install_log 2>&1
fail_if_error $? "grafana_install_log" -2

# connect to container
#docker exec -it grafana bash

echo " - Configuring grafana container"
docker exec grafana bash /scripts/inContainerSetupGrafana.sh $grafana_user_id $CONTEXT_PATH | tee -a /tmp/grafana_install_log 2>&1
if [[ `tail -n 1 /tmp/grafana_install_log` != " - In container config SUCCESS" ]]; then
docker exec grafana bash /scripts/inContainerSetupGrafana.sh $grafana_user_id $CONTEXT_PATH | tee -a grafana_install_log 2>&1
if [[ `tail -n 1 grafana_install_log` != " - In container config SUCCESS" ]]; then
echo " - In container setup script ended up in error"
cat /tmp/grafana_install_log
cat grafana_install_log
exit -100
fi

#echo " - TODO"
#docker exec -it grafana TODO

echo " - Handling topology and setting injection"
handle_topology_settings grafana /tmp/grafana_install_log
handle_topology_settings grafana grafana_install_log

echo " - Committing changes to local template and exiting container grafana"
commit_container grafana /tmp/grafana_install_log
commit_container grafana grafana_install_log


echo " - Starting marathon deployment"
deploy_marathon grafana /tmp/grafana_install_log
deploy_marathon grafana grafana_install_log

6 changes: 3 additions & 3 deletions services_setup/ntp/inContainerSetupNtp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@ sudo update-rc.d rsync remove

echo " - Enabling and starting cron"
sudo update-rc.d cron enable
/etc/init.d/cron start >> /tmp/ntp-setup-log
sudo bash -c "/etc/init.d/cron start >> /tmp/ntp-setup-log"

echo " - Configuring logging"
echo -e "\nlogfile /var/log/ntp/ntp.log" >> /etc/ntp.conf
echo -e "logconfig =syncevents +peerevents +sysevents +allclock" >> /etc/ntp.conf
bash -c "echo -e \"\nlogfile /var/log/ntp/ntp.log\" >> /etc/ntp.conf"
bash -c "echo -e \"logconfig =syncevents +peerevents +sysevents +allclock\" >> /etc/ntp.conf"

echo " - Making sure ntp has access to /var/lib/ntp"
touch /var/lib/ntp/ntp.drift.TEMP
Expand Down
20 changes: 10 additions & 10 deletions services_setup/ntp/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ loadTopology


# reinitializing log
sudo rm -f /tmp/ntp_install_log
sudo rm -f ntp_install_log

echo " - Building container ntp"
build_container ntp ntp /tmp/ntp_install_log
build_container ntp ntp ntp_install_log

echo " - Creating shared lib"
sudo mkdir -p /var/lib/ntp/
Expand All @@ -72,28 +72,28 @@ docker run \
--cap-add SYS_TIME\
-d --name ntp \
-i \
-t eskimo:ntp bash >> /tmp/ntp_install_log 2>&1
fail_if_error $? "/tmp/ntp_install_log" -2
-t eskimo:ntp bash >> ntp_install_log 2>&1
fail_if_error $? "ntp_install_log" -2

# connect to container
#docker exec -it ntp bash

echo " - Configuring ntp container"
docker exec ntp bash /scripts/inContainerSetupNtp.sh | tee -a /tmp/ntp_install_log 2>&1
if [[ `tail -n 1 /tmp/ntp_install_log` != " - In container config SUCCESS" ]]; then
docker exec ntp bash /scripts/inContainerSetupNtp.sh | tee -a ntp_install_log 2>&1
if [[ `tail -n 1 ntp_install_log` != " - In container config SUCCESS" ]]; then
echo " - In container setup script ended up in error"
cat /tmp/ntp_install_log
cat ntp_install_log
exit -100
fi

#echo " - TODO"
#docker exec -it ntp TODO

echo " - Handling topology and setting injection"
handle_topology_settings ntp /tmp/ntp_install_log
handle_topology_settings ntp ntp_install_log

echo " - Committing changes to local template and exiting container ntp"
commit_container ntp /tmp/ntp_install_log
commit_container ntp ntp_install_log

echo " - Installing and checking systemd service file"
install_and_check_service_file ntp /tmp/ntp_install_log
install_and_check_service_file ntp ntp_install_log
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ protected final String setupJail(String serviceName) throws Exception {

private void enhanceScripts(String jailPath) throws FileException {

for (String scriptToExecute: getScriptsToExecute()) {
for (String scriptToExecute: getScriptsToEnhance()) {

String scriptContent = FileUtils.readFile(new File(jailPath + "/" + scriptToExecute));
if (StringUtils.isNotBlank(scriptContent)) {
Expand Down Expand Up @@ -276,6 +276,10 @@ protected String getTemplateName() {

protected abstract String[] getScriptsToExecute();

protected String[] getScriptsToEnhance() {
return getScriptsToExecute();
}

protected final String executeScripts(String jailPath) throws ProcessHelper.ProcessHelperException {
StringBuilder resultBuilder = new StringBuilder();
for (String scriptToExecute: getScriptsToExecute()) {
Expand Down Expand Up @@ -306,6 +310,7 @@ String createJail() throws Exception {
createLoggingExecutable("bash", tempFile.getAbsolutePath());
createLoggingExecutable("systemctl", tempFile.getAbsolutePath());
createLoggingExecutable("echo", tempFile.getAbsolutePath());
createLoggingExecutable("touch", tempFile.getAbsolutePath());

createDummyExecutable("id", tempFile.getAbsolutePath());
createDummyExecutable("docker", tempFile.getAbsolutePath());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package ch.niceideas.eskimo.shell.setup;

import ch.niceideas.common.utils.ResourceUtils;
import ch.niceideas.common.utils.StreamUtils;
import ch.niceideas.common.utils.StringUtils;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

import static junit.framework.TestCase.assertTrue;
import static junit.framework.TestCase.fail;

public class GlusterSetupTest extends AbstractSetupShellTest {

private static final Logger logger = Logger.getLogger(GlusterSetupTest.class);

protected static String jailPath = null;

private static boolean initialized = false;

@Before
public void setUp() throws Exception {
if (!initialized) {
jailPath = setupJail(getServiceName());
initialized = true;
}
}

@Override
protected String getJailPath() {
return jailPath;
}

@Override
protected String getServiceName() {
return "gluster";
}

@Override
protected void copyScripts(String jailPath) throws IOException {
// setup.sh is automatic
copyFile(jailPath, "common.sh");
copyFile(jailPath, "inContainerSetupGluster.sh");
copyFile(jailPath, "inContainerStartService.sh");
}

@Override
protected String[] getScriptsToExecute() {
return new String[] {
"setup.sh",
"inContainerSetupGluster.sh"
};
}

@Test
public void testSystemDInstallation() throws Exception {
assertSystemDInstallation();
}

@Test
public void testSystemDockerManipulations() throws Exception {
assertSystemDServiceDockerCommands();
}

@Test
public void testConfigurationFileUpdate() throws Exception {

String sudoLogs = StreamUtils.getAsString(ResourceUtils.getResourceAsStream(jailPath + "/.log_sudo"));
if (StringUtils.isNotBlank(sudoLogs)) {

//System.err.println (sudoLogs);

assertTrue(sudoLogs.contains("" +
"bash -c echo \"volume management\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" type mgmt/glusterd\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option working-directory /var/lib/gluster/working_directory\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport-type socket,rdma\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.socket.keepalive-time 10\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.socket.keepalive-interval 2\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.socket.read-fail-log off\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option ping-timeout 0\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option event-threads 1\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.rdma.bind-address 192.168.10.11\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.socket.bind-address 192.168.10.11\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \" option transport.tcp.bind-address 192.168.10.11\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \"# option transport.address-family inet6\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \"# option base-port 49152\" >> /var/lib/gluster/glusterfs.VOLUME_FILE\n" +
"bash -c echo \"end-volume\" >> /var/lib/gluster/glusterfs.VOLUME_FILE"));

} else {
fail ("Expected to find bash logs in .log_bash");
}
}
}
Loading

0 comments on commit 68db80d

Please sign in to comment.