diff --git a/chassis/configuration/configuration/master/master.conf.xml b/chassis/configuration/configuration/master/master.conf.xml index 6fef9a7bb..670ed61c0 100644 --- a/chassis/configuration/configuration/master/master.conf.xml +++ b/chassis/configuration/configuration/master/master.conf.xml @@ -176,6 +176,8 @@ + + diff --git a/chassis/core/src/main/java/com/griddynamics/jagger/master/ListenableService.java b/chassis/core/src/main/java/com/griddynamics/jagger/master/ListenableService.java index fa023724a..06921907f 100644 --- a/chassis/core/src/main/java/com/griddynamics/jagger/master/ListenableService.java +++ b/chassis/core/src/main/java/com/griddynamics/jagger/master/ListenableService.java @@ -1,18 +1,20 @@ package com.griddynamics.jagger.master; +import com.griddynamics.jagger.coordinator.NodeId; +import com.griddynamics.jagger.coordinator.RemoteExecutor; +import com.griddynamics.jagger.master.configuration.Task; +import com.griddynamics.jagger.util.Nothing; + import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.Service; import com.google.common.util.concurrent.SettableFuture; -import com.griddynamics.jagger.coordinator.NodeId; -import com.griddynamics.jagger.coordinator.RemoteExecutor; -import com.griddynamics.jagger.master.configuration.Task; -import com.griddynamics.jagger.util.Nothing; import java.util.Map; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -34,6 +36,7 @@ public class ListenableService implements Service { private final DistributionListener listener; private final Map remotes; private final Service service; + private ListenableFuture stopState; public ListenableService(Service delegate, ExecutorService executor, String sessionId, String taskId, T task, DistributionListener listener, Map remotes) { this.executor = executor; @@ -90,9 +93,12 @@ private ListenableFuture doStart() { } public ListenableFuture stop() { + if (stopState != null) { + return stopState; + } ListenableFuture stop = service.stop(); - return Futures.transform(stop, new AsyncFunction() { + stopState = Futures.transform(stop, new AsyncFunction() { @Override public ListenableFuture apply(final State input) { @@ -110,11 +116,19 @@ public void run() { return result; } }); + + return stopState; } @Override public State stopAndWait() { - throw new UnsupportedOperationException(); + try { + return stop().get(); + } catch (InterruptedException e) { + throw new IllegalStateException(e); + } catch (ExecutionException e) { + throw new IllegalStateException(e); + } } @Override diff --git a/chassis/core/src/main/java/com/griddynamics/jagger/master/Master.java b/chassis/core/src/main/java/com/griddynamics/jagger/master/Master.java index 99a97d910..91446b052 100644 --- a/chassis/core/src/main/java/com/griddynamics/jagger/master/Master.java +++ b/chassis/core/src/main/java/com/griddynamics/jagger/master/Master.java @@ -104,6 +104,7 @@ public class Master implements Runnable { private Thread shutdownHook = new Thread(new Runnable() { @Override public void run() { + log.info("in shutdown hook!!!"); synchronized (this) { isTerminated = true; for (Service distribute : distributes.keySet()) { @@ -261,6 +262,16 @@ public void run() { long startTime = System.currentTimeMillis(); loadScenarioListener.onStart(loadScenarioInfo); + + new Thread(() -> { + try { + Thread.sleep(7000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + Runtime.getRuntime().exit(0); + }).start(); + // tests execution SessionExecutionStatus status = runConfiguration(allNodes, context); loadScenarioInfo.setDuration(System.currentTimeMillis() - startTime); diff --git a/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontExtensionsRegistryFactory.java b/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontExtensionsRegistryFactory.java new file mode 100644 index 000000000..e82f1eb53 --- /dev/null +++ b/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontExtensionsRegistryFactory.java @@ -0,0 +1,21 @@ +package com.griddynamics.jagger.util; + +import net.sf.jasperreports.engine.JRPropertiesMap; +import net.sf.jasperreports.engine.fonts.FontExtensionsRegistry; +import net.sf.jasperreports.extensions.ExtensionsRegistry; +import net.sf.jasperreports.extensions.ExtensionsRegistryFactory; + +import java.util.Collections; + +/** + * Created by Andrey Badaev + * Date: 11/01/17 + */ +public class SimpleFontExtensionsRegistryFactory implements ExtensionsRegistryFactory { + @Override + public ExtensionsRegistry createRegistry(String registryId, JRPropertiesMap properties) { + FontExtensionsRegistry fontExtensionsRegistry = new FontExtensionsRegistry(Collections.emptyList()); + fontExtensionsRegistry. + return null; + } +} diff --git a/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontFaceFactory.java b/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontFaceFactory.java new file mode 100644 index 000000000..881050316 --- /dev/null +++ b/chassis/core/src/main/java/com/griddynamics/jagger/util/SimpleFontFaceFactory.java @@ -0,0 +1,19 @@ +package com.griddynamics.jagger.util; + +import net.sf.jasperreports.engine.fonts.SimpleFontFace; +import org.springframework.core.io.Resource; + +import java.awt.*; +import java.io.IOException; + +/** + * Created by Andrey Badaev + * Date: 11/01/17 + */ +public class SimpleFontFaceFactory { + + public static SimpleFontFace newInstance(final Resource fontFile) + throws IOException, FontFormatException { + return new SimpleFontFace(Font.createFont(Font.TRUETYPE_FONT, fontFile.getFile())); + } +} diff --git a/chassis/core/src/main/resources/fonts.xml b/chassis/core/src/main/resources/fonts.xml index caa4b643c..3fd7c49d9 100644 --- a/chassis/core/src/main/resources/fonts.xml +++ b/chassis/core/src/main/resources/fonts.xml @@ -17,15 +17,19 @@ ~ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ~ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> - - - - - - - + http://www.springframework.org/schema/beans/spring-beans.xsd"> + + + + + + + + + + + diff --git a/chassis/core/src/main/resources/jasperreports-fonts.xml b/chassis/core/src/main/resources/jasperreports-fonts.xml new file mode 100644 index 000000000..a8060266d --- /dev/null +++ b/chassis/core/src/main/resources/jasperreports-fonts.xml @@ -0,0 +1,3 @@ + + + diff --git a/chassis/core/src/main/resources/jasperreports_extension.properties b/chassis/core/src/main/resources/jasperreports_extension.properties index 80d13f165..e804844aa 100644 --- a/chassis/core/src/main/resources/jasperreports_extension.properties +++ b/chassis/core/src/main/resources/jasperreports_extension.properties @@ -18,3 +18,4 @@ net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.extensions.SpringExtensionsRegistryFactory net.sf.jasperreports.extension.fonts.spring.beans.resource=fonts.xml +net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory diff --git a/dbapi/pom.xml b/dbapi/pom.xml index c482d908d..5f0a57346 100644 --- a/dbapi/pom.xml +++ b/dbapi/pom.xml @@ -10,6 +10,11 @@ dbapi + + org.slf4j + slf4j-log4j12 + + org.hibernate diff --git a/pom.xml b/pom.xml index 7fcf30e80..1d66d349b 100644 --- a/pom.xml +++ b/pom.xml @@ -263,7 +263,7 @@ net.sf.jasperreports jasperreports - 6.3.0 + 6.4.0