Package org.erlide.backend

Source Code of org.erlide.backend.BackendTests

package org.erlide.backend;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.nullValue;

import org.erlide.backend.api.BackendData;
import org.erlide.backend.api.IBackend;
import org.erlide.runtime.ErtsProcess;
import org.erlide.runtime.api.RuntimeCore;
import org.junit.Test;

public class BackendTests {

    @Test
    public void crashedBackendShouldRestart() {
        final BackendData data = new BackendData(RuntimeCore.getRuntimeInfoCatalog()
                .getDefaultRuntime());
        data.setNodeName("fooz");
        data.setLongName(false);
        final IBackend b = BackendCore.getBackendManager().getFactory()
                .createBackend(data);
        assertThat("backend not running", b.isRunning());
        try {
            Thread.sleep(1000);
        } catch (final InterruptedException e) {
        }
        final Process oldProcess = b.getErtsProcess().getProcess();
        oldProcess.destroy();
        try {
            Thread.sleep(1000);
        } catch (final InterruptedException e) {
        }
        // this is needed to internally reset erts
        b.getErtsProcess().shutDown();
        assertThat("backend not running", b.isRunning());
        final Process newProcess = b.getErtsProcess().getProcess();
        assertThat(newProcess, is(not(oldProcess)));
    }

    @Test
    public void closedBackendShouldNotRestart() {
        final BackendData data = new BackendData(RuntimeCore.getRuntimeInfoCatalog()
                .getDefaultRuntime());
        data.setNodeName("fooz");
        data.setLongName(false);
        final IBackend b = BackendCore.getBackendManager().getFactory()
                .createBackend(data);
        assertThat("backend not running", b.isRunning());
        try {
            Thread.sleep(1000);
        } catch (final InterruptedException e) {
        }
        b.dispose();
        try {
            Thread.sleep(1000);
        } catch (final InterruptedException e) {
        }

        assertThat("backend not running", !b.isRunning());
        final ErtsProcess erts = b.getErtsProcess();
        final Process newProcess = erts.getProcess();
        assertThat(newProcess, is(nullValue()));
    }

}
TOP

Related Classes of org.erlide.backend.BackendTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.