Package org.neo4j.release.it.std.exec

Source Code of org.neo4j.release.it.std.exec.ProvisionerTest

/**
* Copyright (c) 2002-2011 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.neo4j.release.it.std.exec;

import org.junit.Test;
import org.ops4j.io.FileUtils;
import org.ops4j.pax.exam.options.MavenArtifactProvisionOption;
import org.ops4j.pax.exam.options.ProvisionOption;
import org.ops4j.pax.runner.platform.DefaultJavaRunner;
import org.ops4j.pax.runner.platform.PlatformException;

import java.io.File;
import java.io.FilenameFilter;
import java.net.MalformedURLException;
import java.util.Arrays;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.core.Is.is;

import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.neo4j.release.it.std.exec.HasItemEndingIn.hasItemEndingIn;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;

/**
* Unit tests for the Provisioner.
*/
public class ProvisionerTest {


    @Test
    public void shouldCreateProvisioner() {
        Provisioner prover = new Provisioner();

        assertThat(prover, notNullValue());
    }

    @Test
    public void shouldCreateProvisionDirectory() {
        final String EXPECTED_DIRECTORY = "prove_dir";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.provision();

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        assertTrue(actualDirectory.exists());
        assertTrue(actualDirectory.isDirectory());
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldProvisionMavenArtifact() throws MalformedURLException {
        final String EXPECTED_DIRECTORY = "prove_dir";
       
        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.include("mvn:org.neo4j/neo4j-kernel/1.1", "neo4j-kernel.jar");
        prover.provision();

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        String[] foundJars = actualDirectory.list( new FilenameFilter() {

            public boolean accept(File dir, String name) {
                return name.endsWith("jar");
            }
        });
        assertThat( foundJars.length, is ( equalTo(1)));
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldProvisionMavenArtifactWithARecognizableName() throws MalformedURLException {
        final String EXPECTED_DIRECTORY = "prove_dir";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.include("mvn:org.neo4j/neo4j-kernel/1.1", "neo4j-kernel.jar");
        prover.provision();

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        String[] foundJars = listJarsIn(actualDirectory);

        assertThat( foundJars.length, is ( equalTo(1)));
        assertThat( foundJars[0], containsString("neo4j-kernel"));
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldProvisionArtifactWithFluently() {
        Provisioner prover = new Provisioner();


    }

    @Test
    public void shouldIncludeJarsInClasspath() throws MalformedURLException {
        final String EXPECTED_DIRECTORY = "prove_dir";
        final String EXPECTED_JAR = "neo4j-kernel.jar";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.include("mvn:org.neo4j/neo4j-kernel/1.1", EXPECTED_JAR);
        prover.provision();

        assertThat( Arrays.asList(prover.getProvisionedClasspath()), hasItemEndingIn(EXPECTED_JAR));

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldNotRequireArtifactsInClasspath() {
        final String EXPECTED_DIRECTORY = "prove_dir";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );

        assertThat( prover.getProvisionedClasspath(), is(notNullValue()));

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldIncludeTargetClassesInClasspath() {
        final String EXPECTED_DIRECTORY = "prove_dir";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.includeTargetClasses();

        assertThat( Arrays.asList(prover.getProvisionedClasspath()), hasItemEndingIn("classes"));
       
        File actualDirectory = new File(EXPECTED_DIRECTORY);
        FileUtils.delete(actualDirectory);
    }


    @Test
    public void shouldIncludeTargetTestClassesInClasspath() {
        final String EXPECTED_DIRECTORY = "prove_dir";

        Provisioner prover = new Provisioner();
        prover.setProvisionDirectory( EXPECTED_DIRECTORY );
        prover.includeTargetTestClasses();

        assertThat( Arrays.asList(prover.getProvisionedClasspath()), hasItemEndingIn("test-classes"));

        File actualDirectory = new File(EXPECTED_DIRECTORY);
        FileUtils.delete(actualDirectory);
    }

    @Test
    public void shouldProvisionClasspathForLocalApp() throws PlatformException {
        Provisioner prover = new Provisioner();
        prover.includeTargetClasses();
        prover.includeTargetTestClasses();

        boolean waitForExit = true;
        DefaultJavaRunner runner = new DefaultJavaRunner( waitForExit );

        String[] vmOptions = { "-server" };
        String[] classpath = prover.getProvisionedClasspath();
        String mainClass = "org.neo4j.release.it.std.exec.HelloWorldApp";
        String[] programOptions = null;
        String javaHome = System.getProperty("java.home");
        File workingDir = null; // new File(".");

        System.out.println(Arrays.toString(classpath));

        runner.exec(vmOptions, classpath, mainClass, programOptions, javaHome, workingDir);
    }


    private String[] listJarsIn(File directory) {
         return directory.list( new FilenameFilter() {

            public boolean accept(File dir, String name) {
                return name.endsWith("jar");
            }
        });
    }
}
TOP

Related Classes of org.neo4j.release.it.std.exec.ProvisionerTest

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.